Zusammenfassung der allgemeinen MySQL-SQL-Anweisungen einschließlich komplexer SQL-Abfragen

Zusammenfassung der allgemeinen MySQL-SQL-Anweisungen einschließlich komplexer SQL-Abfragen

1. Komplexe SQL-Abfragen

1.1. Einzeltabellenabfrage

(1) Wählen Sie die angegebene Spalte aus

[Beispiel] Abfrage der Matrikel-ID und des Namens aller Studenten

Wählen Sie Sno als Matrikelnummer und Sname als Namen des Studenten.
Wählen Sie Sno, Sname vom Studenten aus;

(2) Alle Spalten abfragen

[Beispiel] Detaillierte Informationen aller Studierenden abfragen

wähle * vom Studenten;

(3) Benennen Sie die angegebenen Spalten nach der Abfrage

[Beispiel] Abfrage der Spalten „Name“ und „Geburtsjahr“ aller Schüler

Wählen Sie Sname als Namen, (2014-Sage) als Geburtsjahr des Schülers;
Wählen Sie Sname (2014-Sage) vom Studenten aus;

(4) Eliminieren Sie Zeilen mit doppelten Werten

[Beispiel] Abfrage der Studenten-ID des Studenten, der den Kurs belegt hat

Wählen Sie eine eindeutige Sno als Matrikelnummer des Studenten, der den Kurs bei SC belegt hat;
Wählen Sie ein anderes Sno als SC aus.

(5) Wählen Sie mehrere Tupel in der Tabelle aus (die die Bedingungen erfüllen).

1.2 Größenvergleich

[Beispiel] Abfrage der Liste aller Studierenden im Fachbereich Informatik (IS)

Wählen Sie Sname als Studentennamen aus dem Studenten, bei dem Sdept = "IS" ist.

[Beispiel] Abfrage der Namen und des Alters aller Schüler unter 20 Jahren

Wählen Sie Sname als Namen, Sage als Alter des Schülers, wobei Sage < 20 ist;

1.3 Umfang festlegen

[Beispiel] Abfrage des Namens, der Abteilung und des Alters aller Studierenden zwischen 20 und 23 Jahren (einschließlich)

Wählen Sie Sname als Namen, Sdept als Abteilung und Sage als Alter des Studenten, wobei Sage zwischen 20 und 23 liegt.

Beachten Sie den Abstand zwischen kleinen und großen Zahlen.

1.4. in und nicht in bestimmen den Satz

[Beispiel] Abfrage der Namen und Geschlechter aller Studierenden in den IS- und CS-Abteilungen

Wählen Sie Sname als Namen und Ssex als Geschlecht des Studenten, wobei Sdept = „IS“ oder Sdept = „CS“ ist.
Wählen Sie Sname als Namen und Ssex als Geschlecht des Studenten aus, in dem sich die Abteilung befindet ('IS', 'CS');

[Beispiel] Abfrage der Namen und des Alters von Studierenden, die weder in der IS-Abteilung noch in der MA-Abteilung sind

Wählen Sie Sname als Namen, Sage als Alter des Schülers, wobei Sdept !='IS' und Sdept!='CS';
Wählen Sie Sname als Namen, Sage als Alter des Schülers, wobei Sdept nicht in („IS“, „MA“);

1.5. Zeichenübereinstimmung (wie % _ )

[Beispiel] Abfrage des Namens und Geschlechts aller Schüler mit dem Nachnamen Li

Wählen Sie Sname als Namen und Ssex als Geschlecht des Schülers, wobei Sname wie „李%“ aussieht.

[Beispiel] Abfrage der Matrikelnummer, des Namens und der Fakultät aller im Jahr 2002 eingeschriebenen Studenten

Wählen Sie Sno als Matrikelnummer, Sname als Namen, Sdept als Abteilung des Studenten, wobei Sno beispielsweise „2002%“ lautet.

[Beispiel] Abfrage aller Studenteninformationen, deren Nachname nicht „Liu“ ist

Wählen Sie * vom Studenten aus, wobei Sname nicht wie „刘%“ ist;

