Heim  >  Artikel  >  Datenbank  >  Wie schreibe ich chinesische und ausländische Verbindungen in MySQL?

Wie schreibe ich chinesische und ausländische Verbindungen in MySQL?

青灯夜游
青灯夜游Original
2020-10-19 14:23:514313Durchsuche

Chinesische und ausländische MySQL-Joins können in Left Outer Joins und Right Outer Joins unterteilt werden. Die Schreibmethoden sind „SELECT Feldname FROM Tabelle 1 LEFT OUTER JOIN Tabelle 2 ON-Klausel“ und „SELECT Feldname FROM Tabelle 1 RIGHT OUTER JOIN“. Tabelle 2 ON-Klausel". Satz".

Wie schreibe ich chinesische und ausländische Verbindungen in MySQL?

(Empfohlenes Tutorial: MySQL-Video-Tutorial)

Outer Joins können in Left Outer Joins und Right Outer Joins unterteilt werden

  • Left Outer Join: Enthält alle Zeilen der linken Tabelle (unabhängig von der rechte Tabelle) Ob es passende Zeilen gibt) und alle passenden Zeilen in der rechten Tabelle

  • Rechter äußerer Join: Enthält alle Zeilen in der rechten Tabelle (unabhängig davon, ob es passende Zeilen in der linken Tabelle gibt) und Alle übereinstimmenden Zeilen in der linken Tabelle Alle übereinstimmenden Zeilen

Linker Join

Der linke äußere Join, auch als linker Join bekannt, verwendet das Schlüsselwort LEFT OUTER JOIN, um zwei Tabellen zu verbinden, und verwendet die ON-Klausel zum Festlegen die Join-Bedingungen.

Das Syntaxformat von Left Join lautet wie folgt:

SELECT <字段名> FROM <表1> LEFT OUTER JOIN <表2> <ON子句>

Die Syntaxbeschreibung lautet wie folgt:

  • Feldname: Der Name des abzufragenden Felds.

  • a3a434d363a63b1c2ecc5a52d2bda7ed97d086c239691a1b38600fefbaf795b7: Der Name der Tabelle, die eine Linksverknüpfung erfordert.

  • LEFT OUTER JOIN: Sie können das OUTER-Schlüsselwort im Left Join weglassen und nur das Schlüsselwort LEFT JOIN verwenden.

  • ON-Klausel: Wird zum Festlegen der Verbindungsbedingung des linken Joins verwendet und kann nicht weggelassen werden.

In der obigen Syntax ist „Tabelle 1“ die Basistabelle und „Tabelle 2“ die Referenztabelle. Bei der Abfrage mit einem Left-Join können Sie alle Datensätze in „Tabelle 1“ und die Datensätze, die den Join-Bedingungen entsprechen, in „Tabelle 2“ abfragen. Wenn eine Zeile in „Tabelle 1“ keine passende Zeile in „Tabelle 2“ hat, dann sind die Feldwerte von „Tabelle 2“ im zurückgegebenen Ergebnis null (NULL).

Beispiel 1

Bevor wir die Left-Join-Abfrage durchführen, überprüfen wir zunächst die Daten in den Tabellen tb_course und tb_students_info. Die SQL-Anweisungen und Ausführungsergebnisse lauten wie folgt.

mysql> SELECT * FROM tb_course;
+----+-------------+
| id | course_name |
+----+-------------+
|  1 | Java        |
|  2 | MySQL       |
|  3 | Python      |
|  4 | Go          |
|  5 | C++         |
|  6 | HTML        |
+----+-------------+
6 rows in set (0.00 sec)

mysql> SELECT * FROM tb_students_info;
+----+--------+------+------+--------+-----------+
| id | name   | age  | sex  | height | course_id |
+----+--------+------+------+--------+-----------+
|  1 | Dany   |   25 | 男   |    160 |         1 |
|  2 | Green  |   23 | 男   |    158 |         2 |
|  3 | Henry  |   23 | 女   |    185 |         1 |
|  4 | Jane   |   22 | 男   |    162 |         3 |
|  5 | Jim    |   24 | 女   |    175 |         2 |
|  6 | John   |   21 | 女   |    172 |         4 |
|  7 | Lily   |   22 | 男   |    165 |         4 |
|  8 | Susan  |   23 | 男   |    170 |         5 |
|  9 | Thomas |   22 | 女   |    178 |         5 |
| 10 | Tom    |   23 | 女   |    165 |         5 |
| 11 | LiMing |   22 | 男   |    180 |         7 |
+----+--------+------+------+--------+-----------+
11 rows in set (0.00 sec)

Fragen Sie alle Studentennamen und entsprechenden Kursnamen in den Tabellen tb_students_info und tb_course ab, einschließlich Studenten ohne Kurse. Die SQL-Anweisung und die laufenden Ergebnisse lauten wie folgt.

mysql> SELECT s.name,c.course_name FROM tb_students_info s LEFT OUTER JOIN tb_course c 
    -> ON s.`course_id`=c.`id`;
+--------+-------------+
| name   | course_name |
+--------+-------------+
| Dany   | Java        |
| Henry  | Java        |
| NULL   | Java        |
| Green  | MySQL       |
| Jim    | MySQL       |
| Jane   | Python      |
| John   | Go          |
| Lily   | Go          |
| Susan  | C++         |
| Thomas | C++         |
| Tom    | C++         |
| LiMing | NULL        |
+--------+-------------+
12 rows in set (0.00 sec)

Sie können sehen, dass das laufende Ergebnis 12 Datensätze anzeigt. Der Student namens LiMing hat derzeit keine Kursinformationen für den Studenten in der entsprechenden tb_course-Tabelle, dieser Datensatz übernimmt nur den entsprechenden Wert in der tb_students_info-Tabelle . und der aus der Tabelle tb_course entnommene Wert ist NULL.

Rechter Join

Der rechte äußere Join wird auch als rechter Join bezeichnet, und der rechte Join ist der umgekehrte Join des linken Joins. Verwenden Sie das Schlüsselwort RIGHT OUTER JOIN, um die beiden Tabellen zu verknüpfen, und verwenden Sie die ON-Klausel, um die Verknüpfungsbedingungen festzulegen.

Das Syntaxformat der rechten Verknüpfung lautet wie folgt:

SELECT <字段名> FROM <表1> RIGHT OUTER JOIN <表2> <ON子句>

Die Syntaxbeschreibung lautet wie folgt:

  • Feldname: Der Name des abzufragenden Felds.

  • a3a434d363a63b1c2ecc5a52d2bda7ed97d086c239691a1b38600fefbaf795b7: Der Name der Tabelle, die einen rechten Join erfordert.

  • RIGHT OUTER JOIN: Sie können das Schlüsselwort OUTER im rechten Join weglassen und nur das Schlüsselwort RIGHT JOIN verwenden.

  • ON-Klausel: Wird zum Festlegen der Verbindungsbedingungen des rechten Joins verwendet und kann nicht weggelassen werden.

Im Gegensatz zum linken Join verwendet der rechte Join „Tabelle 2“ als Basistabelle und „Tabelle 1“ als Referenztabelle. Wenn Sie eine Right-Join-Abfrage durchführen, können Sie alle Datensätze in „Tabelle 2“ und Datensätze, die den Join-Bedingungen in „Tabelle 1“ entsprechen, abfragen. Wenn eine Zeile in „Tabelle 2“ keine passende Zeile in „Tabelle 1“ hat, sind die Feldwerte von „Tabelle 1“ im zurückgegebenen Ergebnis null (NULL).

Beispiel 2

Fragen Sie alle Kurse in den Tabellen tb_students_info und tb_course ab, einschließlich Kursen ohne Studenten. Die SQL-Anweisung und die laufenden Ergebnisse lauten wie folgt.

mysql> SELECT s.name,c.course_name FROM tb_students_info s RIGHT OUTER JOIN tb_course c 
    -> ON s.`course_id`=c.`id`;
+--------+-------------+
| name   | course_name |
+--------+-------------+
| Dany   | Java        |
| Green  | MySQL       |
| Henry  | Java        |
| Jane   | Python      |
| Jim    | MySQL       |
| John   | Go          |
| Lily   | Go          |
| Susan  | C++         |
| Thomas | C++         |
| Tom    | C++         |
| NULL   | HTML        |
+--------+-------------+
11 rows in set (0.00 sec)

Sie können sehen, dass der Kurs mit dem Namen HTML derzeit keine Studentendaten enthält, sodass dieser Datensatz nur den entsprechenden Wert in der Tabelle tb_course enthält Der aus der Tabelle tb_students_info entnommene Wert ist NULL.

Wenn Sie mehrere Tabellen links/rechts verbinden, verwenden Sie einfach LEFT/RIGHT OUTER JOIN oder LEFT/RIGHT JOIN fortlaufend nach der ON-Klausel.

Bei Verwendung einer Outer-Join-Abfrage müssen Sie im Abfrageergebnis unterscheiden, ob alle Datensätze in der linken Tabelle oder alle Datensätze in der rechten Tabelle angezeigt werden müssen, und dann den entsprechenden Left-Join und Right-Join auswählen.

Das obige ist der detaillierte Inhalt vonWie schreibe ich chinesische und ausländische Verbindungen in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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