logo

SQL skati

Skats SQL ir saglabāts SQL vaicājums, kas darbojas kā virtuāla tabula. Atšķirībā no parastajām tabulām skati paši neuzglabā datus. Tā vietā tie dinamiski ģenerē datus, izpildot skatā definēto SQL vaicājumu katru reizi, kad tam tiek piekļūts.

Tas var iegūt datus no vienas vai vairākām tabulām un parādīt tos pielāgotā formātā, kas ļauj izstrādātājiem:

  • Sarežģītu vaicājumu vienkāršošana: Iekapsulējiet sarežģītus savienojumus un nosacījumus vienā objektā.
  • Uzlabojiet drošību: Ierobežojiet piekļuvi noteiktām kolonnām vai rindām.
  • Elastīgi prezentējiet datus: Nodrošiniet dažādiem lietotājiem pielāgotus datu skatus.

Mēs izmantosim šīs divas SQL tabulas kā piemērus.



Studentu informācija:

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

Izvade:

S_ID

Vārds

Adrese

1

Skarbi

Kolkata

2

Ashish

Durgapura

3

Prakse

Deli

4

Dhanraj

Bihar

5

Ram

Radžastāna

Studentu atzīmes:

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

Izvade:

ID

Vārds

Marks

Vecums

1

Skarbi

90

19

2

Suresh

50

20

3

Prakse

80

19

4

Dhanraj

95

21

5

Ram

85

18

IZVEIDOT SKATUS SQL

Mēs varam izveidot skatu, izmantojot CREATE VIEW priekšrakstu. Skatu var izveidot no vienas tabulas vai vairākām tabulām.

Sintakse:

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

Galvenie noteikumi:

  • skata_nosaukums : Skata nosaukums
  • tabulas_nosaukums : tabulas nosaukums
  • stāvokli : nosacījums, lai atlasītu rindas

1. piemērs: vienkārša skata izveide no vienas tabulas

1.1. piemērs: Šajā piemērā mēs izveidosim skatu ar nosaukumu DetailsView no tabulas StudentDetails.

Vaicājums:

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

Izmantojiet tālāk norādīto vaicājumu, lai izgūtu datus no šī skata

SELECT * FROM DetailsView;

Izvade: 

Vārds

Adrese

Skarbi

Kolkata

Ashish

Durgapura

Prakse

Deli

Dhanraj

Bihar

1.2. piemērs: Šeit mēs izveidosim skatu ar nosaukumu StudentNames no tabulas StudentDetails.

Vaicājums:

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

Ja tagad vaicāsim skatu kā

    SELECT    *     FROM    StudentNames;

Izvade: 

S_ID

Vārds

2

Ashish

4

Dhanraj

1

Skarbi

3

Prakse

5

Ram

java scan.nextstring

2. piemērs: Skata izveide no vairākām tabulām

Šajā piemērā mēs izveidosim View MarksView, kas apvieno datus no abām tabulām StudentDetails un StudentMarks. Lai izveidotu skatu no vairākām tabulām, mēs varam vienkārši iekļaut vairākas tabulas ATLASĪT paziņojums.

Vaicājums:

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

Lai parādītu View MarksView datus:

SELECT * FROM MarksView;

Izvade:

Vārds

Adrese

Marks

Skarbi

Kolkata

90

Prakse

Deli

80

Dhanraj

Bihar

95

Ram

Radžastāna

85

Skatu pārvaldība: saraksta atjaunināšana un dzēšana

1. Visu skatu uzskaitīšana datu bāzē

Mēs varam uzskaitīt visus skatus datu bāzē, izmantojot priekšrakstu SHOW FULL TABLES vai vaicājot tabulas information_schema.

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

Izmantojot informācijas_shēmu

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. Skata dzēšana

SQL ļauj dzēst esošu skatu. Mēs varam dzēst vai nometiet skatu, izmantojot DROP priekšrakstu.

Sintakse:

DROP VIEW view_name;

Piemērs: Šajā piemērā mēs dzēšam View MarksView.

DROP VIEW MarksView;

3. Skata definīcijas atjaunināšana

Ja vēlamies atjaunināt esošos datus skatā, izmantojiet  ATJAUNINĀT  paziņojums.

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

Ja vēlaties atjaunināt skata definīciju, neietekmējot datus, izmantojiet priekšrakstu CREATE OR REPLACE VIEW. Piemēram, pievienosimAgekolonnu uzMarksView:

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

Piezīme: Ne visus skatus var atjaunināt, izmantojot paziņojumu UPDATE.

Noteikumi skatu atjaunināšanai SQL:

Lai atjauninātu skatu, ir jāizpilda noteikti nosacījumi. Ja kāds no šiem nosacījumiem ir met skatu nevar atjaunināt.

  1. Skata izveidei izmantotajā priekšrakstā SELECT nedrīkst būt ietverta klauzula GROUP BY vai PASŪTĪT PĒC klauzula.
  2. SELECT priekšrakstā nedrīkst būt ATŠĶIRĪGI atslēgvārds.
  3. Skatā ir jābūt visām NOT NULL vērtībām.
  4. Skatu nedrīkst izveidot, izmantojot ligzdotus vaicājumus vai sarežģītus vaicājumus.
  5. Skats jāizveido no vienas tabulas. Ja skats ir izveidots, izmantojot vairākas tabulas, mēs nevarēsim atjaunināt skatu.

Uzlabotas metodes ar skatiem

1. Datu atjaunināšana, izmantojot skatus

Mēs varam izmantot priekšrakstu CREATE OR REPLACE VIEW, lai pievienotu vai aizstātu laukus no skata Ja mēs vēlamies atjaunināt skatu MarksView un pievienot lauku AGE šim skatam no StudentMarks tabulas, mēs to varam izdarīt šādi:

Piemērs:

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

Ja mēs tagad iegūsim visus datus no MarksView kā:

SELECT * FROM MarksView;

Izvade:

Vārds

Adrese

Marks

Vecums

Skarbi

Kolkata

90

19

Prakse

Deli

80

19

Dhanraj

Bihar

95

21

Ram

Radžastāna

85

18

Rindu skatā varam ievietot tāpat kā tabulā. Mēs varam izmantot INSERT INTO SQL priekšraksts, lai skatā ievietotu rindu. Tālāk esošajā piemērā mēs ievietosim jaunu rindu View DetailsView, ko esam izveidojuši iepriekš, piemēram, “skatu izveide no vienas tabulas”.

Piemērs:

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

Ja mēs iegūsim visus datus no DetailsView tagad kā

SELECT * FROM DetailsView;

Izvade:

Vārds

Adrese

Skarbi

Kolkata

Ashish

Durgapura

Prakse

Deli

Dhanraj

Bihar

Suresh

Gurgaons

3. Rindas dzēšana no skata

Rindu dzēšana no skata ir tikpat vienkārša kā rindu dzēšana no tabulas. Mēs varam izmantot SQL priekšrakstu DELETE, lai dzēstu rindas no skata. Dzēšot rindu no skata, vispirms tiek izdzēsta rinda no faktiskās tabulas, un pēc tam izmaiņas tiek atspoguļotas skatā. Šajā piemērā mēs izdzēsīsim pēdējo rindu no skata DetailsView, kuru tikko pievienojām iepriekš minētajā rindu ievietošanas piemērā.

Piemērs:

DELETE FROM DetailsView  
WHERE NAME='Suresh';

Ja mēs iegūsim visus datus no DetailsView tagad kā

SELECT * FROM DetailsView;

Izvade: 

Vārds

Adrese

Skarbi

Kolkata

arp komanda

Ashish

Durgapura

Prakse

Deli

Dhanraj

Bihar

4. AR PĀRBAUDES IESPĒJU klauzulu

WITH CHECK OPTION klauzula SQL ir ļoti noderīga skatiem. Tas attiecas uz atjaunināmu skatu. To izmanto, lai novērstu datu modifikāciju (izmantojot INSERT vai UPDATE), ja nosacījums WHERE klauzulā priekšrakstā CREATE VIEW nav izpildīts.

Ja priekšrakstā CREATE VIEW esam izmantojuši klauzulu WITH CHECK OPTION un ja klauzula UPDATE vai INSERT neatbilst nosacījumiem, tie atgriezīs kļūdu. Tālāk esošajā piemērā mēs izveidojam View SampleView no StudentDetails tabulas ar klauzulu WITH CHECK OPTION.

Piemērs:

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

Šajā skatā, ja mēs tagad mēģināsim ievietot jaunu rindu ar nulles vērtību kolonnā NAME, tiks parādīta kļūda, jo skats tiek izveidots ar nosacījumu kolonnai NOSAUKUMS kā NOT NULL. Piemēram, ja skats ir atjaunināms, arī tālāk norādītais vaicājums šim skatam nav derīgs:

INSERT INTO SampleView(S_ID)  
VALUES(6);
Izveidojiet viktorīnu