[Beispiel] Suche nach Kursnummern, Kursnamen und Credits, die „Daten“ enthalten

Wählen Sie Cno als Kursnummer, Cname als Kursnamen, Ccredit als Credits aus dem Kurs, wobei Cname wie „% data%“ aussieht.

Zusammenfassen:

select * aus Kurs, wo CName wie ‚%数据%‘ aussieht; Zeichenfolge, die Daten enthältselect * aus Kurs, wo CName wie ‚数据%‘ aussieht; Zeichenfolge, die mit Daten beginntselect * aus Kurs, wo CName wie ‚%数据‘ aussieht; Zeichenfolge, die mit Daten endet

1.6. Abfragen mit Nullwerten (ist null)

[Beispiel] Abfrage der Kursnummer und des Kursnamens ohne Voraussetzungskurse

Wählen Sie Cno als Kursnummer, Cname als Kursnamen, Cpno aus dem Kurs, wobei Cpno null ist;

[Beispiel] Abfrage der Matrikel-ID, Kurs-ID und Noten aller Studierenden mit Noten

Wählen Sie Sno als Matrikelnummer, Cno als Kursnummer und Grade als Note von SC, wobei Grade nicht null ist.

1.7. Abfrageergebnisse sortieren (order by)

[Beispiel] Fragen Sie die Matrikel-ID und die Noten der Studierenden ab, die Kurs 3 belegt haben, und sortieren Sie die Ergebnisse in absteigender Reihenfolge nach Note.

Wählen Sie Sno als Matrikelnummer, Grade als Note von SC, wobei Cno=3 ist, sortieren Sie nach Note absteigend;

[Beispiel] Abfrage der Matrikel-ID und Noten der Studierenden, die Kurs 3 belegt haben und Sortierung der Ergebnisse aufsteigend nach Noten.

Wählen Sie Sno als Matrikelnummer, Grade als Note von SC, wobei Cno=3 ist, sortieren Sie nach Note aufsteigend;

1.8 Aggregatfunktionen

Anzahl, Summe, Durchschnitt, Maximum, Minimum

[Beispiel] Abfrage der Gesamtzahl der Studierenden

Wählen Sie count(*) als Gesamtzahl der Studenten aus Student;

[Beispiel] Abfrage der Gesamtcredits aller Kurse

Wählen Sie „Summe(Ccredit)“ als Gesamtcredits für alle Kurse des Kurses.

[Beispiel] Abfrage des Durchschnittsalters aller Schüler

Wählen Sie „avg(Sage)“ als Durchschnittsalter der Schüler.

[Beispiel] Abfrage der höchsten Punktzahl von Kurs 1

Wählen Sie max(Note) als höchste Punktzahl von Kurs 1 von SC, wobei Cno=1 ist;

1.9. Gruppenstatistiken (Gruppieren nach)

[Beispiel] Prüfen Sie, wie viele männliche und weibliche Studenten es gibt.

Wählen Sie Ssex als Geschlecht, count(*) als Zahl aus der Studentengruppe nach Ssex;

[Beispiel] Fragen Sie die Kursnummer und die Durchschnittsnote jedes Kurses ab.

Wählen Sie Cno als Kursnummer, avg(Grade) als Durchschnittsnote der SC-Gruppe nach Cno;

[Beispiel] Abfrage der Matrikel-ID und der Anzahl der Wahlfächer für Studenten, die 3 oder mehr Kurse belegt haben.

Wählen Sie Sno als Studentennummer, count(course.Cno) als Anzahl der Wahlfächer Von SC,course
Wobei course.Cno=SC.Cno
Gruppieren nach Sno
Mit Count(course.Cno)>=3;

Auf das Schlüsselwort having folgt direkt eine Aggregatfunktion.

Der Grund für das Hinzufügen der HAVING-Klausel in SQL besteht darin, dass das Schlüsselwort WHERE nicht mit Aggregatfunktionen verwendet werden kann.

