Heim > Datenbank > MySQL-Tutorial > Teilen komplexer Abfragetechniken in MySQL

Teilen komplexer Abfragetechniken in MySQL

WBOY
Freigeben: 2023-06-14 13:08:34
Original
2011 Leute haben es durchsucht

MySQL ist ein weit verbreitetes relationales Datenbankverwaltungssystem. Komplexe Abfragen gehören zu den häufigsten Anforderungen bei der Verwendung von MySQL. Die elegante Ausführung komplexer Abfrageaufgaben ist eine wesentliche Fähigkeit für MySQL-Benutzer. In diesem Artikel werden einige komplexe Abfragetechniken in MySQL erläutert, um den Lesern zu helfen, MySQL-Abfragen besser zu beherrschen.

1. Verwenden Sie die WHERE-Klausel, um Daten zu filtern.

Die WHERE-Klausel ist eine sehr häufige Klausel in MySQL, die zur Begrenzung der zurückgegebenen Ergebnismenge verwendet wird. Durch die Verwendung der WHERE-Klausel können wir unnötige Daten einfach herausfiltern und qualifizierte Daten zurückgeben. Das Syntaxformat der WHERE-Klausel lautet wie folgt:

SELECT column_name(s) FROM table_name WHERE condition;
Nach dem Login kopieren

Bedingung ist dabei die zum Filtern verwendete Bedingung, bei der es sich um die folgenden Arten von Bedingungen handeln kann: Vergleichsbedingungen, Bereichsbedingungen, NULL-Bedingungen, logische Operatoren und Platzhalter usw.

Wenn wir beispielsweise alle Datensätze in der Schülertabelle abfragen möchten, deren Altersfeld größer oder gleich 18 Jahre ist, können wir so schreiben:

SELECT * FROM student WHERE age>=18;
Nach dem Login kopieren

Die Verwendung der WHERE-Klausel kann die Abfrageeffizienz und -begrenzung erheblich verbessern die Ergebnisse auf den Bereich, den wir brauchen. Gleichzeitig können wir auch mehrere Bedingungen zum Filtern von Daten verwenden, wie zum Beispiel:

SELECT * FROM student WHERE age>=18 AND gender='male';
Nach dem Login kopieren

2. Verwenden Sie JOIN, um mehrere Tabellen abzufragen.

JOIN ist eine der am häufigsten verwendeten Abfragemethoden in MySQL. Es können mehrere Tabellen abgefragt werden JOIN und Ergebnismengen werden basierend auf entsprechenden Feldern in diesen Tabellen kombiniert. Die JOIN-Operation kann zwei Datensätze gemäß bestimmten Bedingungen kombinieren, um den Zweck der „Verknüpfung“ zweier Tabellen zu erreichen.

Es gibt drei JOIN-Operationen: INNER JOIN, LEFT JOIN und RIGHT JOIN.

  1. INNER JOIN

INNER JOIN ist die am häufigsten verwendete JOIN-Operation. Sie wählt Datensätze aus zwei Tabellen gleichzeitig aus, die auch als Equijoin bezeichnet werden. Mit der ON-Klausel können Sie Join-Bedingungen angeben. Wenn wir beispielsweise den Namen des Schülers und den Namen seiner Klasse abfragen möchten, können wir so schreiben:

SELECT student.name, class.class_name FROM student 
INNER JOIN class ON student.class_id=class.id;
Nach dem Login kopieren

Dieses Abfrageergebnis gibt den Namen des Schülers und den Namen seiner Klasse zurück.

  1. LEFT JOIN

Die LEFT JOIN-Operation gibt alle Datensätze aus der linken Tabelle sowie Datensätze zurück, die mit der rechten Tabelle übereinstimmen (sofern vorhanden). Wenn in der rechten Tabelle kein passender Datensatz vorhanden ist, wird NULL zurückgegeben. Wenn wir beispielsweise den Namen der Klasse und den Namen der Schüler abfragen möchten, können wir so schreiben:

SELECT class.class_name, student.name FROM class 
LEFT JOIN student ON student.class_id=class.id;
Nach dem Login kopieren

Dieses Abfrageergebnis gibt die Namen aller Klassen und die Namen der Schüler zurück (falls es Schüler gibt). . Wenn keine Schüler vorhanden sind, wird im Namensfeld NULL angezeigt.

  1. RIGHT JOIN

