logo

SQL prikazi

Pogled u SQL-u je spremljeni SQL upit koji djeluje kao virtualna tablica. Za razliku od običnih tablica, pogledi sami ne pohranjuju podatke. Umjesto toga, oni dinamički generiraju podatke izvršavanjem SQL upita definiranog u prikazu svaki put kada mu se pristupi.

Može dohvatiti podatke iz jedne ili više tablica i predstaviti ih u prilagođenom formatu omogućujući programerima da:

  • Pojednostavite složene upite: Enkapsulirajte složene spojeve i uvjete u jedan objekt.
  • Poboljšajte sigurnost: Ograničite pristup na određene stupce ili retke.
  • Fleksibilno prezentirajte podatke: Osigurajte prilagođene prikaze podataka za različite korisnike.

Za primjere ćemo koristiti ove dvije SQL tablice.



Podaci o studentu:

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

Izlaz:

S_ID

Ime

Adresa

1

Oštro

Kolkata

2

Pepeljast

Durgapur

3

Praksa

Delhi

4

Dhanraj

Bihar

5

Ovan

Rajasthan

Ocjene učenika:

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

Izlaz:

ID

Ime

Oznake

Dob

1

Oštro

90

19

2

Suresh

50

20

3

Praksa

80

19

4

Dhanraj

95

21

5

Ovan

85

18

STVARAJTE PRIKAZE u SQL-u

Pogled možemo kreirati pomoću naredbe CREATE VIEW. Prikaz se može stvoriti iz jedne tablice ili više tablica.

Sintaksa:

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

Ključni pojmovi:

  • naziv_pogleda : naziv za pogled
  • naziv_tablice : naziv tablice
  • stanje : Uvjet za odabir redaka

Primjer 1: Stvaranje jednostavnog prikaza iz jedne tablice

Primjer 1.1: U ovom primjeru stvorit ćemo pogled pod nazivom DetailsView iz tablice StudentDetails.

Upit:

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

Upotrijebite upit u nastavku da biste dohvatili podatke iz ovog prikaza

SELECT * FROM DetailsView;

Izlaz: 

Ime

Adresa

Oštro

Kolkata

Pepeljast

Durgapur

Praksa

Delhi

Dhanraj

Bihar

Primjer 1.2: Ovdje ćemo stvoriti pogled pod nazivom StudentNames iz tablice StudentDetails.

Upit:

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

Ako sada upitamo pogled kao

    SELECT    *     FROM    StudentNames;

Izlaz: 

S_ID

Ime

2

Pepeljast

4

Dhanraj

1

Oštro

3

Praksa

5

Ovan

brzina prijenosa u arduinu

Primjer 2: Stvaranje prikaza iz više tablica

U ovom primjeru stvorit ćemo View MarksView koji kombinira podatke iz obje tablice StudentDetails i StudentMarks. Za izradu prikaza iz više tablica možemo jednostavno uključiti više tablica u ODABERI izjava.

Upit:

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

Za prikaz podataka View MarksView:

SELECT * FROM MarksView;

Izlaz:

Ime

Adresa

Oznake

Oštro

Kolkata

90

Praksa

Delhi

80

Dhanraj

Bihar

95

Ovan

Rajasthan

85

Upravljanje prikazima: Ažuriranje i brisanje popisa

1. Ispisivanje svih prikaza u bazi podataka

Možemo ispisati sve poglede u bazi podataka pomoću naredbe SHOW FULL TABLES ili postavljanjem upita tablicama information_schema.

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

Korištenje sheme_informacija

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 prikaza

SQL nam omogućuje brisanje postojećeg prikaza. možemo izbrisati ili ispustite View pomoću naredbe DROP.

Sintaksa:

DROP VIEW view_name;

Primjer: U ovom primjeru brišemo View MarksView.

DROP VIEW MarksView;

3. Ažuriranje definicije pogleda

Ako želimo ažurirati postojeće podatke unutar prikaza, upotrijebimo  AŽURIRATI  izjava.

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

Ako želite ažurirati definiciju pogleda bez utjecaja na podatke koristite naredbu CREATE OR REPLACE VIEW. Na primjer, dodajmoAgestupac naMarksView:

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

Bilješka: Ne mogu se svi pogledi ažurirati pomoću izjave UPDATE.

Pravila za ažuriranje prikaza u SQL-u:

Za ažuriranje pogleda moraju biti zadovoljeni određeni uvjeti. Ako bilo koji od ovih uvjeta jest ne met pogled ne može se ažurirati.

  1. Izjava SELECT koja se koristi za stvaranje prikaza ne bi trebala uključivati ​​klauzulu GROUP BY ili NARUČI PO klauzula.
  2. Naredba SELECT ne bi trebala imati DISTINKTAN ključna riječ.
  3. Pogled bi trebao imati sve NOT NULL vrijednosti.
  4. Prikaz se ne bi trebao stvarati pomoću ugniježđenih upita ili složenih upita.
  5. Prikaz treba izraditi iz jedne tablice. Ako je prikaz stvoren korištenjem više tablica, tada nam neće biti dopušteno ažurirati prikaz.

Napredne tehnike s prikazima

1. Ažuriranje podataka putem prikaza

Možemo upotrijebiti naredbu CREATE OR REPLACE VIEW za dodavanje ili zamjenu polja iz pogleda. Ako želimo ažurirati pogled MarksView i dodati polje AGE ovom prikazu iz StudentMarks tablice, to možemo učiniti na sljedeći način:

Primjer:

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

Ako sada dohvatimo sve podatke iz MarksViewa kao:

SELECT * FROM MarksView;

Izlaz:

Ime

Adresa

Oznake

Dob

Oštro

Kolkata

90

19

Praksa

Delhi

80

19

Dhanraj

Bihar

95

21

Ovan

Rajasthan

85

18

Možemo umetnuti red u View na isti način kao što to radimo u tablici. Možemo koristiti UMETNI U izraz SQL za umetanje retka u prikaz. U donjem primjeru umetnut ćemo novi redak u View DetailsView koji smo stvorili iznad u primjeru 'stvaranje pogleda iz jedne tablice'.

Primjer:

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

Ako sada dohvatimo sve podatke iz DetailsView kao

SELECT * FROM DetailsView;

Izlaz:

Ime

Adresa

Oštro

Kolkata

Pepeljast

Durgapur

Praksa

Delhi

Dhanraj

Bihar

Suresh

Gurgaon

3. Brisanje retka iz prikaza

Brisanje redaka iz prikaza također je jednostavno kao brisanje redaka iz tablice. Možemo koristiti naredbu DELETE SQL-a za brisanje redaka iz prikaza. Isto tako, brisanje retka iz prikaza najprije briše redak iz stvarne tablice, a promjena se zatim odražava u prikazu. U ovom primjeru ćemo izbrisati zadnji red iz prikaza DetailsView koji smo upravo dodali u gornjem primjeru umetanja redaka.

Primjer:

što je računalo
DELETE FROM DetailsView  
WHERE NAME='Suresh';

Ako sada dohvatimo sve podatke iz DetailsView kao

SELECT * FROM DetailsView;

Izlaz: 

Ime

Adresa

Oštro

Kolkata

Pepeljast

Durgapur

Praksa

Delhi

Dhanraj

Bihar

4. S CHECK OPCIJOM klauzulom

Klauzula WITH CHECK OPTION u SQL-u vrlo je korisna klauzula za poglede. Primjenjuje se na prikaz koji se može ažurirati. Koristi se za sprječavanje modifikacije podataka (koristeći INSERT ili UPDATE) ako uvjet u klauzuli WHERE u naredbi CREATE VIEW nije zadovoljen.

Ako smo upotrijebili klauzulu WITH CHECK OPTION u naredbi CREATE VIEW i ako klauzula UPDATE ili INSERT ne zadovoljava uvjete, vratit će pogrešku. U donjem primjeru stvaramo View SampleView iz tablice StudentDetails s klauzulom WITH CHECK OPTION.

Primjer:

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

U ovom prikazu, ako sada pokušamo umetnuti novi redak s null vrijednošću u stupac NAME, to će dati pogrešku jer je pogled stvoren s uvjetom za stupac NAME kao NOT NULL. Na primjer, iako se pogled može ažurirati, ni upit u nastavku za ovaj prikaz nije valjan:

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