SELECT Spaltenname, Aggregatfunktion(Spaltenname)
FROM Tabellenname
WHERE Spaltenname Operatorwert
GROUP BY Spaltenname
HAVING Aggregatfunktion (Spaltenname) Operatorwert

[Beispiel] Abfrage der Matrikel-ID und der Anzahl der Wahlfächer für Studenten, die mehr als 2 Kurse (einschließlich 2, aber ohne Kurs 1) belegt haben.

Wählen Sie Sno als Studentennummer, count(course.Cno) als Anzahl der Wahlfächer Von SC,course
Wobei course.Cno=SC.Cno und course.Cno !=1
Gruppieren nach Sno
Mit Count(course.Cno)>=2;

[Beispiel] Ermitteln Sie die Matrikelnummern von Studierenden, die in mehr als 2 Fächern durchgefallen sind.

Wählen Sie Sno
von sc
Wobei sc.Grade<60
Gruppieren nach Sno
Anzahl (Cno) >= 2 haben;

[Beispiel] Abfrage der Kursnummern und der Anzahl der eingeschriebenen Studenten in Kursen mit mehr als 2 (einschließlich 2) Studenten.

Wählen Sie Cno, count(Sno)
Von SC
Gruppieren nach Cno
Mit count(sno)>=2

2. Verbindungsabfrage

(1) Äquivalente und nicht äquivalente Join-Abfragen

[Beispiel] Abfrage aller Studenten und ihrer Wahlfächer

Wählen Sie student.Sno als Matrikelnummer,course.Cno als Wahlfachnummer,SC.Grade als Note von Student,Kurs,SC 
wobei student.Sno=SC.Sno und course.Cno=SC.Cno;

(2) Selbstanschluss

[Beispiel] Abfrage der indirekten Wahlfächer jedes Studenten

als Matrikelnummer wählen Sie SC.Sno,
FIRST.Cname als direktes Wahlfach,
SECOND.Cname als indirekter Wahlfachkurs aus SC,
natürlich als ERSTER,
Kurs als ZWEITER
wobei FIRST.Cno = SC.Cno
und ERSTE.Cpno=ZWEITE.Cno;

(3) Äußerer Join

[Beispiel] Abfrage der Wahlfächer aller Studierenden (einschließlich der Studierenden, die keine Wahlfächer belegt haben)

Wählen Sie student.Sno als Matrikelnummer,
Sname als Name,
sc.Cno als Wahlfachnummer des Studierenden 
LINKER OUTER JOIN SC ON student.Sno=SC.Sno;

Mit Join können Daten aus zwei oder mehr Tabellen basierend auf der Beziehung zwischen den Spalten in diesen Tabellen abgefragt werden.

JOIN: Gibt Zeilen zurück, wenn mindestens eine Übereinstimmung in der Tabelle vorhanden ist. LEFT JOIN: Gibt alle Zeilen aus der linken Tabelle zurück, auch wenn in der rechten Tabelle keine Übereinstimmung vorhanden ist. RIGHT JOIN: Gibt alle Zeilen aus der rechten Tabelle zurück, auch wenn in der linken Tabelle keine Übereinstimmung vorhanden ist. FULL JOIN: Gibt Zeilen zurück, solange in einer der Tabellen eine Übereinstimmung vorhanden ist.
Der UNION-Operator wird verwendet, um die Ergebnismengen von zwei oder mehr SELECT-Anweisungen zu kombinieren.
Beachten Sie, dass die SELECT-Anweisungen innerhalb der UNION die gleiche Spaltenanzahl haben müssen. Spalten müssen außerdem ähnliche Datentypen aufweisen. Außerdem muss die Reihenfolge der Spalten in jeder SELECT-Anweisung gleich sein.

3. Verschachtelte Abfragen

(1) Unterabfrage mit IN-Prädikat (Attribut in (Abfrageergebnis der Unterabfrage))

[Beispiel] Fragen Sie die Studenteninformationen von Wang Min ab, der in derselben Abteilung ist.

wählen *
vom Studenten
wobei Sdept in (
 wählen Sie Sdept
 vom Studenten
 wobei Sname = "Name"
);

