mysql create view tutorial with code examples
In diesem Tutorial zum Erstellen einer MySQL-Ansicht wird alles über das Erstellen einer Ansicht in MySQL mithilfe verschiedener Klauseln und Beispiele erläutert. Außerdem erfahren Sie, wie Sie Ansichten löschen und verwalten:
In MySQL ist view eine virtuelle Tabelle, mit der wir die Daten in der Tabelle anzeigen können, ohne dass andere Programme auf die Tabelle zugreifen können, und so Deadlock-Situationen vermeiden können.
Ansichten werden über einer oder mehreren Tabellen erstellt, die Daten enthalten. Bevor Sie fortfahren, beachten Sie bitte, dass wir verwenden MySQL Version 8.0 .
Was du lernen wirst:
MySQL Create View
Syntax:
CREATE (REPLACE) VIEW view_name AS SELECT col1, col2, ... FROM table_name WHERE condition;
Syntax Erläuterung:
- Die Syntax beginnt mit dem Schlüsselwort 'CREATE VIEW' und informiert den MySQL Server über die Art der auszuführenden Aktivität. Dies ist ein obligatorisches Schlüsselwort und kann nicht weggelassen werden.
- REPLACE ist ein optionaler Parameter. Wir können dies verwenden, während wir an einer vorhandenen Ansicht arbeiten.
- Als nächstes kommt der Name der Ansicht. Es sollte genau wie die Namen von Tabellen und Spalten eindeutig sein.
- Wählen Sie dann die Spalten aus der Tabelle aus. Eine Ansicht kann alle Spalten der zugrunde liegenden Tabelle oder nur einige ausgewählte enthalten.
- Als nächstes kommt der Name der Tabelle, für die die Ansicht ausgeführt werden muss. Dies ist obligatorisch und kann nicht weggelassen werden.
- Dann kommt die WHERE-Bedingung, die die Anzahl der Zielzeilen einschränkt oder filtert, auf die die Aktion CREATE VIEW angewendet werden muss. WO ist auch ein Schlüsselwort, aber ein optionales.
Die WHERE-Klausel ist jedoch von Bedeutung. Wenn dies nicht erwähnt wird oder wenn die Bedingung nicht korrekt festgelegt ist, sind entweder die gesamte Tabelle oder nicht erforderliche Zeilen Teil der Ansicht.
Beispiel für eine MySQL-Ansicht erstellen
Im Folgenden finden Sie eine Beispieltabelle, die in MYSQL erstellt wurde.
Schemaname: Pazifik
Tabellenname: Angestellte
Spaltennamen:
empNum : Enthält ganzzahlige Werte für die Mitarbeiternummer.
Nachname : Enthält Varchar-Werte für den Nachnamen des Mitarbeiters.
Vorname : Enthält Varchar-Werte für den Vornamen des Mitarbeiters.
Email : Enthält Varchar-Werte für die E-Mail-ID des Mitarbeiters.
deptNum : Enthält varchar für die Abteilungs-ID, zu der ein Mitarbeiter gehört.
Gehalt : Enthält Dezimalwerte des Gehalts für jeden Mitarbeiter.
Anfangsdatum : Enthält Datumswerte für das Beitrittsdatum des Mitarbeiters.
Schemaname: Pazifik
Tabellenname: Abteilungen
Spaltennamen:
deptNum; Enthält varchar für die Abteilungs-ID innerhalb einer Organisation.
Stadt: Enthält den Namen der Stadt, in der die Abteilungen arbeiten.
Land: Enthält den Namen des Landes, das der Stadt entspricht.
Bonus Enthält den prozentualen Wert des Bonus.
MySQL Simple Erstellen Sie eine Ansicht
Erstellen wir nun eine Ansicht über der obigen Tabelle.
Unten ist die Abfrage angegeben.
Die SELECT-Klausel kann bestimmte Spaltennamen enthalten, oder wir können '*' verwenden, um alle Spalten abzurufen. Sobald wir eine Ansicht erstellt haben, können wir die Spalten nicht mehr hinzufügen oder löschen. Wenn wir Spalten hinzufügen oder löschen möchten, müssen wir entweder eine neue Ansicht erstellen oder diese vorhandene Ansicht ersetzen.
Die Ausgabeanweisung zeigt, dass die SQL-Anweisungen von CREATE VIEW erfolgreich ausgeführt wurden. Es heißt auch, dass keine Zeilen betroffen waren. Dies bedeutet, dass das Erstellen einer neuen Zeile keine Auswirkungen auf die Daten in der zugrunde liegenden Tabelle hat.
Fragen wir nun die Ansicht ab.
Abfrage:
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 | Nachname | Vorname | deptNum | Gehalt | Anfangsdatum | |
---|---|---|---|---|---|---|
1008 | Bailey | Oliver | oliver.bailey@gmail.com | 3 | 24494.4 | 0001-01-01 |
1001 | Andrews | Jack | ja@gmail.com | 1 | 3182.7 | 0001-01-01 |
1002 | Schwatz | Mike | ms@gmail.com | 1 | 5304.5 | 0001-01-01 |
1003 | Langley | Margaret | margaret.langley@gmail.com | zwei | 8820 | 0001-01-01 |
1004 | Harera | Sandra | sh@gmail.com | 1 | 10609 | 0001-01-01 |
1005 | lesen | Peter | pl@gmail.com | zwei | 14332.5 | 0001-01-01 |
1006 | Keith | Jenny | jk@gmail.com | zwei | 16537,5 | 0001-01-01 |
1009 | Tasse | Harry | hb@gmail.com | 5 | 30645.6 | 0001-01-01 |
1011 | Hanks | Tom | th@gmail.com | NULL | 10100 | 0001-01-01 |
1012 | Luther | Martin | ml@gmail.com | 3 | 13000 | 0001-01-01 |
1014 | Murray | Keith | km@gmail.com | 1 | 25000 | 0001-01-01 |
1015 | Branson | John | jb@gmail.com | zwei | 15000 | 0001-01-01 |
1016 | Martin | Richard | rm@gmail.com | 4 | 5000 | 0001-01-01 |
1017 | Johnson | Vorabend | ej@gmail.com | 3 | 5500 | 2019-11-25 |
1018 | Bindung | Nolan | nb@gmail.com | zwei | 15000 | 2019-09-13 |
Erstellen Sie eine Ansicht mit GROUP BY und ORDER BY
Nehmen wir ein Szenario an, in dem wir den Gesamtgehalt des Abteilungsabschnitts ermitteln müssen.
Unten ist die Abfrage angegeben:
Anstatt diese Abfrage jedes Mal in der Tabelle auszuführen, benötigen wir die Informationen. Es ist besser, die Ansicht abzufragen, da dadurch weniger Datenbankquellen verbraucht werden.
Lassen Sie uns nun den Inhalt unserer Ansicht sehen. Wir werden herausfinden, wie viel jede Abteilung in Bezug auf die Gehälter an ihre Mitarbeiter sendet.
Abfrage:
CREATE VIEW salPerDept AS SELECT deptNum, sum(salary) FROM employees GROUP BY deptNum ORDER BY deptNum desc ; SELECT * FROM employees_view ;
Ergebnismenge:
deptNum | Summe (Gehalt) | |||||
---|---|---|---|---|---|---|
1006 | Keith | Jenny | zwei | Charlotte | Vereinigte Staaten | 5 |
5 | 30645.6 | |||||
4 | 5000 | |||||
3 | 42994.4 | |||||
zwei | 69690 | |||||
1 | 44096.2 | |||||
NULL | 10100 |
Der NULL-Wert in deptNum gibt an, dass ein Mitarbeiter nicht Teil einer Abteilung ist, sondern auf der Gehaltsliste der Organisation steht.
MySQL Create View mit JOIN
Nehmen wir an, wir möchten Daten über die Abteilung, die Stadt, aus der sie stammt, und den Bonus erhalten, der ihren Mitarbeitern angeboten wird. Wir brauchen diese Informationen für jeden Mitarbeiter.
Um dies zu erreichen, verwenden wir das Schlüsselwort JOIN, um Daten aus der Tabelle der Abteilungen und Mitarbeiter abzurufen.
Werfen wir einen Blick auf die Abfrage und ihre Ausgabe.
Wir können hier verschiedene Arten von JOIN verwenden, z. B. INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN oder FULL OUTER JOIN, je nach unseren Anforderungen.
Abfrage:
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 ;
Führen Sie nun eine SELECT-Abfrage in dieser Ansicht aus, um die Ausgabe anzuzeigen:
Ergebnismenge:
empNum | Nachname | Vorname | deptNum | Stadt | Land | Bonus |
---|---|---|---|---|---|---|
1001 | Andrews | Jack | 1 | New York | Vereinigte Staaten | 3 |
1002 | Schwatz | Mike | 1 | New York | Vereinigte Staaten | 3 |
1004 | Harera | Sandra | 1 | New York | Vereinigte Staaten | 3 |
1014 | Murray | Keith | 1 | New York | Vereinigte Staaten | 3 |
1003 | Langley | Margaret | zwei | Charlotte | Vereinigte Staaten | 5 |
1005 | lesen | Peter | zwei | Charlotte | Vereinigte Staaten | 5 |
1015 | Branson | John | zwei | Charlotte | Vereinigte Staaten | 5 |
1018 | Bindung | Nolan | zwei | Charlotte | Vereinigte Staaten | 5 |
1008 | Bailey | Oliver | 3 | Chicago | Vereinigte Staaten | 8 |
1012 | Luther | Martin | 3 | Chicago | Vereinigte Staaten | 8 |
1017 | Johnson | Vorabend | 3 | Chicago | Vereinigte Staaten | 8 |
1016 | Martin | Richard | 4 | London | England | 10 |
1009 | Tasse | Harry | 5 | Berlin | Deutschland | 13 |
Ansicht mit Unterabfrage erstellen
Bei dieser Art von create view-Anweisung versuchen wir, den Wert einer Spalte abzurufen, in der die Klausel auf der Ausgabe einer Unterabfrage basiert. Angenommen, wir müssen alle Mitarbeiter finden, deren Gehalt über dem Durchschnittsgehalt der Organisation liegt.
Sehen wir uns die Abfrage an:
Abfrage:
CREATE VIEW avgSal_view AS SELECT empNum, lastName, firstName, salary FROM employees WHERE salary > ( SELECT avg(salary) FROM employees ) ; SELECT * FROM avgSal_view ;
Ergebnismenge:
empNum | Nachname | Vorname | Gehalt |
---|---|---|---|
1018 | Bindung | Nolan | 15000 |
1005 | lesen | Peter | 14332.5 |
1006 | Keith | Jenny | 16537,5 |
1008 | Bailey | Oliver | 24494.4 |
1009 | Tasse | Harry | 30645.6 |
1014 | Murray | Keith | 25000 |
1015 | Branson | John | 15000 |
Ansichten verwalten
Durch Ändern der Ansicht ändern oder Ansicht erstellen / ersetzen können wir jede Ansicht ändern / ersetzen. Die explizite Verwendung von ALTER VIEW zum Neukompilieren einer Ansicht ist ungültig.
Wenn Sie über ALTER ANY Table-Systemberechtigungen verfügen oder sich die Ansicht in Ihrem Schema befindet, können Sie die ALTER VIEW-Anweisung verwenden.
Java Interview Fragen und Antworten für Erstsemester technisch
Mithilfe der Abfrage 'Ansicht ändern' können wir die Neukompilierungsfehler vor der Laufzeit lokalisieren. Die Verwendung der Anweisung ALTER VIEW kann sich auf das andere Objekt / die andere Ansicht auswirken, die bzw. das davon abhängt. So können wir eine Ansicht nach dem Ändern neu kompilieren.
Wir können eine Ansicht mithilfe der Option 'Ansicht erstellen' neu definieren und die vorhandene Ansicht durch die Abfrage 'Ansicht ersetzen' ersetzen.
Zum Beispiel, Betrachten Sie employee_view. Hier haben wir die Spalten lastName und firstName zusammen mit einigen anderen. Beachten Sie, dass die Spalten firstName und lastName zusammengeführt werden müssen.
Unten ist der Schnappschuss der Ansicht angegeben, bevor die ALTER-Abfrage ausgeführt wird.
Führen Sie nun die Abfrage ALTER VIEW aus, um den Vor- und Nachnamen zusammenzuführen.
Die Abfrage ist unten angegeben:
Abfrage:
ALTER VIEW employees_view AS SELECT empNum, CONCAT(firstName, ' ', lastName) AS empName, email, deptNum, salary, start_date FROM employees ;
Sehen wir uns jetzt den Inhalt der employee_view an:
Wenn Sie bemerken, haben wir keine zwei separaten Spalten für Namen. Stattdessen haben wir nur eine Spalte, in der sowohl der Vor- als auch der Nachname verkettet sind.
Erfahren Sie mehr = >> MySQL CONCAT-Funktion
Abfrage:
SELECT * FROM employees_view;
Ergebnismenge:
empNum | empName | deptNum | Gehalt | Anfangsdatum | |
---|---|---|---|---|---|
1008 | Oliver Bailey | oliver.bailey@gmail.com | 3 | 24494 | 0001-01-01 |
1001 | Jack Andrews | ja@gmail.com | 1 | 3182.7 | 0001-01-01 |
1002 | Mike Schwatz | ms@gmail.com | 1 | 5304.5 | 0001-01-01 |
1003 | Margaret Langley | margaret.langley@gmail.com | zwei | 8820 | 0001-01-01 |
1004 | Sandra Harera | sh@gmail.com | 1 | 10609 | 0001-01-01 |
1005 | Peter Lee | pl@gmail.com | zwei | 14333 | 0001-01-01 |
1006 | Jenny Keith | jk@gmail.com | zwei | 16538 | 0001-01-01 |
1009 | Harry Becher | hb@gmail.com | 5 | 30646 | 0001-01-01 |
1011 | Tom Hanks | th@gmail.com | 10100 | 0001-01-01 | |
1012 | Martin Luther | ml@gmail.com | 3 | 13000 | 0001-01-01 |
1014 | Keith Murray | km@gmail.com | 1 | 25000 | 0001-01-01 |
1015 | John Branson | jb@gmail.com | zwei | 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 | zwei | 15000 | 2019-09-13 |
Eine Ansicht löschen
Wir können eine Ansicht mit der Anweisung DROP VIEW löschen. Sie können eine DROP VIEW verwenden, wenn sie über DROP ANY-Ansichtsrechte verfügen oder diese in ihrem Schema enthalten sein sollten. Die herabhängende Ansicht hat keinen Einfluss auf die zugrunde liegende Tabelle, auf der die Ansicht erstellt wurde, oder auf die Daten in dieser Tabelle.
Abfrage:
DROP VIEW (view name);
FAQs
F # 1) Wie erstelle ich Ansichten in MySQL?
Antworten: Es gibt mehrere Möglichkeiten, Ansichten in MySQL zu erstellen. Wir haben vier verschiedene Wege gegangen, wie unten gezeigt.
1. MySQL Simple Erstellen Sie eine Ansicht
2. MySQL Create View mit GROUP BY und ORDER BY
3. MySQL Create View mit JOIN
4. MySQL-Ansicht mit Unterabfrage erstellen
Q # 2) Was ist eine Ansicht in MySQL?
Antworten: Ansichten sind wie vorab ausgeführte Abfragen, die in einer logischen Struktur gespeichert sind, sodass wir die komplexen Abfragen in der Tabelle nicht erneut ausführen müssen. Wir können einfach die Ansicht abfragen und unsere Daten abrufen, ohne die Tabelle zu beeinflussen.
Q # 3) Können wir beim Erstellen von Ansichten JOIN auf Ansichten anwenden?
Antworten: Ja, JOIN-Anweisungen können für Ansichten verwendet werden, ähnlich wie wir sie für Tabellen verwenden.
Q # 4) Können wir eine Ansicht aus einer anderen Ansicht erstellen?
Antworten: Ansichten fungieren im Wesentlichen als Tabellen, jedoch als virtuelle. So wie wir Ansichten über einer Tabelle erstellen, können wir auch Ansichten über einer anderen Ansicht erstellen.
Q # 5) Warum verwenden wir Ansichten?
Antworten: Als Ergebnis der SQL-Abfrage erstellt die Ansicht eine logische Tabelle. Wir verwenden Ansichten aus folgenden Gründen.
- Mithilfe der Ansicht können wir die Sichtbarkeit von Zeilen und Spalten (mithilfe der Select- und Where-Klausel) für relevante Aufgaben einschränken.
- Ansichten werden verwendet, wenn wir Zeilen und Spalten kombinieren (mit Union und Join) aus mehreren Tabellen.
- So erhalten Sie eine klarere Darstellung der Aggregation von Zeilen (mithilfe von Gruppieren nach und Haben) in einer Tabelle mit feineren Details.
- Ansichten werden beim Umbenennen oder Dekodieren von Spalten (mit AS) oder Zeilen (mit JOIN, IF, CASE oder Oracle DECODE) verwendet.
- Durch Kämmen einer der oben genannten Optionen mit Sicherheitseinstellungen können wir überprüfen, ob der Benutzer Zugriff auf das hat, was er nur autorisiert hat.
Fazit
In diesem Tutorial haben wir die verschiedenen Möglichkeiten zum Erstellen einer Ansicht in MySQL untersucht.
1. MySQL Simple Erstellen Sie eine Ansicht
2. MySQL Create View mit GROUP BY und ORDER BY
3. MySQL Create View mit JOIN
4. MySQL-Ansicht mit Unterabfrage erstellen
Abhängig von den Projektanforderungen können wir eine dieser Optionen auswählen.
Weiterführende Literatur = >> MySQL CREATE TABLE
Viel Spaß beim Lernen !!
Literatur-Empfehlungen
- MySQL ALTER TABLE - Hinzufügen einer Spalte zu einer Tabelle in MySQL
- MySQL CONCAT- und GROUP_CONCAT-Funktionen mit Beispielen
- MySQL COUNT und COUNT DISTINCT mit Beispielen
- MySQL-Datenbank erstellen - So erstellen Sie eine Datenbank in MySQL
- MySQL CREATE USER: So erstellen Sie einen neuen Benutzer in MySQL
- MySQL Create View Tutorial mit Codebeispielen
- MySQL GROUP BY-Klausel - Tutorial mit Beispielen
- MySQL JOIN Tutorial: Inner, Außen, Kreuz, Links, Rechts und Selbst