Beispielanalyse der Ausführungsreihenfolge und Schreibreihenfolge von MySQL-Anweisungen

Beispielanalyse der Ausführungsreihenfolge und Schreibreihenfolge von MySQL-Anweisungen

Die vollständige Syntax der Select-Anweisung lautet:

WÄHLEN 
DISTINCT <Auswahlliste>
VON <linke_Tabelle>
<join_type> JOIN <rechte_Tabelle>
ON <Beitrittsbedingung>
WHERE <Wo_Bedingung>
GROUP BY <Gruppenliste>
HAVING <Haben_Bedingung>
ORDER BY <Bestellbedingung>
LIMIT <Grenzwert_Nummer>

Ausführungsreihenfolge:

von →Verbinden →auf →wo →Gruppieren nach →Haben →Auswählen →Sortieren nach →Begrenzen

(1) Die Rolle jedes Schlüsselworts:

from: Aus welcher Datentabelle möchten Sie Daten abrufen? Wenn ein Join vorhanden ist, führen Sie ein kartesisches Produkt (Cross Join) für die ersten beiden Tabellen in der FROM-Klausel aus, um eine temporäre Tabelle (n×m Zeilen) zu generieren.

ein: Die obigen temporären Tabellen bedingt filtern

links/rechts (verbinden): Ergänzen Sie die linke oder rechte Tabelle um diese vollständig zu halten. Wenn mehrere verknüpfte Tabellen vorhanden sind, führt die Zwischentabelle die beiden obigen Schritte für die nächste Tabelle fort.

  • wobei: Bedingungen zum Filtern der Daten in der Tabelle
  • Gruppieren nach: So gruppieren Sie die oben gefilterten Daten

Summe: Aggregatfunktion

  • Having: Bedingungen zum Filtern der oben gruppierten Daten
  • select: Zeigen Sie an, welche Spalte im Ergebnissatz oder das Berechnungsergebnis der Spalte

unterscheidbar:

  • Sortieren nach: die Reihenfolge, in der die zurückgegebenen Daten angezeigt werden sollen
  • limit: Begrenzen Sie die Anzahl der zurückgegebenen Abfrageergebnisse

(2) Der Unterschied zwischen on und where:

  • Die Screening-Bedingungen nach a.on gelten hauptsächlich für verwandte Tabellen [und sind nicht auf die Screening-Bedingungen der Haupttabelle anwendbar].
  • b. Wenn Sie nach dem Herstellen der Verbindung filtern möchten, sollten Sie die Bedingung nach „where“ einfügen. Wir müssen Assoziationstabellen anders behandeln. Wenn Sie nach einer bedingten Abfrage eine Verbindung herstellen möchten, sollten Sie die Abfrage nach „on“ einfügen.
  • c. Die Filterbedingung für die Haupttabelle sollte nach „where“ und nicht nach „on“ platziert werden.

(3) Der Unterschied zwischen „haben“ und „wo“:

  • a.having kann nur nach group by verwendet werden, um die gruppierten Ergebnisse zu filtern (d. h., die Voraussetzung für die Verwendung von having ist die Gruppierung).
  • b.where muss vor „group by“ stehen, also vor „having“.
  • Aggregatfunktionen sind im bedingten Ausdruck nach „where“ nicht zulässig, „having“ jedoch schon.

(4) Verwendung von count

Wenn Sie count(Spaltenname) verwenden und in einer Spalte ein Nullwert erscheint, wird count(*) trotzdem berechnet, count(Spaltenname) jedoch nicht.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Analyse der Ausführungsreihenfolge von T-SQL-Abfrageanweisungen
  • Detaillierte Erläuterung der Ausführung von SQL-Anweisungen (Übersicht über die MySQL-Architektur -> Abfrageausführungsprozess -> SQL-Analysereihenfolge)
  • Django führt native MySQL-Anweisungen aus, um eine Prozessanalyse zu implementieren
  • Der Prozess und das Prinzip der Analyse und Ausführung von SQL-Anweisungen

<<:  Nachdem Webpack-cli erfolgreich installiert wurde, prüfen Sie den Fehlerfall webpack -v für Details.

>>:  Eine kurze Erläuterung zum Ändern/Festlegen der Umgebungsvariable JAVA_HOME unter Linux

Artikel empfehlen

Schritte zum Anpassen des Symbols in Vue

ant-design-vue passt die Verwendung von Ali Iconf...

Detaillierte Erklärung zur Verwendung von umask unter Linux

Ich habe vor Kurzem angefangen, Linux zu lernen. ...

Detaillierte Erklärung des Skript-Debugging-Mechanismus in Bash

Ausführen des Skripts im Debugmodus Sie können da...

MySQL-Grundlagen in 1 Stunde

Inhaltsverzeichnis Erste Schritte mit MySQL MySQL...

Detaillierte Installationshistorie von Ubuntu 20.04 LTS

In diesem Artikel wird die Erstellung einer USB-S...

Lombok-Implementierung JSR-269

Vorwort Einführung Lombok ist ein praktisches Too...

Lösung für die Upload-Einschränkung von Element-ui-Uploaddateien

Frage Die Angabe des Typs der hochgeladenen Datei...

Jenkins verpackt Microservices, um Docker-Images zu erstellen und auszuführen

Inhaltsverzeichnis Umgebungsvorbereitung Start 1....

MySQL query_cache_type-Parameter und Verwendungsdetails

Der Zweck der Einrichtung eines MySQL-Abfragecach...

JS implementiert einfachen Kalendereffekt

In diesem Artikel wird der spezifische JS-Code zu...