[Beispiel] Fragen Sie die Studenteninformationen ab, die nicht zur selben Abteilung wie Wang Min gehören.

wählen *
vom Studenten
wo Sdept nicht in (
 wählen Sie Sdept
 vom Studenten
 wobei Sname = 'Wang Min'
);

[Beispiel] Abfrage der Matrikelnummer und des Namens der Studierenden, die die Lehrveranstaltung „Informationssysteme“ belegt haben.

Wählen Sie student.Sno als Matrikelnummer, Sname als Name des Studenten, SC
wobei student.Sno=SC.Sno und Cno in (
 wählen Sie Cno
 vom Kurs
 wobei Cname = "Informationssystem"
)

[Beispiel] Suchen Sie die Matrikel-ID und den Namen der Studenten, die bei Liu Chen Unterricht genommen haben. (Annahme: Zu einem Kurs gibt es nur eine Klasse)

Wählen Sie einen eindeutigen Studenten aus. Sno als Matrikelnummer, Sname als Name des Studenten, SC
wobei student.Sno=SC.Sno und Cno in (
 wählen Sie Cno
 von SC,Student
 wobei SC.Sno=student.Sno und student.Sno in (
 wählen Sie Sno
 vom Studenten
 wobei student.Sname='Liu Chen'
 )
)
  • Die innere In-Abfrage ermittelt Liu Chens Studentenausweisnummer (sno) und die äußere In-Abfrage ermittelt die Kursnummer des Kurses, den Liu Chen belegt.

(2) Unterabfragen mit Vergleichsoperatoren (=, >=, <=, <> oder !=)

[Beispiel] Alle Studenteninformationen in derselben Abteilung wie Wang Min abfragen (= Urteil)

wählen *
vom Studenten
wobei Sdept=(
 wählen Sie Sdept
 vom Studenten
 wobei Sname = "Name"
)

[Beispiel] Suchen Sie die Kursnummer für jeden Studenten, dessen Punktzahl die Mindestpunktzahl des Kurses überschreitet. (Nicht die niedrigste Punktzahl unter ähnlichen Kursen), wenn das Ergebnis einer Unterabfrage eine Zahl zurückgibt, kann diese Unterabfrage als Zahl verwendet werden? Sie können das In-Symbol oder das Größer-als- bzw. Kleiner-als-Symbol verwenden.

wählen Sie Cno
von SC a
wobei Note> (
 wähle min(Klasse)
 von SC b
 wobei a.Cno = b.Cno
)

[Beispiel] Ermitteln Sie die Kursnummer jedes Studenten, dessen Punktzahl die durchschnittliche Punktzahl seiner Wahlfächer übersteigt.

wählen Sie Cno
von SC a
wobei Note> (
 wähle Durchschnitt (Note)
 von SC b
 wobei a.Sno = b.Sno
)

(3) Unterabfragen mit ANY- oder ALL-Prädikaten

  • ANY bedeutet „jeder“, ALL bedeutet „alle“ und kann vor den Klammern der Unterabfrage verwendet werden.

[Beispiel] Abfrage von Name, Geschlecht, Alter und Fachbereich von Studierenden anderer Fachbereiche, die jünger sind als ein Studierender des Fachbereichs Informatik.

Wählen Sie Sname als Namen, Ssex als Geschlecht, Sage als Alter, Sdept als Abteilung des Studenten
wobei Sage <(
 Wählen Sie Sage
 vom Studenten
 wobei Sdept='CS'
);

[Beispiel] Finden Sie die Namen und das Alter von Studierenden anderer Fakultäten, die jünger sind als alle Studierenden der Informatikfakultät.

Wählen Sie Sname als Namen und Sage als Alter des Schülers.
wobei Sdept<>'CS' und Sage <ALL (
 Wählen Sie Sage
 vom Studenten
 wobei Sdept='CS'
);

(4) Unterabfrage mit Exists-Prädikat

[Beispiel] Abfrage der Namen aller Studierenden, die Kurs 1 belegt haben.

