Visualizzazioni in SQL sono una sorta di tavolo virtuale. Una vista ha anche righe e colonne come tabelle, ma una vista non memorizza i dati sul disco come una tabella. View definisce una query personalizzata che recupera i dati da una o più tabelle e rappresenta i dati come se provenissero da un'unica origine.
Possiamo creare una vista selezionando i campi da una o più tabelle presenti nel database. Una vista può avere tutte le righe di una tabella o righe specifiche in base a determinate condizioni.
In questo articolo impareremo come creare, aggiornare ed eliminare le visualizzazioni in SQL.
D database SQL emo
Useremo questi due tabelle SQL per esempio.
Dettagli studente

StudentMarks

Puoi creare queste tabelle sul tuo sistema scrivendo la seguente query SQL:
MySQL -- 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'); -- 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);>
CREA VISTE in SQL
Possiamo creare una vista utilizzando CREA VISTA dichiarazione. Una vista può essere creata da una singola tabella o da più tabelle.
Sintassi
CREATE VIEW view_name AS SELECT column1, column2..... FROM table_name WHERE condition;>
parametri:
- nome_vista : nome della vista
- nome_tabella : Nome della tabella
- condizione : condizione per selezionare le righe
Esempi di istruzioni SQL CREATE VIEW
Diamo un'occhiata ad alcuni esempi di istruzione CREATE VIEW in SQL per comprendere meglio come creare viste in SQL.
Esempio 1: creazione della vista da una singola tabella
In questo esempio creeremo una vista denominata DetailsView dalla tabella StudentDetails. Domanda:
CREATE VIEW DetailsView AS SELECT NAME, ADDRESS FROM StudentDetails WHERE S_ID <5;>
Per vedere i dati nella vista, possiamo interrogare la vista nello stesso modo in cui interroghiamo una tabella.
SELECT * FROM DetailsView;>
Produzione:

Esempio 2: Crea vista dalla tabella
In questo esempio creeremo una vista denominata StudentNames dalla tabella StudentDetails. Domanda:
CREATE VIEW StudentNames AS SELECT S_ID, NAME FROM StudentDetails ORDER BY NAME;>
Se ora interroghiamo la vista come,
SELECT * FROM StudentNames;>
Produzione:

Esempio 3: creazione di una vista da più tabelle
In questo esempio creeremo una vista denominata MarksView da due tabelle StudentDetails e StudentMarks. Per creare una vista da più tabelle possiamo semplicemente includere più tabelle nell'istruzione SELECT. Domanda:
CREATE VIEW MarksView AS SELECT StudentDetails.NAME, StudentDetails.ADDRESS, StudentMarks.MARKS FROM StudentDetails, StudentMarks WHERE StudentDetails.NAME = StudentMarks.NAME;>
Per visualizzare i dati di View MarksView:
SELECT * FROM MarksView;>
Produzione:

ELENCO DI TUTTE LE VISTE IN UN DATABASE
Possiamo elencare Visualizza utilizzando il file MOSTRA TABELLE COMPLETE dichiarazione o utilizzando il file tabella information_schema . Una vista può essere creata da una singola tabella o da più tabelle.
Sintassi
USE 'database_name'; SHOW FULL TABLES WHERE table_type LIKE '%VIEW';>
Utilizzando information_schema
jsp javatpoint
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';>
ELIMINA VISUALIZZAZIONI in SQL
SQL ci consente di eliminare una vista esistente. Possiamo eliminare o rilasciare Visualizza utilizzando il file Dichiarazione DROP .
Sintassi
DROP VIEW view_name;>
Esempio
In questo esempio, stiamo eliminando View MarksView.
DROP VIEW MarksView;>
AGGIORNA VISTA in SQL
Se desideri aggiornare i dati esistenti nella vista, utilizza il file AGGIORNAMENTO dichiarazione.
Sintassi
UPDATE view_name SET column1 = value1, column2 = value2...., columnN = valueN WHERE [condition];>
Nota: Non tutte le viste possono essere aggiornate utilizzando l'istruzione UPDATE.
Se desideri aggiornare la definizione della vista senza influire sui dati, utilizza il file CREA O SOSTITUISCI VISTA dichiarazione. puoi usare questa sintassi
CREATE OR REPLACE VIEW view_name AS SELECT column1, column2, ... FROM table_name WHERE condition;>
Regole per aggiornare le viste in SQL:
Per aggiornare una vista è necessario soddisfare alcune condizioni. Se una qualsiasi di queste condizioni è non soddisfatti, la vista non può essere aggiornata.
- L'istruzione SELECT utilizzata per creare la vista non deve includere la clausola GROUP BY o la clausola ORDER BY.
- L'istruzione SELECT non deve contenere la parola chiave DISTINCT.
- La vista dovrebbe avere tutti valori NOT NULL.
- La vista non deve essere creata utilizzando query nidificate o query complesse.
- La vista deve essere creata da una singola tabella. Se la vista viene creata utilizzando più tabelle, non ci sarà consentito aggiornare la vista.
Esempi
Diamo un'occhiata ai diversi casi d'uso per l'aggiornamento di una vista in SQL. Tratteremo questi casi d'uso con esempi per comprenderli meglio.
mappa iterativa Java
Esempio 1: Aggiorna vista per aggiungere o sostituire un campo vista
Possiamo usare il CREA O SOSTITUISCI VISTA istruzione per aggiungere o sostituire i campi da una vista.
Se vogliamo aggiornare la vista MarksView e aggiungi il campo AGE a questa vista da StudentMarks Tabella, possiamo farlo in questo modo:
CREATE OR REPLACE VIEW MarksView AS SELECT StudentDetails.NAME, StudentDetails.ADDRESS, StudentMarks.MARKS, StudentMarks.AGE FROM StudentDetails, StudentMarks WHERE StudentDetails.NAME = StudentMarks.NAME;>
Se recuperiamo tutti i dati da MarksView ora come:
SELECT * FROM MarksView;>
Produzione:

Esempio 2: Aggiorna vista per inserire una riga in una vista
Possiamo inserire una riga in una View nello stesso modo in cui lo facciamo in una tabella. Possiamo usare il INSERIRE istruzione SQL per inserire una riga in una vista.
Nell'esempio seguente, inseriremo una nuova riga nella View DetailsView che abbiamo creato sopra nell'esempio di creazione di viste da una singola tabella.
INSERT INTO DetailsView(NAME, ADDRESS) VALUES('Suresh','Gurgaon');>Se recuperiamo tutti i dati da DetailsView ora come,
SELECT * FROM DetailsView;>
Produzione:

Esempio 3: eliminazione di una riga da una vista
Anche eliminare righe da una vista è semplice come eliminare righe da una tabella. Possiamo usare l'istruzione DELETE di SQL per eliminare righe da una vista. Inoltre, l'eliminazione di una riga da una vista elimina prima la riga dalla tabella effettiva e la modifica si riflette quindi nella vista.
In questo esempio, elimineremo l'ultima riga dalla vista DetailsView che abbiamo appena aggiunto nell'esempio precedente di inserimento delle righe.
DELETE FROM DetailsView WHERE NAME='Suresh';>
Se recuperiamo tutti i dati da DetailsView ora come,
SELECT * FROM DetailsView;>
Produzione:

CON CHECK OPTION Clausola
IL CON OPZIONE DI VERIFICA La clausola in SQL è una clausola molto utile per le visualizzazioni. Si applica a una vista aggiornabile.
La clausola WITH CHECK OPTION viene utilizzata per impedire la modifica dei dati (utilizzando INSERT o UPDATE) se la condizione nella clausola WHERE nell'istruzione CREATE VIEW non è soddisfatta.
Se abbiamo utilizzato la clausola WITH CHECK OPTION nell'istruzione CREATE VIEW e se la clausola UPDATE o INSERT non soddisfa le condizioni, restituiranno un errore.
WITH CHECK OPTION Esempio di clausola:
Nell'esempio seguente, stiamo creando una View SampleView dalla tabella StudentDetails con una clausola WITH CHECK OPTION.
CREATE VIEW SampleView AS SELECT S_ID, NAME FROM StudentDetails WHERE NAME IS NOT NULL WITH CHECK OPTION ;>
In questa vista, se ora proviamo a inserire una nuova riga con un valore nullo nella colonna NOME, verrà generato un errore perché la vista viene creata con la condizione per la colonna NOME come NOT NULL. Ad esempio, sebbene la vista sia aggiornabile, anche la query seguente per questa vista non è valida:
INSERT INTO SampleView(S_ID) VALUES (6);>
NOTA : il valore predefinito della colonna NOME è nullo .
Usi di una vista
Un buon database dovrebbe contenere viste per i motivi indicati:
- Limitazione dell'accesso ai dati – Le visualizzazioni forniscono un ulteriore livello di sicurezza della tabella limitando l'accesso a un set predeterminato di righe e colonne di una tabella.
- Nascondere la complessità dei dati – Una vista può nascondere la complessità esistente in più tabelle unite.
- Semplifica i comandi per l'utente – Le visualizzazioni consentono all'utente di selezionare informazioni da più tabelle senza richiedere agli utenti di sapere effettivamente come eseguire un'unione.
- Memorizza query complesse – Le visualizzazioni possono essere utilizzate per archiviare query complesse.
- Rinomina colonne – Le viste possono anche essere utilizzate per rinominare le colonne senza influenzare le tabelle di base, a condizione che il numero di colonne visualizzate corrisponda al numero di colonne specificato in un'istruzione select. Pertanto, la ridenominazione aiuta a nascondere i nomi delle colonne delle tabelle di base.
- Funzione di visualizzazione multipla – È possibile creare viste diverse sulla stessa tabella per utenti diversi.
Punti chiave sulle visualizzazioni SQL
- Le viste in SQL sono una sorta di tabella virtuale.
- I campi in una vista possono provenire da una o più tabelle.
- Possiamo creare una vista utilizzando l'istruzione CREATE VIEW ed eliminare una vista utilizzando l'istruzione DROP VIEW.
- Possiamo aggiornare una vista utilizzando l'istruzione CREATE OR REPLACE VIEW.
- La clausola WITH CHECK OPTION viene utilizzata per impedire l'inserimento di nuove righe che non soddisfano la condizione di filtro della vista.