MySQL-Ansichtskonzept
Die Ansicht selbst ist eine virtuelle Tabelle und speichert keine Daten. Wenn Sie SQL-Anweisungen für den Zugriff auf Ansichten verwenden, werden die erhaltenen Daten von MySQL aus anderen Tabellen generiert und die Ansicht und die Tabelle befinden sich im selben Namespace. Das Anzeigen von Abfragedaten ist relativ sicher. Es kann einige Daten und Strukturen verbergen und Benutzern nur erlauben, die Daten im Rahmen ihrer Berechtigungen anzuzeigen, wodurch komplexe Abfragen einfacher zu verstehen und zu verwenden sind.
Nutzung anzeigen
Im Folgenden wird die grundlegende Verwendung der Demonstrationsansicht basierend auf Benutzer- und Auftragsverwaltung beschrieben. (Freigabe von Online-Lernvideo-Tutorials: MySQL-Video-Tutorial)
Grundlegende Tabellenstruktur
CREATE TABLE v01_user ( id INT(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', user_name VARCHAR(20) DEFAULT NULL COMMENT '用户名', phone VARCHAR(20) DEFAULT NULL COMMENT '手机号', pass_word VARCHAR(64) DEFAULT NULL COMMENT '密码', card_id VARCHAR(18) DEFAULT NULL COMMENT '身份证ID', pay_card VARCHAR(25) DEFAULT NULL COMMENT '卡号', PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '用户表'; CREATE TABLE v02_order ( id INT(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', user_id INT(11) NOT NULL COMMENT '用户ID', order_no VARCHAR(32) DEFAULT NULL COMMENT '订单编号', good_name VARCHAR(60) DEFAULT NULL COMMENT '商品名称', good_id INT(11) DEFAULT NULL COMMENT '商品ID', num INT(11) DEFAULT NULL COMMENT '购买数量', total_price DECIMAL(10,2) DEFAULT NULL COMMENT '总价格', PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '订单表';
Grundlegende Syntax
CREATE OR REPLACE VIEW view_name AS select_statement
Hinweis: Tabellen und Ansichten teilen sich denselben Namensraum in der Datenbank, daher kann die Datenbank keine Tabellen und Ansichten mit demselben Namen enthalten.
Benutzerauftragsansicht
CREATE OR REPLACE VIEW user_order_view AS SELECT t1.id,t1.user_name,t2.order_no,t2.good_id, t2.good_name,t2.num,t2.total_price FROM v01_user t1 LEFT JOIN v02_order t2 ON t2.user_id = t1.id;
Aufruf anzeigen
Dies ist im Grunde dasselbe wie die MySQL-Tabellenabfrage, und es können verschiedene Abfragebedingungen verwendet werden.
SELECT * FROM user_order_view WHERE user_name='Cicada'; 查看视图 SHOW CREATE VIEW user_order_view ; 修改视图 ALTER VIEW view_name AS select_statement ; 删除视图 DROP VIEW [IF EXISTS] view_name ;
Ansichtsaktualisierung
Wenn bestimmte Bedingungen es zulassen, können Sie Daten aktualisieren, löschen oder sogar schreiben, indem Sie die Ansicht bearbeiten und so die in der Ansicht enthaltenen Informationen aktualisieren . Verwandte Tabellen.
UPDATE user_order_view SET user_name='smile' WHERE id='1';
Hier werden die Daten der v01_user-Tabelle aktualisiert, indem ein Aktualisierungsvorgang für die Ansicht ausgeführt wird. Wenn die Ansicht mithilfe spezieller Operationen wie Aggregatfunktionen und Gruppierung definiert wird, kann sie nicht aktualisiert werden. MySQL unterstützt das Erstellen von Triggern für Ansichten nicht.
Ansichtsimplementierung
1. Temporärer Tabellenalgorithmus
Der Server speichert die SQL-Daten der Ansichtsabfrage in einer temporären Tabelle Tabelle ist Die Ansichtsfeldstruktur muss konsistent sein. Dies ist die tabuisierteste Operation bei der SQL-Abfrageoptimierung. Eine etwas größere Datenmenge beeinträchtigt die Leistung erheblich. Wenn die Ansicht keine Eins-zu-Eins-Zuordnungsbeziehung zur Originaltabelle herstellen kann, wird eine temporäre Tabelle generiert. Dies zeigt auch, dass die Ansicht keine sehr einfache oder sogar sehr komplexe Funktion ist.
2. Zusammenführungsalgorithmus
Der Server führt die Abfrage basierend auf der in der Ansicht verwendeten Tabelle aus, führt schließlich die Abfragestruktur zusammen und gibt sie an den Client zurück.
3. Differenzmethode
Führen Sie die folgende Abfrageanweisung aus, um die Ausführungsleistungsparameter zu analysieren.
EXPLAIN SELECT * FROM user_order_view ;
Beobachten Sie das Feld „select_type“ im Abfrageergebnis. Wenn es DERIVED ist, bedeutet dies, dass eine temporäre Tabelle verwendet wird. Hier wird die Syntax der SQL-Ausführungsanalyse später im Abschnitt zur Optimierung ausführlich erläutert.
Hinweise
1. Leistungsprobleme
MySQL unterstützt das Erstellen von Indizes in Ansichten nicht, was zu einer starken Abfrageleistung führen kann Daher wird empfohlen, bei der Verwendung vorsichtig zu sein und es aus mehreren Blickwinkeln zu untersuchen und zu testen.
2. Spezielle Verwendung
Ansichtsbasierte Abfragen können einen Teil der Tabellenstruktur ändern, solange die Felder nicht in der Ansicht verwendet werden.
Empfohlene verwandte Artikel und Tutorials: MySQL-Tutorial
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der MySQL-Ansicht in einem Artikel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!