Heim  >  Artikel  >  Datenbank  >  Detaillierte Erläuterung der MySQL-Union-Abfrage (der Unterschied zwischen IN und EXISTS)

Detaillierte Erläuterung der MySQL-Union-Abfrage (der Unterschied zwischen IN und EXISTS)

coldplay.xixi
coldplay.xixinach vorne
2021-04-19 10:29:532059Durchsuche

Detaillierte Erläuterung der MySQL-Union-Abfrage (der Unterschied zwischen IN und EXISTS)

Kartesisches Produkt

Das kartesische Produkt bezieht sich auf das kartesische Produkt (kartesisches Produkt) zweier Mengen X und Y in der Mathematik, auch als direktes Produkt bekannt, ausgedrückt als X×Y, das erste Ein Objekt ist ein Mitglied von X und das zweite Objekt ist Mitglied aller möglichen geordneten Paare von Y [3].
Angenommen, die Menge A={a, b} und die Menge B={0, 1, 2}, dann ist das kartesische Produkt der beiden Mengen {(a, 0), (a, 1), (a, 2) , (b, 0), (b, 1), (b, 2)}.

Verwandte kostenlose Lernempfehlungen: MySQL-Video-Tutorial

Inner Join

select 字段 from 表1 别名1 [inner] join 表2 别名2 on 连接条件 and 其他条件;select 字段 from 表1 别名1,表2 别名2 where 连接条件 and 其他条件;

Detaillierte Erläuterung der MySQL-Union-Abfrage (der Unterschied zwischen IN und EXISTS)

Outer Join

Outer Joins sind in Left Outer Joins und Right unterteilt äußere Verbindungen. Wenn eine gemeinsame Abfrage durchgeführt wird und die Tabelle auf der linken Seite vollständig angezeigt wird, sprechen wir von einem linken Außen-Join. Wenn die Tabelle auf der rechten Seite vollständig angezeigt wird, sprechen wir von einem rechten Außen-Join.

--左外连接,表1完全显示select 字段名 from 表名1 left join 表名2 on 连接条件;-- 右外连接,表2完全显示select 字段 from 表名1 right join 表名2 on 连接条件;

Detaillierte Erläuterung der MySQL-Union-Abfrage (der Unterschied zwischen IN und EXISTS)
Detaillierte Erläuterung der MySQL-Union-Abfrage (der Unterschied zwischen IN und EXISTS)

Selbstverbindung

Wenn es um Vergleiche zwischen Zeilen geht, ist Selbstverbindung erforderlich
Beispiel: Alle Bewertungsinformationen für „Computerprinzipien“ mit höheren Bewertungen als „Java“ anzeigen

-- 先查询“计算机原理”和“Java”课程的idselect id,name from course where name='Java' or name='计算机原理';-- 再查询成绩表中,“计算机原理”成绩比“Java”成绩 好的信息SELECTs1.*FROMscore s1,score s2WHEREs1.student_id = s2.student_idAND s1.score <pre class="brush:php;toolbar:false">-- 也可以使用join on 语句来进行自连接查询SELECTs1.*FROMscore s1JOIN score s2 ON s1.student_id = s2.student_idAND s1.score <p> <strong>Unterabfrage</strong></p><p>Unterabfrage bezieht sich auf eine SELECT-Anweisung, die in andere SQL-Anweisungen eingebettet ist und auch als verschachtelte Abfrage bezeichnet wird. <br>Einzeilige Unterabfrage: Eine Unterabfrage, die eine Zeile mit Datensätzen zurückgibt<br> Fall: Abfrage und Klassenkameraden von „Xiaobai“: </p><pre class="brush:php;toolbar:false">select * from student where classes_id=(select classes_id from student wherename='小白');

Mehrzeilige Unterabfrage: Eine Unterabfrage, die mehrere Zeilen mit Datensätzen zurückgibt

  1. [NOT] IN-Schlüsselwort :
    Führen Sie zuerst die SQL der Unterabfrage aus, legen Sie das Ergebnis in den Speicher und führen Sie dann die äußere Abfrage aus, vergleichen Sie die angegebenen Einschränkungen direkt mit den Ergebnissen der Unterabfrage und filtern Sie. (Abhängig vom Speicher, geeignet für Situationen, in denen die Ergebnismenge einer Unterabfrage relativ klein ist)
  2. [NOT] EXISTS-Schlüsselwort:
    Führen Sie zuerst die äußere Abfrage aus, nehmen Sie der Reihe nach die Datensätze jeder äußeren Abfrage und bringen Sie sie in die innere Abfrage Abfrage
    Wenn die Ergebnismenge der inneren Abfrage nicht leer ist, behalten Sie die Ergebnisse der äußeren Abfrage bei
    Wenn die Ergebnismenge der inneren Abfrage leer ist, verwerfen Sie die Ergebnisse der äußeren Abfrage
    Beruht nicht auf dem Speicher, Geeignet für kleine äußere Abfrageergebnismengen, wenn die Ergebnismenge der Unterabfrage relativ groß ist

Abfrage zusammenführen

Um die Ausführungsergebnisse mehrerer Auswahlen zusammenzuführen, können Sie die Mengenoperatoren Union und Union All verwenden. Bei Verwendung von UNION
und UNION ALL müssen die Felder in den Ergebnismengen der vorherigen und späteren Abfragen konsistent sein.
union
Dieser Operator wird verwendet, um die Vereinigung zweier Ergebnismengen zu erhalten. Wenn dieser Operator verwendet wird, werden doppelte Zeilen im Ergebnissatz automatisch entfernt.
Fall: Fragen Sie die Kurse ab, deren ID kleiner als 3 ist oder deren Name „Englisch“ ist:

select * from course where id<p><strong>union all</strong><br> Dieser Operator wird verwendet, um die Vereinigung zweier Ergebnismengen zu erhalten. Wenn dieser Operator verwendet wird, werden doppelte Zeilen im Ergebnissatz nicht entfernt. <br> Fall: Kurse mit einer ID von weniger als 3 oder mit dem Namen „Java“ abfragen: </p><pre class="brush:php;toolbar:false">-- 可以看到结果集中出现重复数据Javaselect * from course where id<blockquote><p><strong>Verwandte kostenlose Lernempfehlungen: </strong><a href="https://www.php.cn/course/list/51.html" target="_blank"><strong>MySQL-Datenbank</strong></a><strong>(Video)</strong></p></blockquote>

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der MySQL-Union-Abfrage (der Unterschied zwischen IN und EXISTS). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Vorheriger Artikel:So installieren Sie MySQL8.0Nächster Artikel:So installieren Sie MySQL8.0