Cosa sono le viste in MySQL?
Le VISUALIZZAZIONI sono tabelle virtuali che non memorizzano dati propri ma visualizzano i dati archiviati in altre tabelle. In altre parole, le VISUALIZZAZIONI non sono altro che query SQL. Una vista può contenere tutte o poche righe di una tabella. Una vista MySQL può mostrare i dati di una o più tabelle.
Sintassi di MySQL Views
Vediamo ora la sintassi di base utilizzata per creare una vista in MySQL.
CREATE VIEW `view_name` AS SELECT statement;
DOVE
- "CREATE VIEW` view_name` " dice al server MySQL di creare un oggetto di visualizzazione nel database chiamato` view_name`
- "AS SELECT statement" sono le istruzioni SQL da impacchettare nelle viste MySQL. Può essere un'istruzione SELECT che può contenere dati da una o più tabelle.
Come creare viste in MySQL
Di seguito è riportato un processo passo passo per creare la vista in MySQL:
Creiamo ora la nostra prima visualizzazione utilizzando il "myflixdb" creeremo una visualizzazione semplice che limita le colonne visualizzate nella tabella dei membri.
Supponiamo che i requisiti di autorizzazione stabiliscano che il reparto contabilità può vedere solo il numero, il nome e il sesso del membro dalla tabella del membro. Per ottenere ciò puoi creare una VISTA -
CREATE VIEW `accounts_v_members` AS SELECT `membership_number`,`full_names`,`gender` FROM `members`;
L'esecuzione dello script precedente nel workbench MySQL su myflixdb e l'espansione del nodo delle visualizzazioni nel database explorer ci danno i seguenti risultati.
Notare che l'oggetto accounts_v_members è ora visibile negli oggetti delle viste del database. Eseguiamo ora un'istruzione SELECT che seleziona tutti i campi dalla vista come mostrato nell'esempio di visualizzazione di creazione di MySQL di seguito.
SELECT * FROM `accounts_v_members`;
L'esecuzione dello script sopra in MySQL workbench su myflixdb ci dà i seguenti risultati mostrati di seguito.
membership_number | full_names | gender |
---|---|---|
1 | Janet Jones | Female |
2 | Janet Smith Jones | Female |
3 | Robert Phil | Male |
4 | Gloria Williams | Female |
5 | Leonard Hofstadter | Male |
6 | Sheldon Cooper | Male |
7 | Rajesh Koothrappali | Male |
8 | Leslie Winkle | Male |
9 | Howard Wolowitz | Male |
Sono state restituite solo le colonne autorizzate per il reparto contabilità. Altri dettagli trovati nella tabella dei membri sono stati nascosti.
Se vogliamo vedere le istruzioni SQL che compongono una vista particolare, possiamo usare lo script mostrato di seguito per farlo.
MOSTRA CREA VISTA `accounts_v_members`;
L'esecuzione dello script precedente fornisce il nome della vista e le istruzioni SQL SELECT utilizzate per creare la vista.
Join e visualizzazioni in MySQL
Vediamo ora un esempio abbastanza complesso che coinvolge più tabelle e utilizza i join.
Metteremo in un pacchetto il JOIN creato che ottiene informazioni da tre (3) tabelle, ovvero membri, film e noleggi di film. Di seguito è riportato lo script che ci aiuta a raggiungere questo obiettivo.
CREATE VIEW `general_v_movie_rentals` AS SELECT mb.`membership_number`,mb.`full_names`,mo.`title`,mr.`transaction_date`,mr.`return_date` FROM `movierentals` AS mr INNER JOIN `members` AS mb ON mr.`membership_number` = mb.`membership_number` INNER JOIN `movies` AS mo ON mr.`movie_id` = mo.`movie_id`;
L'esecuzione degli script precedenti crea la vista denominata general_v_movie_rentals nel nostro myflixdb
Selezioniamo ora tutti i campi da una tabella denominata general_v_movie_rentals.
SELECT * FROM `general_v_movie_rentals`;
L'esecuzione dello script sopra in MySQL workbench su myflixdb ci dà i seguenti risultati mostrati di seguito.
membership_number | full_names | title | transaction_date | return_date |
---|---|---|---|---|
1 | Janet Jones | Pirates of the Caribean 4 | 20-06-2012 | 28-06-2012 |
1 | Janet Jones | Forgetting Sarah Marshal | 22-06-2012 | 25-06-2012 |
3 | Robert Phil | Forgetting Sarah Marshal | 22-06-2012 | 25-06-2012 |
2 | Janet Smith Jones | Forgetting Sarah Marshal | 21-06-2012 | 24-06-2012 |
3 | Robert Phil | X-Men | 23-06-2012 | 28-06-2012 |
Tieni presente che non abbiamo dovuto scrivere la complessa query JOIN per ottenere informazioni su membri, film e dettagli sul noleggio di film. Abbiamo semplicemente usato la vista in una normale istruzione SELECT come qualsiasi altra tabella ordinaria. La visualizzazione può essere richiamata da qualsiasi punto del sistema dell'applicazione in esecuzione su myflixdb.
Eliminazione delle visualizzazioni in MySQL
Il comando DROP può essere utilizzato per eliminare una vista dal database che non è più necessaria. La sintassi di base per eliminare una visualizzazione è la seguente.
DROP VIEW ` general_v_movie_rentals `;
Perché usare le visualizzazioni?
Potresti voler utilizzare le viste principalmente per i seguenti 3 motivi
- Infine, utilizzerai la tua conoscenza SQL per creare applicazioni che utilizzeranno un database per i requisiti dei dati. Si consiglia di utilizzare le VISUALIZZAZIONI della struttura della tabella originale nella propria applicazione invece di utilizzare le tabelle stesse. Ciò garantisce che quando si effettua il refactoring del database, il codice legacy vedrà lo schema originale tramite la vista senza interrompere l'applicazione.
- Le VISUALIZZAZIONI aumentano la riutilizzabilità. Non sarà necessario creare query complesse che coinvolgono ripetutamente join. Tutta la complessità viene convertita in una singola riga di query utilizzare VISUALIZZAZIONI. Tale codice condensato sarà più facile da integrare nella tua applicazione. Questo eliminerà le possibilità di errori di battitura e il tuo codice sarà più leggibile.
- VIEWS aiuta nella sicurezza dei dati. Puoi utilizzare le viste per mostrare agli utenti solo le informazioni autorizzate e nascondere dati sensibili come i numeri di carte di credito.
Sommario
- Le viste sono tabelle virtuali; non contengono i dati restituiti. I dati vengono memorizzati nelle tabelle a cui si fa riferimento nell'istruzione SELECT.
- Le visualizzazioni migliorano la sicurezza del database mostrando solo i dati previsti agli utenti autorizzati. Nascondono dati sensibili.
- Le visualizzazioni ti semplificano la vita poiché non devi scrivere più volte query complesse.
- È possibile utilizzare INSERT, UPDATE e DELETE su una VISTA. Queste operazioni cambieranno le tabelle sottostanti della VISTA. L'unica considerazione è che VIEW dovrebbe contenere tutte le colonne NOT NULL delle tabelle a cui fa riferimento. Idealmente, non dovresti usare VISUALIZZAZIONI per l'aggiornamento.