logo

SQL-näkymät

SQL-näkymä on tallennettu SQL-kysely, joka toimii virtuaalisena taulukkona. Toisin kuin tavalliset taulukot, näkymät eivät tallenna tietoja itse. Sen sijaan ne luovat dynaamisesti tietoja suorittamalla näkymässä määritellyn SQL-kyselyn joka kerta, kun sitä käytetään.

Se voi hakea tietoja yhdestä tai useammasta taulukosta ja esittää ne mukautetussa muodossa, jolloin kehittäjät voivat:

  • Yksinkertaista monimutkaisia ​​kyselyitä: Kapseloi monimutkaiset liitokset ja ehdot yhdeksi objektiksi.
  • Paranna turvallisuutta: Rajoita pääsyä tiettyihin sarakkeisiin tai riveihin.
  • Esitä tiedot joustavasti: Tarjoa räätälöityjä datanäkymiä eri käyttäjille.

Käytämme näitä kahta SQL-taulukkoa esimerkkeinä.



Opiskelijatiedot:

-- Create StudentDetails table  
CREATE TABLE StudentDetails (
S_ID INT PRIMARY KEY
NAME VARCHAR(255)
ADDRESS VARCHAR(255)
);

INSERT INTO StudentDetails (S_ID NAME ADDRESS)
VALUES
(1 'Harsh' 'Kolkata')
(2 'Ashish' 'Durgapur')
(3 'Pratik' 'Delhi')
(4 'Dhanraj' 'Bihar')
(5 'Ram' 'Rajasthan');

Lähtö:

S_ID

Nimi

Osoite

1

Kovaa

Kolkata

2

Ashish

Durgapur

3

Harjoitella

Delhi

4

Dhanraj

Bihar

5

Ram

Rajasthan

Opiskelijamerkit:

-- Create StudentMarks table  
CREATE TABLE StudentMarks (
ID INT PRIMARY KEY
NAME VARCHAR(255)
Marks INT
Age INT
);

INSERT INTO StudentMarks (ID NAME Marks Age)
VALUES
(1 'Harsh' 90 19)
(2 'Suresh' 50 20)
(3 'Pratik' 80 19)
(4 'Dhanraj' 95 21)
(5 'Ram' 85 18);

Lähtö:

ID

Nimi

Marks

Ikä

1

Kovaa

90

19

2

Suresh

50

20

3

Harjoitella

80

19

4

Dhanraj

95

21

5

Ram

85

18

LUO NÄKYMÄT SQL:ssä

Voimme luoda näkymän käyttämällä CREATE VIEW -käskyä. Näkymä voidaan luoda yhdestä taulukosta tai useista taulukoista.

Syntaksi:

CREATE VIEW view_name AS  
SELECT column1 column2.....
FROM table_name
WHERE condition;

Tärkeimmät ehdot:

  • näkymän_nimi : Näkymän nimi
  • taulukon_nimi : Taulukon nimi
  • kunto : Rivien valinnan ehto

Esimerkki 1: Yksinkertaisen näkymän luominen yhdestä taulukosta

Esimerkki 1.1: Tässä esimerkissä luomme näkymän nimeltä DetailsView taulukosta StudentDetails.

Kysely:

CREATE VIEW DetailsView AS  
SELECT NAME ADDRESS
FROM StudentDetails
WHERE S_ID < 5;

Käytä alla olevaa kyselyä hakeaksesi tiedot tästä näkymästä

SELECT * FROM DetailsView;

Lähtö: 

Nimi

Osoite

Kovaa

Kolkata

Ashish

Durgapur

Harjoitella

Delhi

Dhanraj

Bihar

Esimerkki 1.2: Tässä luodaan StudentNames-niminen näkymä StudentDetails-taulukosta.

Kysely:

CREATE VIEW StudentNames AS  
SELECT S_ID NAME
FROM StudentDetails
ORDER BY NAME;

