Una vista SQL è una tabella virtuale o un set di risultati generato dalla query SELECT. A differenza delle tabelle fisiche, le viste non memorizzano i dati in un database. Quando eseguiamo la query SELECT per popolare i dati, viene eseguita una query che crea la vista (definizione vista).
Cos'è View in MySQL
Si supponga di avere una query SQL complessa che utilizza più join e complesse logiche di business. Questa query viene utilizzata frequentemente nel codice dell'applicazione. Tuttavia, a causa dei requisiti aziendali, è necessario modificare la logica della query. Le modifiche apportate a una query devono riflettersi nell'intera applicazione.
In questi casi, è preferibile creare una vista SQL e incapsulare la logica aziendale al suo interno. Inoltre, quando desideriamo modificare la definizione della query, possiamo modificare la definizione della vista invece di apportare modifiche nell'applicazione.
Le viste si applicano anche per nascondere il nome effettivo e i dettagli della tabella. Se memorizziamo le informazioni sensibili di un cliente nella tabella e desideriamo mostrare solo i dettagli principali, possiamo creare una vista.
Questo articolo spiegherà il Crea vista , Sostituisci vista e Visualizzazione a discesa utilizzo delle istruzioni nel server MySQL.
Campione Banca dati Configurazione
Per la dimostrazione, ho installato MySQL Server e creato un database fittizio chiamato EltechDB . In quel database, ho creato una tabella denominata tblemployee .
La query seguente crea il EltechDB banca dati:
Create database EltechDB;
La query seguente crea un tblemployee tabella:
CREATE TABLE tblemployees (
emp_no INT NOT NULL,
birth_date DATE NOT NULL,
first_name VARCHAR(14) NOT NULL,
last_name VARCHAR(16) NOT NULL,
gender ENUM ('M','F') NOT NULL,
hire_date DATE NOT NULL,
PRIMARY KEY (emp_no)
);
Ho inserito alcuni record fittizi in tblemployee tabella utilizzando la seguente query:
INSERT INTO `EltechDB`.`tblemployees`
VALUES
(10001,'1953-09-02','Georgi','Facello','M','1986-06-26'),
(10002,'1964-06-02','Bezalel','Simmel','F','1985-11-21'),
(10003,'1959-12-03','Parto','Bamford','M','1986-08-28'),
(10004,'1954-05-01','Chirstian','Koblick','M','1986-12-01'),
(10005,'1955-01-21','Kyoichi','Maliniak','M','1989-09-12'),
(10006,'1953-04-20','Anneke','Preusig','F','1989-06-02'),
(10007,'1957-05-23','Tzvetan','Zielinski','F','1989-02-10'),
(10008,'1958-02-19','Saniya','Kalloufi','M','1994-09-15'),
(10009,'1952-04-19','Sumant','Peac','F','1985-02-18'),
(10010,'1963-06-01','Duangkaew','Piveteau','F','1989-08-24');
Ora, chiariamo le istruzioni per gestire le viste MySQL.
Come creare una vista in MySQL
L'istruzione Crea vista crea una nuova vista in un database. La sintassi è la seguente:
Create View view_name
As
Select * from base_table
Qui:
- view_name è il nome desiderato della vista.
- Il seleziona * da è la query che genera la vista utilizzando base_table . La query viene specificata dopo AS parola chiave.
Esempio di sintassi di creazione vista MySQL
Supponiamo di voler creare una vista che popola l'elenco dei dipendenti. La definizione della Vista è la seguente:
Create view vwEmployees
as
select * from tblemployees;
Per accedere ai dati della View, possiamo utilizzare la query SELECT. Per visualizzare i dati di vwEmployees , esegui la seguente query:
mysql> select * from vwEmployees;
Uscita:
Filtra i dati della vista utilizzando la clausola WHERE
Possiamo filtrare l'output di View usando la clausola WHERE. Nel nostro caso, vogliamo recuperare l'elenco di femmine dipendenti dai vwEmployees . La query è la seguente:
mysql> select * from vwEmployees where gender='F';
L'output della query è:
Facciamo un altro esempio. Vogliamo recuperare l'elenco dei dipendenti il cui numero di dipendenti è inferiore a 10005 . La query è la seguente:
mysql> select * from vwemployees where emp_no<10005;
Output della query:
Utilizzare la funzione di aggregazione nella vista
Possiamo usare le funzioni aggregate sulla vista.
Qui vogliamo popolare il conteggio dei dipendenti maschi e femmine dei vwEmployees Visualizzazione. Innanzitutto, utilizziamo la funzione COUNT per ottenere il conteggio dei dipendenti. Quindi, utilizziamo la clausola GROUP BY per raggruppare l'output in base alla colonna del genere. La query è la seguente:
mysql> select gender, count(emp_no)as 'Total Employees' from vwEmployees group by gender;
Output della query:
Utilizzare la funzione Data-Ora sulla vista
Possiamo usare la funzione data-ora sull'output Visualizza. Recuperiamo l'elenco dei dipendenti il cui anno di inserimento è maggiore o uguale al 1990. La query è la seguente:
mysql> select * from vwemployees where Year(hire_date)>=1990;
Output della query:
Utilizzare la funzione Control-Flow sulla vista
Possiamo usare la funzione CASE o IF sull'output della View.
Stampiamo il valore del genere in un formato significativo. L'output della colonna del sesso restituita dalla visualizzazione è M o F. Invece di stampare M, la query deve restituire Maschio . Allo stesso modo, invece della stampa F, la query deve restituire Femmina . La query è la seguente:
mysql> Select first_name, last_name, case when gender='M' then 'Male' when gender ='F' then 'Female' end as 'Gender', hire_date from vwEmployees;
Output della query:
Ulteriori informazioni su come creare una vista in SQL.
Sostituisci istruzione Visualizza
REPLACE VIEW viene utilizzato per modificare la definizione di una vista. Le parole chiave CREATE VIEW e REPLACE VIEW vengono utilizzate insieme. La sintassi è la seguente:
Create or replace View view_name
As
Select * from base_table
Qui:
- Crea o sostituisci vista: Queste parole chiave servono per creare o sostituire la vista esistente. Quando eseguiamo l'istruzione create o replace view, MySQL verifica se esiste nel database. Se la vista esiste, cambia la definizione della vista utilizzando la query specificata dopo la parola chiave AS. Se la vista non esiste, crea una nuova vista utilizzando la query specificata dopo la parola chiave AS.
- view_name è il nome desiderato della vista.
- Il seleziona * da è la query utilizzata per generare la vista utilizzando base_table . La query viene specificata dopo AS parola chiave.
Nota: Crea o sostituisci le parole chiave della vista crea una nuova vista o modifica la definizione della vista esistente.
Scrivi il nome della vista nel 'nome_database'.'nome_vista' formato . Se non specifichi il database, potresti finire per creare la vista in un database diverso.
Esempio di istruzioni MySQL CREATE View o MySQL REPLACE View
Vogliamo mostrare solo il nome, il cognome e il sesso dei dipendenti. Inoltre, vogliamo fornire nomi appropriati alle colonne. Ad esempio, il first_name e cognome i valori delle colonne devono essere combinati e il nome della colonna deve essere il nome del dipendente. La query SQL dovrebbe essere la seguente:
mysql> create or replace view vwEmployees(EmployeeName,gender) as select concat(first_name, " ",last_name),gender from tblEmployees;
Esegui la seguente query SELECT per visualizzare i dati da vwEmployees :
mysql> select * from vwEmployees
Output della query:
Come puoi vedere, il first_name e cognome i valori sono combinati in EmployeeName colonna che indica che la definizione della vista è stata aggiornata.
L'istruzione MySQL DROP View
La parola chiave DROP View serve per eliminare la vista dal database. La sintassi è la seguente:
Drop View ‘database_name’.’view_name’
Nella sintassi, view_name è il nome della vista che vuoi eliminare.
Lasciamo perdere i vwEmployees Visualizza utilizzando l'istruzione DROP View. Esegui la seguente query:
mysql> DROP VIEW `eltechdb`.`vwemployees`;
Per verificare che la vista sia stata eliminata, esegui la seguente query:
mysql> SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.tables WHERE TABLE_TYPE LIKE 'VIEW' and table_schema='EltechDB';
Uscita:
La query ha restituito zero righe indicando così che la vista è stata eliminata.
Riepilogo
Questo articolo ha spiegato e dimostrato le viste MySQL e le modalità di creazione e gestione di tali viste. Ha inoltre chiarito l'utilizzo delle istruzioni CREATE VIEW, REPLACE View e DROP View. CREATE View viene utilizzato per creare una vista, REPLACE View cambia la definizione della View e DROP View elimina la View.