Dieser Artikel fasst die Prinzipien und die Verwendung von MySQL-Ansichten zusammen. Teilen Sie uns die Einzelheiten zu Ihrer Information mit: 1. Was ist eine Ansicht? Eine Ansicht ist eine virtuelle Tabelle in einer Computerdatenbank, deren Inhalt durch eine Abfrage definiert wird. Wie eine echte Tabelle besteht eine Ansicht aus einer Reihe benannter Datenspalten und -zeilen. Eine Ansicht liegt allerdings nicht als gespeicherter Satz von Datenwerten in der Datenbank vor. Die Zeilen- und Spaltendaten stammen aus den Tabellen, auf die von der Abfrage verwiesen wird, die die Ansicht definiert, und werden dynamisch generiert, wenn auf die Ansicht verwiesen wird. Einfach ausgedrückt ist eine Ansicht eine Tabelle, die aus den Ergebnissen ihrer Definition besteht. Beispiel: Definieren Sie eine Klassentabelle class (ID, Name) und eine Studententabelle student (id, class_id, Name). Wenn die Datentabellenstruktur komplex ist, wir uns aber nur für einen Teil der Daten interessieren, können wir Ansichten verwenden, um die Daten zu definieren, die für uns wichtig sind. Erstellen Sie eine Ansicht: Kopieren Sie den Code wie folgt: Erstellen Sie die Ansicht „v_stu“ als „select c.name als c_name, s.name als stu_name“ von Student s, Klasse c, wobei c.id = s.class_id Abfragesicht v_stu wähle * aus v_stu
2. Warum Ansichten verwenden? 1. Sicherheit . Dies geschieht im Allgemeinen folgendermaßen: Erstellen Sie eine Ansicht und definieren Sie die Daten, mit denen die Ansicht arbeitet. Binden Sie dann die Benutzerberechtigungen an die Ansicht. Diese Methode wird verwendet Eine Funktion wurde hinzugefügt: Die Grant-Anweisung kann Berechtigungen für Ansichten erteilen. 2. Verbesserte Abfrageleistung . 3. Bei flexiblen Funktionsanforderungen muss die Struktur der Tabelle geändert werden, was zu einem hohen Arbeitsaufwand führt. Dann können Sie eine virtuelle Tabelle verwenden, um weniger Änderungen vorzunehmen. Dies ist in der tatsächlichen Entwicklung nützlicher. Beispiel: Wenn aus irgendeinem Grund Tabelle A und Tabelle B zusammengeführt werden müssen, um eine neue Tabelle C zu bilden. Schließlich wird weder Tabelle A noch Tabelle B existieren. Da die SQL-Anweisungen im ursprünglichen Programm auf Abfragen an Tabelle A und Tabelle B basierten, muss eine große Anzahl von SQL-Anweisungen neu geschrieben werden (um mit Tabelle C zu arbeiten). Und über die Ansicht können Sie keinerlei Änderungen vornehmen. Definieren Sie zwei Ansichten mit denselben Namen wie die ursprünglichen Tabellen a und b. Die Ansichten a und b vervollständigen die Inhaltsextraktion aus Tabelle c. Hinweis: Bei Verwendung dieser Lösung ist es umso besser, je detaillierter Ihr Verständnis der Ansicht ist. Denn die Verwendung einer Ansicht unterscheidet sich hinsichtlich der Syntax nicht von der Verwendung einer Tabelle. Wenn der Ansichtsname beispielsweise „a“ lautet, lautet die Abfrage immer noch „ 4. Komplexe Abfrageanforderungen. Sie können das Problem zerlegen und dann mehrere Ansichten erstellen, um die Daten zu erhalten. Durch die Kombination der Ansichten erhalten Sie das gewünschte Ergebnis. Funktionsweise der Ansicht: Wenn die Ansicht aufgerufen wird, wird das SQL in der Ansicht ausgeführt, um Datenabrufvorgänge durchzuführen. Der Inhalt einer Ansicht wird nicht gespeichert, sondern die Daten werden beim Verweisen auf die Ansicht abgeleitet. Dies nimmt keinen Platz weg und da es sich um eine unmittelbare Referenz handelt, stimmt der Inhalt der Ansicht immer mit dem Inhalt der tatsächlichen Tabelle überein. Welche Vorteile bietet diese Ansichtsgestaltung? Um Platz zu sparen und wenn der Inhalt immer konsistent ist, müssen wir den Inhalt der Ansicht nicht pflegen. Indem wir den Inhalt der realen Tabelle pflegen, können wir die Integrität der Ansicht sicherstellen. 3. Ausführungsmethode anzeigen Die Ansicht speichert keine echten Daten, sondern verweist nur auf die Daten in der echten Tabelle. Die referenzierten Daten werden durch ihre Definition bestimmt. Wenn wir die Ansicht abfragen, erhalten wir tatsächlich die Daten aus der Definition. In MySQL gibt es eine Datenbank namens infomation_schema. Diese Datenbank wird mit MySQL geliefert und speichert einige Metadaten der MySQL-Datenbank. Die sogenannten Metadaten beziehen sich auf die Tabelleninformationen von MySQL. Anzeigeinformationen, Spalteninformationen usw. Einfach ausgedrückt entspricht es einem Verzeichnis der MySQL-Datenbank. Alle Ansichten haben Speicherbeschreibungen in der Ansichtstabelle. Daraus können wir ersehen, wie MySQL funktioniert. wähle * aus v_stu; v_stu kann auch ein Tabellenname sein. Da die physischen Strukturen von Ansichten und Tabellen unterschiedlich sind, können echte Daten in der Tabelle gefunden werden, während die Ansicht die Definition finden muss, um die erforderlichen Daten zu erhalten. Woher wissen wir, dass v_stu eine Ansicht ist? Dies liegt daran, dass es eine Verzeichnisanzeigeroutine gibt, die dies tut. Ansichtsmechanismus: Es gibt zwei Mechanismen zur Ansichtsverarbeitung: Ersetzen und Materialisieren. ① Ersetzungstyp : Beim Bedienen einer Ansicht wird der Ansichtsname direkt durch die Ansichtsdefinition ersetzt und das Ergebnis wird zu „select * from (select c.name as c_name ,s.name as stu_name from student s,class c where c.id = s.class_id) , das dann zur Ausführung an MySQL übermittelt wird; ② Konkrete Form : MySQL erhält zuerst das Ergebnis der Ansichtsausführung, das ein Zwischenergebnis bildet und vorübergehend im Speicher gespeichert wird. Anschließend ruft die äußere Select-Anweisung diese Zwischenergebnisse (temporäre Tabellen) auf. Es scheint, dass beide das Ziel verfolgen, Ergebnisse zu erzielen. Es gibt Unterschiede in der Form, aber es scheint, dass der wesentliche Unterschied nicht erkannt wurde. Was sind die Unterschiede zwischen den beiden Methoden? Die Ersetzungsmethode besteht darin, die Ansichtsformel zu ersetzen und als Gesamt-SQL zu verarbeiten. Der konkrete Ansatz besteht darin, zuerst die Anzeigeergebnisse und dann die externen Abfrageanforderungen zu verarbeiten. Die Ersetzungsmethode lässt sich wie folgt zusammenfassen: Zuerst die Vorbereitung, dann die Ausführung. Die spezifische Art der Zusammenfassung besteht darin, sie separat zu behandeln. Welcher Weg ist besser? habe keine Ahnung. MySQL bestimmt, welche Methode für die Verarbeitung verwendet werden soll. Sie können beim Definieren der Ansicht auch angeben, welche Methode verwendet werden soll. Beispiel: Grammatik: ERSTELLEN [ALGORITHMUS]={UNDEFINED|MERGE|TEMPTABLE}] VIEW Ansichtsname [(Eigenschaftenliste)] AS SELECT-Anweisung [WITH [CASCADED|LOCAL] CHECK OPTION]; ALGORITHMUS hat drei Parameter: merge, TEMPTABLE, UNDEFINED Zusammenführen : Die Verarbeitungsmethode ist das Ersetzen, wodurch die Daten in der realen Tabelle aktualisiert werden können. TEMPTABLE : Materialisiert. Da die Daten in einer temporären Tabelle gespeichert sind, sind Update-Operationen nicht erlaubt! Wenn Ihre Parameterdefinition UNDEFINIERT ist (kein ALGORITHM-Parameter definiert). MySQL wählt bevorzugt die Ersetzungsmethode. Weil es effektiver ist. Beispiel: Erstellen Sie ALGORITHMUS = Ansicht v_stu zusammenführen als auswählen c.name als c_name, s.name als stu_name von Student s, Klasse c, wobei c.id = s.class_id Aktualisiere v_stu, setze c_name = '', wobei c_name = ''; Erfolgreiche Ausführung Erstellen Sie ALGORITHM=TEMPTABLEview v_stu als wählen Sie c.name als c_name, s.name als stu_name von Student s, Klasse c, wobei c.id = s.class_id Ausführung fehlgeschlagen, Aktualisierung nicht möglich! Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die folgenden Themen auf dieser Site ansehen: „MySQL-Abfragekenntnisse“, „MySQL-Transaktionsoperationskenntnisse“, „MySQL-gespeicherte Prozedurkenntnisse“, „Zusammenfassung der Kenntnisse zu MySQL-Datenbanksperren“ und „Zusammenfassung der allgemeinen MySQL-Funktionen“. Ich hoffe, dass dieser Artikel für jedermann beim Entwurf einer MySQL-Datenbank hilfreich ist. Das könnte Sie auch interessieren:
|
<<: So verwenden Sie JS WebSocket zur Implementierung eines einfachen Chats
Häufig verwendeter JavaScript-Code zum Erkennen d...
Im Frontend-Designentwurf sieht man oft Schließen...
In letzter Zeit stoße ich bei der Verwendung von ...
1. Voraussetzungen Bei der Entwicklung von Front-...
Inhaltsverzeichnis Was ist ein Listener in Vue? V...
Ein Kollege meldete, dass eine MySQL-Instanz aufg...
Inhaltsverzeichnis 1. Vorbereitung 2. Definieren ...
Heute werden wir ein Thunder Fighter-Tippspiel im...
Bedürfnisse entdecken Wenn nur ein Teil eines Ber...
In diesem Artikel wird eine kleine Demo gezeigt, ...
In diesem Artikel wird der Beispielcode einer CSS...
Inhaltsverzeichnis VARCHAR- und CHAR-Typen Abschl...
Formatkodierung 1. Bitte stellen Sie die Seitenbr...
Normalerweise verwende ich nginx als Reverse-Prox...
Beeinflusst Farbe die Website-Besucher? Vor einig...