Die RIGHT JOIN-Operation ähnelt der LEFT JOIN-Operation, außer dass sie alle Datensätze in der rechten Tabelle zurückgibt und die Datensätze zurückgibt, die die Bedingungen in der linken Tabelle erfüllen (falls vorhanden). Wenn in der linken Tabelle kein passender Datensatz vorhanden ist, wird NULL zurückgegeben. Wenn wir beispielsweise die Namen von Schülern und deren Klassen abfragen möchten, können wir so schreiben:

SELECT student.name, class.class_name FROM student 
RIGHT JOIN class ON student.class_id=class.id;
Nach dem Login kopieren

Dieses Abfrageergebnis gibt die Namen aller Schüler und die Namen ihrer Klassen (falls vorhanden) zurück Es gibt keine Klasse, die die Bedingungen erfüllt. Das Feld „Klassenname“ zeigt NULL an.

3. Unterabfrage verwenden

Unterabfrage bezieht sich auf die Verschachtelung einer Abfrage in einer anderen Abfrage. In MySQL können Unterabfragen in der WHERE-Klausel, der FROM-Klausel und der SELECT-Klausel verwendet werden. Mit Unterabfragen können sehr komplexe Abfrageanforderungen umgesetzt werden, beispielsweise die Abfrage des Maximal- oder Minimalwerts eines bestimmten Felds in einer Tabelle.

Wenn wir beispielsweise den Datensatz des Schülers mit der dritthöchsten Punktzahl unter den Schülern abfragen möchten, können wir so schreiben:

SELECT * FROM student WHERE score=(
  SELECT DISTINCT(score) FROM student GROUP BY score ORDER BY score DESC LIMIT 2,1);
Nach dem Login kopieren

Dieses Abfrageergebnis gibt den Datensatz des Schülers mit der dritthöchsten Punktzahl unter den zurück Studenten.

4. Temporäre Tabellen verwenden

Temporäre Tabellen sind eine sehr nützliche Funktion in MySQL. Sie können zur Laufzeit eine temporäre Tabelle erstellen und die Abfrageergebnisse in dieser temporären Tabelle speichern, um komplexere Datenoperationen durchzuführen. Temporäre Tabellen können mit der CREATE TEMPORARY TABLE-Anweisung erstellt oder mit der SELECT INTO-Anweisung erstellt werden.

Wenn wir beispielsweise die durchschnittliche Punktzahl und die höchste Punktzahl eines Schülers über die Jahre hinweg abfragen möchten, können wir das so schreiben:

CREATE TEMPORARY TABLE history_score (  
  `stu_id` INT NOT NULL,
  `avg_score` DECIMAL(5,2),
  `max_score` INT,
  PRIMARY KEY (`stu_id`)
);

INSERT INTO history_score(stu_id, avg_score, max_score)
SELECT s.id, AVG(score) AS avg_score, MAX(score) AS max_score FROM score AS sc 
INNER JOIN student AS s ON sc.stu_id = s.id
GROUP BY s.id;

SELECT st.name, sc.avg_score, sc.max_score FROM student AS st 
INNER JOIN history_score AS sc ON st.id = sc.stu_id;
Nach dem Login kopieren

Diese Abfrage erstellt eine temporäre Tabelle „history_score“ und speichert die durchschnittliche und die höchste Punktzahl Geben Sie die Punktzahl jedes Schülers im Laufe der Jahre in die temporäre Tabelle ein und verbinden Sie dann mit INNER JOIN den Namen des Schülers mit den Daten in dieser temporären Tabelle, um das endgültige Abfrageergebnis zu erhalten.

Zusammenfassung

Durch die Verwendung der oben genannten Techniken können wir komplexe Datenabfragen in MySQL durchführen, die Abfrageeffizienz verbessern und die Abfrageergebnisse besser an unsere Anforderungen anpassen. Natürlich müssen wir vor der Durchführung komplexer Abfragen die SQL-Syntax sowie die Datenstruktur und -eigenschaften von MySQL vollständig verstehen, damit wir diese erweiterten Abfragetechniken besser nutzen können.

Das obige ist der detaillierte Inhalt vonTeilen komplexer Abfragetechniken in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage