Probleme bei der Ausführungsreihenfolge von AND und OR in SQL-Anweisungen

Probleme bei der Ausführungsreihenfolge von AND und OR in SQL-Anweisungen

Frage

Beim Schreiben von Datenbank-SQL ist mir gestern ein Problem begegnet. Die Ursache des Problems liegt in der Ausführungspriorität der Schlüsselwörter AND und OR in SQL-Anweisungen. Lassen Sie uns dieses Problem testen.

Szenario

1. Es gibt eine Studententabelle „Student“, die Tabellenfelder umfassen ID (Primärschlüssel des Benutzers), Name (Benutzername), Grade (Klasse), Class (Klasse), Sex (Geschlecht). wie folgt:

Tabellenstruktur

2. Importieren Sie zehn Testdaten wie folgt in die Tabelle:

Tabellendaten

3. Nun müssen Sie herausfinden, welche Schülerinnen in der 1. Klasse weiblich sind, bzw. welche Schülerinnen in der 2. Klasse weiblich sind. Die SQL-Anweisung lautet wie folgt:
Wählen Sie * vom Schüler aus, wobei Geschlecht = 'Student' und Klasse = 1 oder Klasse = 2 ist.
Das Ergebnis der SQL-Abfrage entspricht jedoch nicht den Anforderungen. Die Ausführungsergebnisse lauten wie folgt:

Ausführungsergebnisse

Das Hinrichtungsergebnis ergab auch, dass in der 2. Klasse männliche Schüler anwesend waren, was offensichtlich falsch ist.

4. Ändern Sie die SQL-Anweisung und fügen Sie Klammern hinzu. wie folgt:

Wählen Sie * aus dem Schüler aus, wobei Geschlecht = "Student" und (Klasse = 1 oder Klasse = 2)

Das Ergebnis der SQL-Abfrage erfüllt die Anforderungen

analysieren

Im obigen Szenario liegt der Schlüssel zum Problem in der Ausführungsreihenfolge von UND und ODER.
Den Daten zufolge ist die Priorität relationaler Operatoren von hoch nach niedrig: NICHT > UND > ODER
Wenn nach „Where“ eine „OR“-Bedingung steht, trennt „OR“ automatisch die linke und rechte Abfragebedingung.
Genau wie die erste Anweisung im obigen Szenario ist ihre Abfragebedingung in zwei Teile unterteilt (oder):

1. Geschlecht = „weiblich“ und Klasse = 1
2. Klasse = 2

Dabei geht es darum, die Schülerinnen der 1. Klasse und die Schülerinnen der 2. Klasse zu ermitteln. Erfüllt nicht die Anforderungen der ursprünglichen Abfrage.
Die Lösung besteht darin, Klammern zu verwenden, um die Ausführungsreihenfolge zu unterscheiden. <br /> Wie in der zweiten Anweisung im obigen Szenario ist die Abfragebedingung in zwei Teile (und) unterteilt:

1. sex = 'weiblich' 
2. (Klasse=1 bzw. Klasse=2)

Das könnte Sie auch interessieren:
  • Grafische Beschreibung der Ausführungsreihenfolge von SQL-Anweisungen
  • Detaillierte Erläuterung der Ausführungsreihenfolge von SQL-Anweisungen
  • Detaillierte Erläuterung der Ausführung von SQL-Anweisungen (Übersicht über die MySQL-Architektur -> Abfrageausführungsprozess -> SQL-Analysereihenfolge)
  • Lernen Sie die Ausführungsreihenfolge von SQL-Abfragen von Grund auf
  • In diesem Artikel erfahren Sie, wie die Ausführungsreihenfolge von SQL lautet

<<:  Linux (Center OS7) installiert JDK, Tomcat und MySQL, um eine Ausführungsumgebung für Java-Webprojekte zu erstellen.

>>:  So verwenden Sie Axios, um mehrere wiederholte Anfragen in einem Projekt zu filtern

Artikel empfehlen

So installieren Sie eine ISO-Datei im Linux-System

Wie installiere ich ISO-Dateien unter einem Linux...

Projektpraxis zum Bereitstellen von Docker-Containern mit Portainer

Inhaltsverzeichnis 1. Hintergrund 2. Bedienungssc...

Detaillierte Erklärung der Destrukturierungszuweisung in JavaScript

Inhaltsverzeichnis Konzept Array-Destrukturierung...

5 Möglichkeiten, um festzustellen, ob ein Objekt in JS ein leeres Objekt ist

1. Konvertieren Sie das JSON-Objekt in eine JSON-...

Abkürzung für HTML DOCTYPE

Wenn Ihr DOCTYPE wie folgt ist: Code kopieren Der ...

Tutorial zur Installation und Konfiguration der Centos7-MySQL-Datenbank

1. Systemumgebung Die Systemversion nach dem Yum-...

Eine kurze Analyse der Verwendung von USING und HAVING in MySQL

Dieser Artikel veranschaulicht anhand von Beispie...

Vue.js implementiert ein einfaches Faltpanel

In diesem Artikelbeispiel wird der spezifische Co...

Zusätzliche Anweisungen zur Verwendung von Gettern und Aktionen in Vuex

Vorbemerkungen 1.Unterschiede zwischen Vue2.x und...

JavaScript zur Implementierung des Flugzeugkriegsspiels

In diesem Artikel erfahren Sie, wie Sie mit Canva...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 5.7.27 winx64

In diesem Artikel wird die Installations- und Kon...

Gründe und Lösungen für die Auswahl des falschen Index durch MySQL

In MySQL können Sie mehrere Indizes für eine Tabe...