mysql create view tutorial with code examples
Questo tutorial MySQL Create View spiega tutto sulla creazione di una vista in MySQL utilizzando clausole ed esempi diversi. Illustra anche come eliminare e gestire le visualizzazioni:
In MySQL, la vista è una tabella virtuale che ci consente di dare un'occhiata ai dati nella tabella senza impedire l'accesso alla tabella da parte di altri programmi, aiutandoci così a evitare situazioni di deadlock.
Le visualizzazioni vengono create sopra una o più tabelle che contengono dati. Prima di procedere, tieni presente che stiamo utilizzando MySQL versione 8.0 .
Cosa imparerai:
MySQL Crea vista
Sintassi:
CREATE (REPLACE) VIEW view_name AS SELECT col1, col2, ... FROM table_name WHERE condition;
Spiegazione della sintassi:
- La sintassi inizia con la parola chiave “CREATE VIEW”, informando in tal modo il server MySQL sul tipo di attività da eseguire. Questa è una parola chiave obbligatoria e non può essere omessa.
- REPLACE è un parametro opzionale. Possiamo usarlo mentre stiamo lavorando su una vista esistente.
- Segue il nome della vista. Dovrebbe essere unico proprio come i nomi di tabelle e colonne.
- Quindi, seleziona le colonne dalla tabella. Una vista può avere tutte le colonne della tabella sottostante o solo alcune selezionate.
- Segue il nome della tabella su cui deve essere eseguita la visualizzazione. Questo è obbligatorio e non può essere omesso.
- Quindi arriva la condizione WHERE, che limita o filtra il numero di righe di destinazione su cui deve essere applicata l'azione CREATE VIEW. DOVE è anche una parola chiave, ma opzionale.
La clausola WHERE è, tuttavia, significativa. Se non viene menzionato, o se la condizione non è impostata correttamente, l'intera tabella o le righe non richieste faranno parte della vista.
Esempio di visualizzazione di creazione di MySQL
Di seguito è riportata una tabella di esempio creata in MYSQL.
Nome schema: Pacifico
Nome tabella: dipendenti
Nomi delle colonne:
empNum : Contiene valori interi per il numero del dipendente.
cognome : Contiene i valori varchar per il cognome del dipendente.
nome di battesimo : Contiene i valori varchar per il nome del dipendente.
e-mail : Contiene i valori varchar per l'ID e-mail del dipendente.
deptNum : Contiene varchar per l'ID reparto a cui appartiene un dipendente.
stipendio : Contiene i valori decimali dello stipendio per ogni dipendente.
data d'inizio : Contiene i valori di data per la data di adesione del dipendente.
Nome schema: Pacifico
Nome tabella: dipartimenti
Nomi delle colonne:
deptNum; Contiene varchar per l'ID reparto all'interno di un'organizzazione.
città: Contiene il nome della città da cui lavorano i dipartimenti.
nazione: Contiene il nome del paese corrispondente alla città.
bonus Contiene il valore percentuale del bonus.
MySQL Simple Crea una vista
Ora creiamo una vista sopra la tabella sopra.
Di seguito è riportata la query.
La clausola SELECT può essere con nomi di colonna specifici oppure possiamo usare '*', per ottenere tutte le colonne. Una volta che creiamo una vista, non possiamo aggiungere o eliminare le colonne. Se vogliamo aggiungere o eliminare colonne, dovremo creare una nuova vista o sostituire questa vista esistente.
L'istruzione di output mostra che le istruzioni SQL CREATE VIEW sono state eseguite correttamente. Dice anche che nessuna riga è stata interessata. Ciò implica che quando viene creata una nuova riga non influisce sui dati nella tabella sottostante.
Ora interroghiamo la vista.
Query:
CREATE VIEW employees_view AS SELECT empNum, lastName, firstName, email, deptNum, salary, start_date FROM employees ; SELECT empNum, firstName, lastName, email, deptNum, salary, start_date FROM employees_view ;
ResultSet:
empNum | cognome | nome di battesimo | deptNum | stipendio | data d'inizio | |
---|---|---|---|---|---|---|
1008 | Bailey | Oliver | oliver.bailey@gmail.com | 3 | 24494.4 | 0001-01-01 |
1001 | Andrews | Jack | ja@gmail.com | uno | 3182.7 | 0001-01-01 |
1002 | Schwatz | Mike | ms@gmail.com | uno | 5304.5 | 0001-01-01 |
1003 | Langley | Margaret | margaret.langley@gmail.com | Due | 8820 | 0001-01-01 |
1004 | Harera | Sandra | sh@gmail.com | uno | 10609 | 0001-01-01 |
1005 | leggere | Peter | pl@gmail.com | Due | 14332.5 | 0001-01-01 |
1006 | Keith | Jenny | jk@gmail.com | Due | 16537.5 | 0001-01-01 |
1009 | Tazza | Harry | hb@gmail.com | 5 | 30645.6 | 0001-01-01 |
1011 | Hanks | Tom | th@gmail.com | NULLO | 10100 | 0001-01-01 |
1012 | Lutero | Martin | ml@gmail.com | 3 | 13000 | 0001-01-01 |
1014 | Murray | Keith | km@gmail.com | uno | 25000 | 0001-01-01 |
1015 | Branson | John | jb@gmail.com | Due | 15000 | 0001-01-01 |
1016 | Martin | Richard | rm@gmail.com | 4 | 5000 | 0001-01-01 |
1017 | Johnson | vigilia | ej@gmail.com | 3 | 5500 | 2019-11-25 |
1018 | Legame | Nolan | nb@gmail.com | Due | 15000 | 2019-09-13 |
Crea vista utilizzando GROUP BY e ORDER BY
Supponiamo uno scenario in cui dobbiamo ottenere l'importo totale dello stipendio, a livello di dipartimento.
Di seguito è riportata la query:
Piuttosto che eseguire questa query nella tabella ogni volta, abbiamo bisogno delle informazioni, è meglio interrogare la vista poiché questo consumerà meno origini del database.
Ora, vediamo il contenuto della nostra vista. Scopriremo quanto ogni dipartimento sta inviando ai propri dipendenti in termini di stipendio.
Query:
CREATE VIEW salPerDept AS SELECT deptNum, sum(salary) FROM employees GROUP BY deptNum ORDER BY deptNum desc ; SELECT * FROM employees_view ;
Set di risultati:
deptNum | somma (stipendio) | |||||
---|---|---|---|---|---|---|
1006 | Keith | Jenny | Due | Carlotta | stati Uniti | 5 |
5 | 30645.6 | |||||
4 | 5000 | |||||
3 | 42994.4 | |||||
Due | 69690 | |||||
uno | 44096.2 | |||||
NULLO | 10100 |
Il NULL in deptNum indica che un dipendente non fa parte di alcun dipartimento ma è sui libri paga dell'organizzazione.
MySQL Crea vista usando JOIN
Supponiamo di voler ottenere dati sul dipartimento, sulla città in cui ha sede e sul bonus offerto ai suoi dipendenti. Abbiamo bisogno di queste informazioni per ogni dipendente.
Per ottenere ciò, utilizzeremo la parola chiave JOIN per ottenere i dati dalla tabella dei reparti e dei dipendenti.
Diamo un'occhiata alla query e al suo output.
Possiamo usare diversi tipi di JOIN qui, come INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN o FULL OUTER JOIN a seconda delle nostre esigenze.
Query:
CREATE VIEW join_view AS SELECT A.empNum, A.lastName, A.firstName, A.deptNum, B.city, B.country, B.bonus FROM employees A INNER JOIN departments B USING (deptNum) ; SELECT * FROM join_view ;
Eseguiamo ora una query SELECT su questa vista per vedere l'output:
Set di risultati:
empNum | cognome | nome di battesimo | deptNum | città | nazione | bonus |
---|---|---|---|---|---|---|
1001 | Andrews | Jack | uno | New York | stati Uniti | 3 |
1002 | Schwatz | Mike | uno | New York | stati Uniti | 3 |
1004 | Harera | Sandra | uno | New York | stati Uniti | 3 |
1014 | Murray | Keith | uno | New York | stati Uniti | 3 |
1003 | Langley | Margaret | Due | Carlotta | stati Uniti | 5 |
1005 | leggere | Peter | Due | Carlotta | stati Uniti | 5 |
1015 | Branson | John | Due | Carlotta | stati Uniti | 5 |
1018 | Legame | Nolan | Due | Carlotta | stati Uniti | 5 |
1008 | Bailey | Oliver | 3 | Chicago | stati Uniti | 8 |
1012 | Lutero | Martin | 3 | Chicago | stati Uniti | 8 |
1017 | Johnson | vigilia | 3 | Chicago | stati Uniti | 8 |
1016 | Martin | Richard | 4 | Londra | Inghilterra | 10 |
1009 | Tazza | Harry | 5 | Berlino | Germania | 13 |
Crea vista usando una sottoquery
In questo tipo di istruzione create view, proviamo a recuperare il valore di una colonna in cui la clausola si basa sull'output di una sottoquery. Diciamo, dobbiamo trovare tutti quei dipendenti il cui stipendio è superiore allo stipendio medio dell'organizzazione.
Vediamo la query:
Query:
CREATE VIEW avgSal_view AS SELECT empNum, lastName, firstName, salary FROM employees WHERE salary > ( SELECT avg(salary) FROM employees ) ; SELECT * FROM avgSal_view ;
Set di risultati:
empNum | cognome | nome di battesimo | stipendio |
---|---|---|---|
1018 | Legame | Nolan | 15000 |
1005 | leggere | Peter | 14332.5 |
1006 | Keith | Jenny | 16537.5 |
1008 | Bailey | Oliver | 24494.4 |
1009 | Tazza | Harry | 30645.6 |
1014 | Murray | Keith | 25000 |
1015 | Branson | John | 15000 |
Gestione delle viste
Usando Alter View o Create / Replace view possiamo modificare / sostituire qualsiasi vista. L'uso esplicito di ALTER VIEW per ricompilare una vista non è valido.
Se si dispone dei privilegi di sistema ALTER ANY Table o se la vista è nello schema, è possibile utilizzare l'istruzione ALTER VIEW.
download gratuito di convertitore da youtube a wav
Utilizzando la query Alter View, possiamo individuare gli errori di ricompilazione prima del runtime. L'utilizzo dell'istruzione ALTER VIEW può influire sull'altro oggetto / vista che dipende da esso. Quindi, possiamo ricompilare una vista dopo averla modificata.
È possibile ridefinire una vista utilizzando Crea vista e sostituire la vista esistente con la query Sostituisci vista.
Per esempio, considera dipendenti_view. Qui abbiamo le colonne lastName e firstName insieme ad alcune altre. Considera che abbiamo un requisito per unire le colonne firstName e lastName.
Di seguito è riportata l'istantanea della vista prima di eseguire la query ALTER.
Ora eseguiamo la query ALTER VIEW per unire firstName e lastName.
La query è fornita di seguito:
Query:
ALTER VIEW employees_view AS SELECT empNum, CONCAT(firstName, ' ', lastName) AS empName, email, deptNum, salary, start_date FROM employees ;
Vediamo ora il contenuto di dipendenti_view:
Se puoi notare, non abbiamo due colonne separate per i nomi. Invece, abbiamo solo una colonna che ha sia il nome che il cognome concatenati.
Ulteriori informazioni = >> Funzione MySQL CONCAT
Query:
SELECT * FROM employees_view;
Set di risultati:
empNum | empName | deptNum | stipendio | data d'inizio | |
---|---|---|---|---|---|
1008 | Oliver Bailey | oliver.bailey@gmail.com | 3 | 24494 | 0001-01-01 |
1001 | Jack Andrews | ja@gmail.com | uno | 3182.7 | 0001-01-01 |
1002 | Mike Schwatz | ms@gmail.com | uno | 5304.5 | 0001-01-01 |
1003 | Margaret Langley | margaret.langley@gmail.com | Due | 8820 | 0001-01-01 |
1004 | Sandra harera | sh@gmail.com | uno | 10609 | 0001-01-01 |
1005 | Peter Lee | pl@gmail.com | Due | 14333 | 0001-01-01 |
1006 | Jenny Keith | jk@gmail.com | Due | 16538 | 0001-01-01 |
1009 | Harry Beaker | hb@gmail.com | 5 | 30646 | 0001-01-01 |
1011 | Tom Hanks | th@gmail.com | 10100 | 0001-01-01 | |
1012 | Martin Lutero | ml@gmail.com | 3 | 13000 | 0001-01-01 |
1014 | Keith Murray | km@gmail.com | uno | 25000 | 0001-01-01 |
1015 | John Branson | jb@gmail.com | Due | 15000 | 0001-01-01 |
1016 | Richard Martin | rm@gmail.com | 4 | 5000 | 0001-01-01 |
1017 | Eve Johnson | ej@gmail.com | 3 | 5500 | 2019-11-25 |
1018 | Nolan Bond | nb@gmail.com | Due | 15000 | 2019-09-13 |
Caduta di una vista
Possiamo eliminare una vista utilizzando l'istruzione DROP VIEW. Si può utilizzare DROP VIEW se hanno DROP ANY view privilege, altrimenti dovrebbe essere nel loro schema. La visualizzazione pendente non influisce sulla tabella sottostante su cui è stata creata la visualizzazione o sui dati in quella tabella.
Query:
DROP VIEW (view name);
Domande frequenti
D # 1) Come creare viste in MySQL?
Risposta: Esistono diversi modi per creare visualizzazioni in MySQL. Abbiamo seguito quattro modi diversi come mostrato di seguito.
1. MySQL semplice creare una vista
2. MySQL Crea vista utilizzando GROUP BY e ORDER BY
3. MySQL Crea vista usando JOIN
4. MySQL Crea vista utilizzando la sottoquery
Q # 2) Cos'è una vista in MySQL?
Risposta: Le visualizzazioni sono come query pre-eseguite archiviate in una struttura logica in modo da non dover rieseguire le query complesse sulla tabella. Possiamo semplicemente interrogare la vista e ottenere i nostri dati senza influire sulla tabella.
Q # 3) Possiamo applicare JOIN alle viste durante la creazione delle viste?
Risposta: Sì, le istruzioni JOIN potrebbero essere utilizzate sulle viste, in un modo simile in cui le usiamo sulle tabelle.
Q # 4) Possiamo creare una vista da un'altra vista?
Risposta: Le viste agiscono essenzialmente come tabelle, ma come virtuali. Quindi, nel modo in cui creiamo le viste sopra una tabella, possiamo creare viste in modo simile sopra un'altra vista.
Q # 5) Perché usiamo le visualizzazioni?
Risposta: Come risultato della query SQL, la vista crea una tabella logica. Usiamo le viste per i seguenti motivi.
- Usando view, possiamo limitare la visibilità di righe e colonne (usando la clausola Select e Where) per le attività rilevanti.
- Le viste vengono utilizzate quando combiniamo righe e colonne (utilizzando Unione e Join) da più tabelle.
- Per ottenere una presentazione più distinta dell'aggregazione delle righe (utilizzando Raggruppa per e Avere) in una tabella con dettagli più fini.
- Le viste vengono utilizzate durante la ridenominazione o la decodifica di una colonna (utilizzando AS) o di righe (utilizzando JOIN, IF, CASE o DECODE di Oracle).
- Combinando uno qualsiasi dei precedenti con le impostazioni di sicurezza, possiamo verificare se l'utente ha accesso solo a ciò per cui è autorizzato.
Conclusione
In questo tutorial, abbiamo esplorato i diversi modi di creare una vista in MySQL.
1. MySQL semplice creare una vista
2. MySQL Crea vista utilizzando GROUP BY e ORDER BY
3. MySQL Crea vista usando JOIN
4. MySQL Crea vista utilizzando la sottoquery
Possiamo scegliere una di queste opzioni a seconda dei requisiti del progetto.
Ulteriore lettura = >> MySQL CREATE TABLE
Buon apprendimento !!
Lettura consigliata
- MySQL ALTER TABLE - Come aggiungere una colonna a una tabella in MySQL
- Funzioni MySQL CONCAT e GROUP_CONCAT con esempi
- MySQL COUNT e COUNT DISTINCT con esempi
- MySQL Create Database - Come creare un database in MySQL
- MySQL CREATE USER: Come creare un nuovo utente in MySQL
- Tutorial MySQL Create View con esempi di codice
- Clausola MySQL GROUP BY - Tutorial con esempi
- MySQL JOIN Tutorial: Inner, Outer, Cross, Left, Right e Self