Heim  >  Artikel  >  Datenbank  >  Detaillierte Erläuterung der MySQL-Ansicht in einem Artikel

Detaillierte Erläuterung der MySQL-Ansicht in einem Artikel

王林
王林nach vorne
2020-01-22 19:56:582161Durchsuche

Detaillierte Erläuterung der MySQL-Ansicht in einem Artikel

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen