Zusammenfassung der MySQL-Ansichtsprinzipien und Anwendungsbeispiele

Zusammenfassung der MySQL-Ansichtsprinzipien und Anwendungsbeispiele

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

c_name stu_name
wu Klasse 1
li Klasse 2

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 „ select * from a “.

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:
  • Detaillierte Erklärung der Verwendung und Unterschiede von MySQL-Ansichten und -Indizes
  • Eine kurze Diskussion über MySql-Ansichten, Trigger und gespeicherte Prozeduren
  • Detaillierte Erläuterung zum Erstellen einer Ansicht (CREATE VIEW) und zu Nutzungsbeschränkungen in MySQL
  • Der Unterschied zwischen Update und Select in MySQL für einzelne und mehrere Tabellen sowie Ansichten und temporäre Tabellen
  • mysql drei Tabellen verbunden, um eine Ansicht zu erstellen
  • So erstellen Sie eine Ansicht für mehrere Tabellen in MySQL
  • MySQL-Ansichtsprinzipien und grundlegende Bedienungsbeispiele
  • Lösen des Problems der Import- und Exportabhängigkeit von MySQL-Ansichten mit Python
  • Detaillierte Analyse der Prinzipien und der Verwendung von MySQL-Ansichten

<<:  So verwenden Sie JS WebSocket zur Implementierung eines einfachen Chats

>>:  So installieren Sie Docker auf einem Linux-System und melden sich über SSH beim Docker-Container an

Artikel empfehlen

Das kürzeste JS, um festzustellen, ob es sich um IE6 handelt (IE-Schreibmethode)

Häufig verwendeter JavaScript-Code zum Erkennen d...

Eine kurze Diskussion zum Thema Ziehen und Sortieren von Elementen in Tabellen

In letzter Zeit stoße ich bei der Verwendung von ...

Vue Grundlagen Listener Detaillierte Erklärung

Inhaltsverzeichnis Was ist ein Listener in Vue? V...

So beheben Sie den abnormalen Start von mysql5.7.21

Ein Kollege meldete, dass eine MySQL-Instanz aufg...

Natives JS zur Implementierung der Drag-Position-Vorschau

In diesem Artikel wird eine kleine Demo gezeigt, ...

So wählen Sie zwischen MySQL CHAR und VARCHAR

Inhaltsverzeichnis VARCHAR- und CHAR-Typen Abschl...

So verwenden Sie den Nginx-Proxy zum Surfen im Internet

Normalerweise verwende ich nginx als Reverse-Prox...

Farbschemata für Websites Die richtigen Farben für Ihre Website auswählen

Beeinflusst Farbe die Website-Besucher? Vor einig...