logo

Pogledi SQL

Pogled v SQL je shranjena poizvedba SQL, ki deluje kot navidezna tabela. Za razliko od navadnih tabel pogledi sami ne shranjujejo podatkov. Namesto tega dinamično ustvarijo podatke z izvajanjem poizvedbe SQL, definirane v pogledu, vsakič, ko se do nje dostopa.

Lahko pridobi podatke iz ene ali več tabel in jih predstavi v prilagojeni obliki, ki razvijalcem omogoča:

  • Poenostavite zapletene poizvedbe: Enkapsulirajte kompleksne spoje in pogoje v en sam objekt.
  • Izboljšajte varnost: Omejite dostop do določenih stolpcev ali vrstic.
  • Prilagodljivo predstavljanje podatkov: Zagotovite prilagojene poglede podatkov za različne uporabnike.

Za primere bomo uporabili ti dve tabeli SQL.



Podrobnosti študenta:

-- 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');

Izhod:

S_ID

Ime

Naslov

1

Hudo

Kolkata

2

Ashish

Durgapur

3

Vadite

Delhi

4

Dhanraj

Bihar

5

Ram

Rajasthan

Študentske ocene:

-- 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);

Izhod:

ID

Ime

Znamke

Starost

1

Hudo

90

19

2

Suresh

50

20

3

Vadite

80

19

4

Dhanraj

95

21

5

Ram

85

18

USTVARJANJE POGLEDOV v SQL

Pogled lahko ustvarimo s stavkom CREATE VIEW. Pogled je mogoče ustvariti iz ene tabele ali več tabel.

Sintaksa:

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

Ključni pojmi:

  • ime_pogleda : ime za pogled
  • ime_tabele : Ime tabele
  • stanje : Pogoj za izbiro vrstic

Primer 1: Ustvarjanje enostavnega pogleda iz ene tabele

Primer 1.1: V tem primeru bomo ustvarili pogled z imenom DetailsView iz tabele StudentDetails.

poizvedba:

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

Za pridobitev podatkov iz tega pogleda uporabite spodnjo poizvedbo

SELECT * FROM DetailsView;

Izhod: 

Ime

Naslov

Hudo

Kolkata

Ashish

Durgapur

Vadite

Delhi

Dhanraj

Bihar

Primer 1.2: Tukaj bomo ustvarili pogled z imenom StudentNames iz tabele StudentDetails.

poizvedba:

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

Če zdaj povprašamo po pogledu kot

    SELECT    *     FROM    StudentNames;

Izhod: 

S_ID

Ime

2

Ashish

4

Dhanraj

1

Hudo

3

Vadite

5

Ram

css spreminjanje velikosti slike

Primer 2: Ustvarjanje pogleda iz več tabel

V tem primeru bomo ustvarili View MarksView, ki združuje podatke iz obeh tabel StudentDetails in StudentMarks. Če želite ustvariti pogled iz več tabel, lahko preprosto vključimo več tabel v IZBERI izjava.

poizvedba:

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

Za prikaz podatkov View MarksView:

SELECT * FROM MarksView;

Izhod:

Ime

Naslov

Znamke

Hudo

Kolkata

90

Vadite

Delhi

80

Dhanraj

Bihar

95

Ram

Rajasthan

85

Upravljanje pogledov: posodabljanje in brisanje seznamov

1. Seznam vseh pogledov v zbirki podatkov

Vse poglede v zbirki podatkov lahko navedemo z uporabo izjave SHOW FULL TABLES ali s poizvedovanjem po tabelah information_schema.

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

Uporaba informacijske_sheme

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. Brisanje pogleda

SQL nam omogoča brisanje obstoječega pogleda. Mi lahko izbrisati ali spustite Pogled s stavkom DROP.

Sintaksa:

DROP VIEW view_name;

primer: V tem primeru brišemo View MarksView.

DROP VIEW MarksView;

3. Posodabljanje definicije pogleda

Če želimo posodobiti obstoječe podatke v pogledu, uporabimo  POSODOBITEV  izjava.

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

Če želite posodobiti definicijo pogleda, ne da bi to vplivalo na podatke, uporabite stavek CREATE OR REPLACE VIEW. Na primer, dodamoAgestolpec zaMarksView:

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

Opomba: Vseh pogledov ni mogoče posodobiti s stavkom UPDATE.

Pravila za posodobitev pogledov v SQL:

Za posodobitev pogleda morajo biti izpolnjeni nekateri pogoji. Če je kateri od teh pogojev ne met pogled ni mogoče posodobiti.

  1. Stavek SELECT, ki se uporablja za ustvarjanje pogleda, ne sme vsebovati klavzule GROUP BY oz NAROČI PO klavzula.
  2. Stavek SELECT ne sme imeti RAZLIČNA ključna beseda.
  3. Pogled mora imeti vse vrednosti NOT NULL.
  4. Pogled ne bi smel biti ustvarjen z uporabo ugnezdenih poizvedb ali kompleksnih poizvedb.
  5. Pogled je treba ustvariti iz ene same tabele. Če je pogled ustvarjen z uporabo več tabel, nam ne bo dovoljeno posodobiti pogleda.

Napredne tehnike s pogledi

1. Posodabljanje podatkov prek pogledov

Za dodajanje ali zamenjavo polj iz pogleda lahko uporabimo stavek CREATE OR REPLACE VIEW. Če želimo posodobiti pogled MarksView in temu pogledu dodati polje AGE iz tabele StudentMarks, lahko to storimo tako:

primer:

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

Če zdaj pridobimo vse podatke iz MarksView kot:

SELECT * FROM MarksView;

Izhod:

Ime

Naslov

Znamke

Starost

Hudo

Kolkata

90

19

Vadite

Delhi

80

19

Dhanraj

Bihar

95

21

Ram

Rajasthan

85

18

V Pogled lahko vstavimo vrstico na enak način kot v tabelo. Lahko uporabimo VSTAVITE V stavek SQL za vstavljanje vrstice v pogled. V spodnjem primeru bomo vstavili novo vrstico v View DetailsView, ki smo ga ustvarili zgoraj v primeru 'ustvarjanja pogledov iz ene tabele'.

primer:

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

Če zdaj pridobimo vse podatke iz DetailsView kot

SELECT * FROM DetailsView;

Izhod:

Ime

Naslov

Hudo

Kolkata

Ashish

koliko tipk imajo tipkovnice

Durgapur

Vadite

Delhi

Dhanraj

Bihar

Suresh

Gurgaon

3. Brisanje vrstice iz pogleda

Brisanje vrstic iz pogleda je prav tako preprosto kot brisanje vrstic iz tabele. Za brisanje vrstic iz pogleda lahko uporabimo stavek DELETE SQL. Tudi brisanje vrstice iz pogleda najprej izbriše vrstico iz dejanske tabele in sprememba se nato odraža v pogledu. V tem primeru bomo izbrisali zadnjo vrstico iz pogleda DetailsView, ki smo jo pravkar dodali v zgornjem primeru vstavljanja vrstic.

primer:

DELETE FROM DetailsView  
WHERE NAME='Suresh';

Če zdaj pridobimo vse podatke iz DetailsView kot

SELECT * FROM DetailsView;

Izhod: 

Ime

Naslov

Hudo

Kolkata

Ashish

Durgapur

Vadite

Delhi

Dhanraj

Bihar

4. S klavzulo CHECK OPTION

Klavzula WITH CHECK OPTION v SQL je zelo uporabna klavzula za poglede. Velja za pogled, ki ga je mogoče posodobiti. Uporablja se za preprečevanje spreminjanja podatkov (z uporabo INSERT ali UPDATE), če pogoj v klavzuli WHERE v stavku CREATE VIEW ni izpolnjen.

Če smo uporabili klavzulo WITH CHECK OPTION v stavku CREATE VIEW in če klavzula UPDATE ali INSERT ne izpolnjujeta pogojev, bosta vrnila napako. V spodnjem primeru ustvarjamo View SampleView iz tabele StudentDetails s klavzulo WITH CHECK OPTION.

primer:

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

Če v tem pogledu zdaj poskušamo v stolpec NAME vstaviti novo vrstico z ničelno vrednostjo, bo to povzročilo napako, ker je pogled ustvarjen s pogojem za stolpec NAME NOT NULL. Na primer, čeprav je pogled mogoče posodobiti, tudi spodnja poizvedba za ta pogled ni veljavna:

INSERT INTO SampleView(S_ID)  
VALUES(6);
Ustvari kviz