Wählen Sie Sname als Namen des Schülers
wobei Existiert (
 wählen *
 von SC
 wobei Cno=1 und Sno=Student.Sno
);

4. Sammlungsabfrage

(1) Union

[Beispiel] Abfrage der detaillierten Informationen von Studierenden des Fachbereichs Informatik und Studierenden unter 19 Jahren.

wählen *
vom Studenten
wobei student.Sdept='CS'
Union
wählen *
vom Studenten
wobei student.Sage<=19;

(2) SCHNITTSTELLE

[Beispiel] Fragen Sie die Schnittmenge der Detailinformationen von Studenten ab, die Kurs 1 belegt haben und nicht älter als 19 Jahre sind.

Wählen *
von Student,SC
wobei student.Sno=SC.Sno und SC.Cno=1
SCHNEIDEN
Wählen *
vom Studenten
wobei student.Sage<=19;

(3) AUSSER

[Beispiel] Abfrage des Unterschieds zwischen den Detailinformationen von Studierenden im Fachbereich Informatik und Studierenden, die nicht älter als 19 Jahre sind.

wählen *
vom Studenten
wobei student.Sdept='SC'
AUSSER
wählen *
vom Studenten
wobei student.Sage<=19;

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an

Das könnte Sie auch interessieren:
  • Verwendung des MySQL Query Rewrite-Plugins
  • Ein Artikel zum Verständnis des Ausführungsprozesses von MySQL-Abfrageanweisungen
  • Detaillierte Erläuterung der Idee, Python-SQL-Anweisungen zum Ausführen von Fuzzy-Abfragen mit mehreren Bedingungen in der MySQL-Datenbank zu verwenden
  • Zusammenfassung der MySQL-Datenbank-ähnlichen Anweisung zur Platzhalter-Fuzzy-Abfrage
  • Eine kurze Diskussion über das Problem der Parameterübergabe bei der Verwendung in pymysql-Abfrageanweisungen
  • Sammlung von MySQL-Fuzzy-Abfrageanweisungen
  • Detaillierte Erläuterung des Prozesses zum Abfragen von Benutzerberechtigungen mithilfe von MySQL-Anweisungen
  • Detaillierte Erläuterung der Ausführung von SQL-Anweisungen (Übersicht über die MySQL-Architektur -> Abfrageausführungsprozess -> SQL-Analysereihenfolge)
  • Drei Strategien zum Umschreiben von MySQL-Abfrageanweisungen

<<:  Das WeChat-Applet realisiert die Chatroom-Funktion

>>:  Verwenden von JS zum Implementieren eines einfachen Rechners

Artikel empfehlen

Detaillierte Erklärung der neuen Erfahrung von Vite

Was ist Vite? (Es ist ein neues Spielzeug im Fron...

Verwendung des Linux Dig-Befehls

Dig-Einführung: Dig ist ein Tool, das DNS einschl...

Verwendung der MySQL-Zeitdifferenzfunktionen TIMESTAMPDIFF und DATEDIFF

Verwendung der Zeitdifferenzfunktionen TIMESTAMPD...

CSS löst das Problem der Front-End-Bildverformung perfekt

Ich habe in der Toutiao IT School einen Artikel g...

CSS3-Kategoriemenüeffekt

Die CSS3-Kategoriemenüeffekte sind wie folgt: HTM...

MySQL-Optimierungsstrategie (empfohlen)

Zusammenfassend: 1. Berücksichtigen Sie die Leist...

Verwenden von NTP zur Zeitsynchronisierung in Ubuntu

NTP ist ein TCP/IP-Protokoll zur Zeitsynchronisie...

Einführung in die CSS-Stilklassifizierung (Grundkenntnisse)

Klassifizierung von CSS-Stilen 1. Interner Stil -...

JavaScript implementiert die asynchrone Übermittlung von Formulardaten

In diesem Artikelbeispiel wird der spezifische Ja...

JS implementiert Click-Drop-Effekt

js realisiert den Spezialeffekt des Klickens und ...

vue-pdf realisiert Online-Dateivorschau

In diesem Artikelbeispiel wird der spezifische Co...