Das Konzept der Ansicht
Eine Ansicht ist eine virtuelle Tabelle, die selbst keine Daten enthält und nur sehr wenig Speicherplatz belegt. Dies ist ein wichtiges Konzept in SQL.
Ansichten werden auf vorhandenen Tabellen erstellt. Diese Tabellen, auf denen Ansichten erstellt werden, werden Basistabellen genannt.
Das Erstellen und Löschen von Ansichten betrifft nur die Ansicht selbst und nicht die entsprechende Basistabelle. Wenn DML-Vorgänge (Hinzufügen, Löschen, Ändern) für die Ansicht ausgeführt werden, werden die Daten in der Ansicht entsprechend aktualisiert, und umgekehrt ändern sich auch die Daten in der Datentabelle.
Die Anweisung, dass die Ansicht den Dateninhalt bereitstellt, ist eine SELECT-Anweisung. Die Ansicht kann als gespeicherte SELECT-Anweisung verstanden werden.
In der Datenbank speichert die Ansicht die Daten nicht, die Daten werden tatsächlich in der Datentabelle gespeichert. Wenn Sie Daten in der Datentabelle hinzufügen, löschen oder ändern, ändern sich die Daten in der Ansicht entsprechend. umgekehrt.
View ist eine weitere Darstellungsform, die Benutzern Basistabellendaten bereitstellt. Unter normalen Umständen muss die Datenbank kleiner Projekte keine Ansichten verwenden, aber in großen Projekten und wenn die Datentabellen relativ komplex sind, wird der Wert von Ansichten deutlich. Sie können uns dabei helfen, häufig abgefragte Ergebnismengen in virtuelle Tabellen einzufügen. Verbesserung der Nutzungseffizienz. Es ist sehr einfach zu verstehen und zu verwenden.
Erstellen Sie eine Ansicht.
Der Alias des Felds in der Abfrageanweisung wird als Alias der Ansicht angezeigt die Ansicht
CREATE VIEW vu_emps
AS
SELECT employee_id,last_name,salary
FROM emps;
Sehen Sie sich die Ansicht an
Sehen Sie sich die Tabellenobjekte und Anzeigeobjekte der Datenbank an
CREATE VIEW vu_emps2(emp_id,name,monthly_sal)
AS
SELECT employee_id,last_name,salary
FROM emps;
Sehen Sie sich die Datenbankstruktur an
CREATE VIEW vu_emp_dept
AS
SELECT employee_id,e.department_id,department_name
FROM emps e JOIN depts d
ON e.department_id = d.department_id;
SELECT * FROM vu_emp_dept;
Sehen Sie sich die Attributinformationen der Daten an
CREATE VIEW vu_emp_dept1
AS
SELECT CONCAT(e.last_name,'(',d.department_name,')') emp_info
FROM emps e JOIN depts d
ON e.department_id = d.department_id;
Sehen Sie sich die detaillierten Definitionsinformationen der Ansicht an
CREATE VIEW vu_emp4
AS
SELECT department_id,department_name FROM vu_emp_dept;
SELECT * FROM vu_emp4;
Aktualisieren Sie die Ansichtsdaten
Das Aktualisieren der Daten in der Ansicht führt zu Änderungen der Daten in der Tabelle in der Basistabelle.
Das Aktualisieren der Daten in der Tabelle führt auch zu Änderungen der Daten in der Ansicht.
Damit die Damit die Ansicht aktualisierbar ist, muss jede Zeile in der Ansicht einer Zeile in der Basistabelle entsprechen und zwischen den beiden muss eine Eins-zu-eins-Beziehung bestehen. Darüber hinaus unterstützt die Ansicht keine Aktualisierungsvorgänge, wenn die folgenden Bedingungen in der Ansichtsdefinition auftreten:
Wenn beim Definieren der Ansicht „ALGORITHM = TEMPTABLE“ angegeben wird, unterstützt die Ansicht keine INSERT- und DELETE-Vorgänge
Die Ansicht enthält keine Basis. Für alle Spalten in der Tabelle, die als nicht leer definiert sind und für die kein Standardwert angegeben ist, unterstützt die Ansicht keine INSERT-Operationen. Wenn eine JOIN-Union-Abfrage in SELECT verwendet wird Wenn in der Feldliste nach der SELECT-Anweisung, die die Ansicht definiert, mathematische Ausdrücke oder Unterabfragen verwendet werden, unterstützt die Ansicht weder INSERT noch die Anweisung Unterstützen Sie UPDATE-Feldwerte, die mathematische Ausdrücke oder Unterabfragen verwenden. Wenn in der Feldliste nach der SELECT-Anweisung, die die Ansicht definiert, DISTINCT, Aggregatfunktion, GROUP BY, HAVING, UNION usw. verwendet werden unterstützt INSERT, UPDATE und DELETE nicht; enthält Unterabfragen in der SELECT-Anweisung, die die Ansicht definiert. Wenn die Tabelle nach FROM in der Unterabfrage referenziert wird, unterstützt die Ansicht INSERT, UPDATE und DELETE nicht Die Ansichtsdefinition basiert auf einer nicht aktualisierbaren Ansicht.
Obwohl Ansichten Daten aktualisieren können, werden Ansichten als virtuelle Tabellen im Allgemeinen hauptsächlich zur Erleichterung von Abfragen verwendet, und es wird nicht empfohlen, Ansichtsdaten zu aktualisieren. Änderungen an den Ansichtsdaten werden durch Bearbeiten der Daten in der tatsächlichen Datentabelle abgeschlossen.
Ändern Sie die Ansicht-
Methode 1: Verwenden Sie die CREATE OR REPLACE VIEW-Klausel, um die Ansicht zu ändern
SHOW TABLES;
DESC vu_emp4;
Hinweis: Die Aliase jeder Spalte in der CREATE VIEW-Klausel sollten jeder Spalte in der Unterabfrage entsprechen. Methode 2: ALTER VIEW
Die Syntax zum Ändern der Ansicht lautet:
ALTER VIEW View NameAS
Query Statementmysql> SHOW TABLE STATUS LIKE 'vu_emp4'\G;
*************************** 1. row ***************************
Name: vu_emp4
Engine: NULL
Version: NULL
Row_format: NULL
Rows: NULL
Avg_row_length: NULL
Data_length: NULL
Max_data_length: NULL
Index_length: NULL
Data_free: NULL
Auto_increment: NULL
Create_time: NULL
Update_time: NULL
Check_time: NULL
Collation: NULL
Checksum: NULL
Create_options: NULL
Comment: VIEW
1 row in set (0.00 sec)
ERROR:
No query specified
View löschen
mysql> SHOW CREATE VIEW vu_emp4\G;
*************************** 1. row ***************************
View: vu_emp4
Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`%` SQL SECURITY DEFINER VIEW `vu_emp4` AS select `vu_emp_dept`.`department_id` AS `department_id`,`vu_emp_dept`.`department_name` AS `department_name` from `vu_emp_dept`
character_set_client: utf8
collation_connection: utf8_general_ci
1 row in set (0.00 sec)
ERROR:
No query specified
Vor- und Nachteile der Ansicht
Vorteile:
Einfach zu bedienen. Reduzieren Sie die Datenredundanz :
Hoher Wartungsaufwand Kosten
Schlechte Lesbarkeit