Views în MySQL
VIEWS (Vizualizările) sunt tabele virtuale care nu stochează date proprii, ci afișează date stocate în alte tabele. Cu alte cuvinte, VIEWS nu sunt altceva decât Interogări SQL. O vizualizare poate conține toate sau câteva rânduri dintr-un tabel. O vizualizare MySQL poate afișa date dintr-un tabel sau mai multe tabele.
Sintaxa
Să ne uităm acum la sintaxa de bază folosită pentru a crea o vizualizare în MySQL.
CREATE VIEW `view_name` AS instrucțiunea SELECT;
unde
- „CREATE VIEW `view_name`” spune serverului MySQL să creeze un obiect de vizualizare în baza de date numit `view_name`
- „Instrucțiunea AS SELECT” este instrucțiunile SQL care trebuie împachetate în Vizualizările MySQL. Poate fi o instrucțiune SELECT care poate conține date dintr-un tabel sau mai multe tabele.
Cum se creează vizualizări în MySQL
Următorul este un proces pas cu pas pentru a crea vizualizarea în MySQL. Acum să creăm prima noastră vizualizare folosind „myflixdb”, vom crea o vizualizare simplă care restricționează coloanele văzute în tabelul membrilor.
Să presupunem că cerințele de autorizare spun că departamentul de conturi poate vedea numai numărul, numele și sexul membrului din tabelul membrului. Pentru a realiza acest lucru, puteți crea o VIEW:
CREATE VIEW `accounts_v_members` AS SELECT `membership_number`,`full_names`,`genre` FROM `members`;
Executarea scriptului de mai sus în MySQL workbench împotriva myflixdb și extinderea nodului de vizualizări în exploratorul bazei de date ne oferă următoarele rezultate.
Rețineți că obiectul accounts_v_members este acum vizibil în obiectele vizualizărilor bazei de date. Să executăm acum o instrucțiune SELECT care selectează toate câmpurile din vizualizare, așa cum se arată în exemplul de creare a vizualizării MySQL de mai jos.
SELECTAȚI * FROM `conturi_v_membri`;
Executarea scriptului de mai sus în MySQL workbench împotriva myflixdb ne oferă următoarele rezultate prezentate mai jos.
numar de membru |
nume complete |
gen |
1 |
Janet Jones |
Femeie |
2 |
Janet Smith Jones |
Femeie |
3 |
Robert Phil |
Masculin |
4 |
Gloria Williams |
Femeie |
5 |
Leonard Hofstadter |
Masculin |
6 |
Sheldon Cooper |
Masculin |
7 |
Rajesh Koothrappali |
Masculin |
opt |
Leslie Winkle |
Masculin |
nouă |
Howard Wolowitz |
Masculin |
Au fost returnate numai coloanele autorizate pentru departamentul de conturi. Alte detalii găsite în tabelul membrilor au fost ascunse.
Dacă vrem să vedem instrucțiunile SQL care alcătuiesc o anumită vizualizare, putem folosi scriptul prezentat mai jos pentru a face asta.
SHOW CREATE VIEW `accounts_v_members`;
Executarea scriptului de mai sus vă oferă numele vizualizării și instrucțiunile SQL SELECT utilizate pentru a crea vizualizarea.
Uniri și vizualizări în MySQL
Să ne uităm acum la un exemplu destul de complex care implică mai multe tabele și folosește îmbinări.
Vom împacheta JOIN-ul creat care obține informații din trei (3) tabele și anume membri, filme și închirieri de filme. Mai jos este scenariul care ne ajută să realizăm asta:
CREATE VIEW `general_v_movie_rentals` AS SELECT mb.`membership_number`,mb.`full_names`,lu.`title`,mr.`transaction_date`,mr.`return_date` FROM `movierentals` AS dl INNER JOIN `members` ASmb mr.`membership_number` = mb.`membership_number` INNER JOIN `movies` AS mo ON mr.`movie_id` = lu.`movie_id`;
Executarea scripturilor de mai sus creează vizualizarea numită general_v_movie_rentals în myflixdb
Să selectăm acum toate câmpurile dintr-un tabel numit general_v_movie_rentals.
SELECTAȚI * FROM `general_v_movie_rentals`;
Executarea scriptului de mai sus în MySQL workbench împotriva myflixdb ne oferă următoarele rezultate prezentate mai jos.
numar de membru |
nume complete |
titlu |
Data tranzacției |
data_return |
1 |
Janet Jones |
Piratii din Caraibe 4 |
20.06.2012 |
28-06-2012 |
1 |
Janet Jones |
Uitând-o pe Sarah Marshal |
22-06-2012 |
25-06-2012 |
3 |
Robert Phil |
Uitând-o pe Sarah Marshal |
22-06-2012 |
25-06-2012 |
2 |
Janet Smith Jones |
Uitând-o pe Sarah Marshal |
21-06-2012 |
24-06-2012 |
3 |
Robert Phil |
X-Men |
23-06-2012 |
28-06-2012 |
Rețineți că nu a fost nevoie să scriem interogarea complexă JOIN pentru a obține informații despre membri, filme și detalii despre închirierea filmelor. Pur și simplu am folosit vizualizarea într-o instrucțiune SELECT obișnuită ca orice alt tabel obișnuit. Vizualizarea poate fi apelată de oriunde în sistemul de aplicație care rulează deasupra myflixdb.
Aruncarea vizualizărilor în MySQL
Comanda DROP poate fi folosită pentru a șterge o vizualizare din baza de date care nu mai este necesară. Sintaxa de bază pentru a elimina o vizualizare este următoarea.
De ce să folosim vizualizările?
Poate doriți să utilizați vizualizările în principal din următoarele 3 motive
- În cele din urmă, vă veți folosi cunoștințele dvs. SQL pentru a crea aplicații, care vor folosi o bază de date pentru cerințele de date. Este recomandat să utilizați VIEWS ale structurii originale a tabelului în aplicația dvs. în loc să utilizați tabelele în sine. Acest lucru vă asigură că atunci când vă refactorizați DB, codul dvs. moștenit va vedea schema originală prin vizualizare fără a întrerupe aplicația.
- VIEWS măresc reutilizabilitatea. Nu va trebui să creați interogări complexe care implică îmbinări în mod repetat. Toată complexitatea este convertită într-o singură linie de interogare folosind VIEWS. Un astfel de cod condensat va fi mai ușor de integrat în aplicația dvs. Acest lucru va elimina șansele de greșeli de scriere și codul dvs. va fi mai ușor de citit.
- VIEWS ajută la securitatea datelor. Puteți utiliza vizualizările pentru a afișa numai informații autorizate utilizatorilor și pentru a ascunde datele sensibile, cum ar fi numerele cardurilor de credit.
Vizualizările sunt tabele virtuale; nu conțin datele care sunt returnate. Datele sunt stocate în tabelele la care se face referire în instrucțiunea SELECT.
Vizualizările îmbunătățesc securitatea bazei de date afișând numai datele dorite utilizatorilor autorizați. Ele ascund datele sensibile.
Vizualizările vă fac viața ușoară, deoarece nu aveți nevoie să scrieți interogări complexe în mod repetat.
Este posibil să utilizați INSERT, UPDATE și DELETE pe o VIEW. Aceste operațiuni vor schimba tabelele de bază ale VIEW. Singura considerație este că VIEW ar trebui să conțină toate coloanele NOT NULL ale tabelelor la care face referire. În mod ideal, nu ar trebui să utilizați VIEWS pentru actualizare.