Jos nyt kysytään näkymää muodossa

    SELECT    *     FROM    StudentNames;

Lähtö: 

S_ID

Nimi

2

Ashish

4

Dhanraj

1

Kovaa

3

Harjoitella

5

Ram

java sopimusten nimeäminen

Esimerkki 2: Näkymän luominen useista taulukoista

Tässä esimerkissä luomme View MarksView -näkymän, joka yhdistää tiedot molemmista StudentDetails- ja StudentMarks-taulukoista. Jos haluat luoda näkymän useista taulukoista, voimme yksinkertaisesti sisällyttää useita taulukoita VALITSE lausunto.

Kysely:

CREATE VIEW MarksView AS  
SELECT StudentDetails.NAME StudentDetails.ADDRESS StudentMarks.MARKS
FROM StudentDetails StudentMarks
WHERE StudentDetails.NAME = StudentMarks.NAME;

Näytä MarksView-näkymän tiedot:

SELECT * FROM MarksView;

Lähtö:

Nimi

Osoite

Marks

Kovaa

Kolkata

90

Harjoitella

Delhi

80

Dhanraj

Bihar

95

Ram

Rajasthan

85

Näkymien hallinta: Tietojen päivittäminen ja poistaminen

1. Tietokannan kaikkien näkymien luettelointi

Voimme listata kaikki tietokannan näkymät käyttämällä SHOW FULL TABLES -käskyä tai kyselemällä information_schema-taulukoita.

USE 'database_name';  
SHOW FULL TABLES WHERE table_type LIKE '%VIEW';

Tietojen_skeeman käyttö

SELECT table_name  
FROM information_schema.views
WHERE table_schema = 'database_name';

OR

SELECT table_schema table_name view_definition
FROM information_schema.views
WHERE table_schema = 'database_name';

2. Näkymän poistaminen

SQL mahdollistaa olemassa olevan näkymän poistamisen. Voimme poistaa tai pudota Näytä DROP-käskyn avulla.

Syntaksi:

DROP VIEW view_name;

Esimerkki: Tässä esimerkissä poistamme View MarksView -näkymän.

DROP VIEW MarksView;

3. Näkymän määritelmän päivittäminen

Jos haluamme päivittää näkymän olemassa olevat tiedot, käytä  PÄIVITTÄÄ  lausunto.

UPDATE view_name  
SET column1 = value1 column2 = value2.... columnN = valueN
WHERE [condition];

Jos haluat päivittää näkymän määritelmän vaikuttamatta tietoihin, käytä CREATE OR REPLACE VIEW -käskyä. Lisätään esimerkiksiAgesarakkeeseenMarksView:

CREATE OR REPLACE VIEW view_name AS  
SELECT column1 column2 ...
FROM table_name
WHERE condition;

Huomautus: Kaikkia näkymiä ei voi päivittää UPDATE-käskyn avulla.

Säännöt näkymien päivittämiseen SQL:ssä:

Tiettyjen ehtojen on täytyttävä näkymän päivittämiseksi. Jos jokin näistä ehdoista on ei täyttyi näkymää ei voi päivittää.

  1. Näkymän luomiseen käytettävä SELECT-käsky ei saa sisältää GROUP BY -lausetta tai TILAA lauseke.
  2. SELECT-lauseessa ei pitäisi olla ERITTÄVÄ avainsana.
  3. Näkymässä tulee olla kaikki NOT NULL -arvot.
  4. Näkymää ei saa luoda käyttämällä sisäkkäisiä tai monimutkaisia ​​kyselyitä.
  5. Näkymä tulee luoda yhdestä taulukosta. Jos näkymä luodaan käyttämällä useita taulukoita, emme saa päivittää näkymää.

Kehittyneet tekniikat näkymin

1. Tietojen päivittäminen näkymien kautta

Voimme käyttää CREATE OR REPLACE VIEW -käskyä lisätäksesi tai korvataksemme kenttiä näkymästä. Jos haluamme päivittää MarksView-näkymän ja lisätä kentän AGE tähän näkymään StudentMarks-taulukosta, voimme tehdä tämän seuraavasti:

Esimerkki:

CREATE OR REPLACE VIEW MarksView AS  
SELECT StudentDetails.NAME StudentDetails.ADDRESS StudentMarks.MARKS StudentMarks.AGE
FROM StudentDetails StudentMarks
WHERE StudentDetails.NAME = StudentMarks.NAME;

Jos haemme kaikki tiedot MarksView'sta nyt seuraavasti:

SELECT * FROM MarksView;

Lähtö:

Nimi

Osoite

Marks

Ikä

Kovaa

Kolkata

90

19

Harjoitella

Delhi

80

19

Dhanraj

Bihar

95

21

Ram

Rajasthan

85

18

Voimme lisätä rivin näkymään samalla tavalla kuin taulukkoon. Voimme käyttää INSERT INTO SQL-käsky lisätäksesi rivin näkymään. Alla olevassa esimerkissä lisäämme uuden rivin View DetailsView -näkymään, jonka loimme edellä esimerkissä "Näkymien luominen yhdestä taulukosta".

Esimerkki:

INSERT INTO DetailsView(NAME ADDRESS)  
VALUES('Suresh''Gurgaon');

Jos haemme kaikki tiedot DetailsView'sta nyt nimellä

usa kaupungin nimi
SELECT * FROM DetailsView;

Lähtö:

Nimi

Osoite

Kovaa

Kolkata

Ashish

Durgapur

Harjoitella

Delhi

Dhanraj

Bihar

Suresh

Gurgaon

3. Rivin poistaminen näkymästä

Rivien poistaminen näkymästä on myös yhtä helppoa kuin rivien poistaminen taulukosta. Voimme käyttää SQL:n DELETE-käskyä rivien poistamiseen näkymästä. Myös rivin poistaminen näkymästä poistaa ensin rivin varsinaisesta taulukosta ja muutos näkyy sitten näkymässä. Tässä esimerkissä poistamme viimeisen rivin DetailsView-näkymästä, jonka juuri lisäsimme yllä olevaan rivien lisäämisen esimerkkiin.

Esimerkki:

DELETE FROM DetailsView  
WHERE NAME='Suresh';

Jos haemme kaikki tiedot DetailsView'sta nyt nimellä

SELECT * FROM DetailsView;

Lähtö: 

Nimi

Osoite

Kovaa

Kolkata

Ashish

Durgapur

Harjoitella

Delhi

Dhanraj

Bihar

4. CHECK OPTION -lausekkeella

SQL:n WITH CHECK OPTION -lause on erittäin hyödyllinen lauseke näkymille. Se koskee päivitettävää näkymää. Sitä käytetään estämään tietojen muuttaminen (käyttäen INSERT tai UPDATE), jos CREATE VIEW -käskyn WHERE-lauseen ehto ei täyty.

Jos olemme käyttäneet WITH CHECK OPTION -lausetta CREATE VIEW -käskyssä ja jos UPDATE- tai INSERT-lause ei täytä ehtoja, ne palauttavat virheilmoituksen. Alla olevassa esimerkissä luomme View SampleView -näkymän StudentDetails-taulukosta, jossa on WITH CHECK OPTION -lause.

Esimerkki:

CREATE VIEW SampleView AS  
SELECT S_ID NAME
FROM StudentDetails
WHERE NAME IS NOT NULL
WITH CHECK OPTION;

Jos yritämme tässä näkymässä nyt lisätä uuden rivin nolla-arvolla NIMI-sarakkeeseen, se antaa virheen, koska näkymä luodaan NIMI-sarakkeen ehdolla NOT NULL. Esimerkiksi vaikka näkymä on päivitettävissä, myös alla oleva kysely tälle näkymälle ei ole kelvollinen:

INSERT INTO SampleView(S_ID)  
VALUES(6);
Luo tietokilpailu