Eine SQL-Ansicht ist eine virtuelle Tabelle oder eine Ergebnismenge, die von der SELECT-Abfrage generiert wird. Im Gegensatz zu physischen Tabellen speichern Ansichten keine Daten in einer Datenbank. Wenn wir die SELECT-Abfrage ausführen, um die Daten zu füllen, führt sie eine Abfrage aus, die die Ansicht erstellt (Ansichtsdefinition).
Was ist View in MySQL
Angenommen, Sie haben eine komplexe SQL-Abfrage, die mehrere Verknüpfungen und eine komplexe Geschäftslogik verwendet. Sie verwenden diese Abfrage häufig im Anwendungscode. Aufgrund geschäftlicher Anforderungen müssen Sie diese Abfragelogik jedoch ändern. Die in einer Abfrage vorgenommenen Änderungen müssen sich in der gesamten Anwendung widerspiegeln.
In solchen Fällen ist es vorzuziehen, eine SQL-Ansicht zu erstellen und die Geschäftslogik darin zu kapseln. Wenn wir die Abfragedefinition ändern möchten, können wir außerdem die Definition der Ansicht ändern, anstatt Änderungen in der Anwendung vorzunehmen.
Die Ansichten gelten auch, um den tatsächlichen Namen und die Details der Tabelle auszublenden. Wenn wir vertrauliche Informationen eines Kunden in der Tabelle speichern und nur die wichtigsten Details anzeigen möchten, können wir eine Ansicht erstellen.
In diesem Artikel wird die Ansicht erstellen erläutert , Ansicht ersetzen und Drop-Ansicht Verwendung von Anweisungen auf dem MySQL-Server.
Beispiel Datenbank Einrichtung
Für die Demonstration habe ich MySQL Server installiert und eine Dummy-Datenbank namens EltechDB erstellt . In dieser Datenbank habe ich eine Tabelle namens tblemployee erstellt .
Die folgende Abfrage erstellt die EltechDB Datenbank:
Create database EltechDB;
Die folgende Abfrage erstellt einen tblemployee Tabelle:
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)
);
Ich habe einige Dummy-Datensätze in tblemployee eingefügt Tabelle mit der folgenden Abfrage:
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');
Lassen Sie uns nun die Anweisungen zum Verwalten der MySQL-Ansichten klären.
So erstellen Sie eine Ansicht in MySQL
Die Create View-Anweisung erstellt eine neue Ansicht in einer Datenbank. Die Syntax lautet wie folgt:
Create View view_name
As
Select * from base_table
Hier:
- Ansichtsname ist der gewünschte Name der Ansicht.
- Die wählen Sie * aus ist die Abfrage, die die Ansicht mit base_table generiert . Die Abfrage wird nach AS angegeben Schlüsselwort.
MySQL Create View Syntaxbeispiel
Angenommen, wir möchten eine Ansicht erstellen, die die Mitarbeiterliste füllt. Die Definition der Ansicht lautet wie folgt:
Create view vwEmployees
as
select * from tblemployees;
Um auf die Daten der View zuzugreifen, können wir die SELECT-Abfrage verwenden. Zum Anzeigen der Daten von vwMitarbeitern , führen Sie die folgende Abfrage aus:
mysql> select * from vwEmployees;
Ausgabe:
Filtern Sie die Daten der Ansicht mit der WHERE-Klausel
Wir können die View-Ausgabe mit der WHERE-Klausel filtern. In unserem Fall möchten wir die Liste der weiblichen abrufen Mitarbeiter von den vwMitarbeitern . Die Abfrage lautet wie folgt:
mysql> select * from vwEmployees where gender='F';
Die Ausgabe der Abfrage ist:
Nehmen wir ein anderes Beispiel. Wir möchten die Liste der Mitarbeiter abrufen, deren Mitarbeiternummer kleiner als 10005 ist . Die Abfrage lautet wie folgt:
mysql> select * from vwemployees where emp_no<10005;
Abfrageausgabe:
Verwenden Sie die Aggregatfunktion in der Ansicht
Wir können die Aggregatfunktionen auf der Ansicht verwenden.
Hier wollen wir die Anzahl der männlichen und weiblichen Mitarbeiter aus den vwEmployees auffüllen Sicht. Zuerst verwenden wir die COUNT-Funktion, um die Anzahl der Mitarbeiter zu erhalten. Dann verwenden wir die GROUP BY-Klausel, um die Ausgabe basierend auf der Geschlechtsspalte zu gruppieren. Die Abfrage lautet wie folgt:
mysql> select gender, count(emp_no)as 'Total Employees' from vwEmployees group by gender;
Abfrageausgabe:
Verwenden Sie die Datum-Uhrzeit-Funktion in der Ansicht
Wir können die Date-Time-Funktion für die View-Ausgabe verwenden. Rufen wir die Liste der Mitarbeiter ab, deren Eintrittsjahr größer oder gleich 1990 ist. Die Abfrage lautet wie folgt:
mysql> select * from vwemployees where Year(hire_date)>=1990;
Abfrageausgabe:
Verwenden Sie die Control-Flow-Funktion in der Ansicht
Wir können die CASE- oder IF-Funktion auf die Ausgabe der Ansicht anwenden.
Wir drucken den Wert des Geschlechts in einem sinnvollen Format. Die Ausgabe der Geschlechtsspalte, die von der Ansicht zurückgegeben wird, ist entweder M oder F. Statt M auszugeben, muss die Abfrage Männlich zurückgeben . In ähnlicher Weise muss die Abfrage anstelle des gedruckten F Female zurückgeben . Die Abfrage lautet wie folgt:
mysql> Select first_name, last_name, case when gender='M' then 'Male' when gender ='F' then 'Female' end as 'Gender', hire_date from vwEmployees;
Abfrageausgabe:
Lesen Sie mehr darüber, wie Sie eine Ansicht in SQL erstellen.
View-Anweisung ersetzen
REPLACE VIEW wird verwendet, um die Definition einer Ansicht zu ändern. Die Schlüsselwörter CREATE VIEW und REPLACE VIEW werden zusammen verwendet. Die Syntax lautet wie folgt:
Create or replace View view_name
As
Select * from base_table
Hier:
- Ansicht erstellen oder ersetzen: Diese Schlüsselwörter dienen dazu, die vorhandene Ansicht zu erstellen oder zu ersetzen. Wenn wir die create- oder replace-View-Anweisung ausführen, prüft MySQL, ob sie in der Datenbank existiert. Wenn die Ansicht vorhanden ist, ändert sie die Ansichtsdefinition unter Verwendung der nach dem AS-Schlüsselwort angegebenen Abfrage. Wenn die Ansicht nicht existiert, erstellt sie eine neue Ansicht unter Verwendung der Abfrage, die nach dem Schlüsselwort AS angegeben ist.
- Ansichtsname ist der gewünschte Name der Ansicht.
- Die wählen Sie * aus ist die Abfrage, die verwendet wird, um die Ansicht mit base_table zu generieren . Die Abfrage wird nach AS angegeben Schlüsselwort.
Hinweis: Ansichtsschlüsselwörter erstellen oder ersetzen erstellt eine neue Ansicht oder ändert die vorhandene Ansichtsdefinition.
Schreiben Sie den Ansichtsnamen in ‘database_name’.’view_name’ formatieren . Wenn Sie die Datenbank nicht angeben, erstellen Sie die Ansicht möglicherweise in einer anderen Datenbank.
Beispiel für MySQL CREATE View- oder MySQL REPLACE View-Anweisungen
Wir möchten nur den Vornamen, den Nachnamen und das Geschlecht der Mitarbeiter anzeigen. Außerdem möchten wir den Spalten geeignete Namen geben. Beispiel:Vorname und Nachname Spaltenwerte sollten kombiniert werden, und der Spaltenname muss der Name des Mitarbeiters sein. Die SQL-Abfrage sollte wie folgt lauten:
mysql> create or replace view vwEmployees(EmployeeName,gender) as select concat(first_name, " ",last_name),gender from tblEmployees;
Führen Sie die folgende SELECT-Abfrage aus, um die Daten von vwEmployees anzuzeigen :
mysql> select * from vwEmployees
Abfrageausgabe:
Wie Sie sehen können, ist der Vorname und Nachname Werte werden in EmployeeName kombiniert Spalte, die angibt, dass die Ansichtsdefinition aktualisiert wurde.
Die MySQL DROP View-Anweisung
Das Schlüsselwort DROP View dient dazu, die View aus der Datenbank zu löschen. Die Syntax lautet wie folgt:
Drop View ‘database_name’.’view_name’
In der Syntax view_name ist der Name der Ansicht, die Sie löschen möchten.
Lassen wir die vwMitarbeiter fallen View mit der DROP View-Anweisung. Führen Sie die folgende Abfrage aus:
mysql> DROP VIEW `eltechdb`.`vwemployees`;
Führen Sie die folgende Abfrage aus, um zu überprüfen, ob die Ansicht gelöscht wurde:
mysql> SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.tables WHERE TABLE_TYPE LIKE 'VIEW' and table_schema='EltechDB';
Ausgabe:
Die Abfrage hat null Zeilen zurückgegeben und somit angezeigt, dass die Ansicht gelöscht wurde.
Zusammenfassung
In diesem Artikel wurden die MySQL-Ansichten und die Möglichkeiten zum Erstellen und Verwalten dieser Ansichten erklärt und demonstriert. Außerdem wurde die Verwendung der Anweisungen CREATE VIEW, REPLACE View und DROP View erläutert. CREATE View wird verwendet, um eine Ansicht zu erstellen, REPLACE View ändert die Definition der Ansicht und DROP View löscht die Ansicht.