Heim >Datenbank >MySQL-Tutorial >Die MySQL5.7-Datenbank führt Tabellenverbindungen, Unterabfragen und Fremdschlüssel ein

Die MySQL5.7-Datenbank führt Tabellenverbindungen, Unterabfragen und Fremdschlüssel ein

coldplay.xixi
coldplay.xixinach vorne
2021-01-26 09:27:092413Durchsuche

Die MySQL5.7-Datenbank führt Tabellenverbindungen, Unterabfragen und Fremdschlüssel ein

Kostenlose Lernempfehlung: MySQL-Video-Tutorial

Artikelverzeichnis

      • Table Join
        • Inner. Join
        • Le ft Join
        • Right Join
        • Subquery
      • Selbstassoziation
      • Fremdschlüssel
        • Einführung in Fremdschlüssel
        • Festlegen von Fremdschlüsseleinschränkungen beim Erstellen einer Tabelle

Tabellenverbindung

  • Wenn die Spalten des Abfrageergebnisses stammen mehrfach TabellenSie müssen mehrere Tabellen zu einem großen Datensatz verbinden und dann die entsprechenden Spalten auswählen, um zu MySQL zurückzukehren
  • Zu diesem Zeitpunkt müssen Sie die Tabellen verbinden

Inner Join

  • Inner Join wählt nur die Datensätze aus die in den beiden Tabellen zueinander passen
rrree

Die MySQL5.7-Datenbank führt Tabellenverbindungen, Unterabfragen und Fremdschlüssel ein
Die MySQL5.7-Datenbank führt Tabellenverbindungen, Unterabfragen und Fremdschlüssel ein
Bildbeschreibung hier einfügen

Linker Join

Das Ergebnis der Abfrage sind die von den beiden Tabellen übereinstimmenden Daten. Die in der linken Tabelle enthaltenen Daten werden gefüllt mit Null für die Daten, die in der rechten Tabelle nicht vorhanden sind

select * from 表1 inner join 表2 on 表1.列 = 表2.列-- 显示学生的所有信息,但只显示班级名称select s.*, c.name from students s inner join classes c on s.id=c.id;-- 将班级名称显示在第一列select c.name, s.* from students s inner join classes c on s.id=c.id;-- 查询 有能够对应班级的学生以及班级信息,按照班级进行排序select c.name, s.* from students s inner join classes c on s.cls_id = c.id order by c.name asc;-- 当同一个班级时,按照学生的id进行从小到大排序select c.name, s.* from students s inner join classes c on s.cls_id = c.id order by c.name asc, s.id asc;

Die MySQL5.7-Datenbank führt Tabellenverbindungen, Unterabfragen und Fremdschlüssel ein

Rechter Join

Das Abfrageergebnis sind die von den beiden Tabellen übereinstimmenden Daten. Die in der rechten Tabelle enthaltenen Daten werden mit Null gefüllt Daten, die in der linken Tabelle nicht vorhanden sind.

select * from 表1 left join 表2 on 表1.列=表2.列-- students表左连接classes表 并查看班级为null的数据select * from students s left join classes c on s.cls_id=c.id having s.cls_id is null;-- 左连接 并且 查询 s.cls_id=1 并且 s.name="small-j" 的数据select * from students s left join classes c on s.cls_id=c.id having s.cls_id=1 and s.name="small-j";

Unterabfrage

In einigen Fällen ist die erforderliche Bedingung bei einer Abfrage das Ergebnis einer anderen SELECT-Anweisung. In diesem Fall wird eine Unterabfrage verwendet

select * from 表1 right join 表2 on 表1.列 = 表2.列;

Bildbeschreibung hier einfügen

Selbstassoziation

wird einfach als eine Verbindungsabfrage zwischen sich selbst und sich selbst verstanden. Bei zwei Tabellen mit einer zugehörigen Beziehung ist die Tabelle, in der sich der Primärschlüssel des zugehörigen Felds befindet, die Haupttabelle (übergeordnete Tabelle) und die Tabelle, in der sich der Fremdschlüssel befindet, die sekundäre Tabelle (untergeordnete Tabelle).

Hinweis: Die MySQL5.7-Datenbank führt Tabellenverbindungen, Unterabfragen und Fremdschlüssel ein Der Primärschlüssel darf keine Nullwerte enthalten, aber in Fremdschlüsseln sind Nullwerte zulässig. Das heißt, solange jeder Nicht-Null-Wert des Fremdschlüssels im angegebenen Primärschlüssel vorkommt Der Inhalt dieses Fremdschlüssels ist korrekt.
Die MySQL5.7-Datenbank führt Tabellenverbindungen, Unterabfragen und Fremdschlüssel ein

Festlegen von Fremdschlüsseleinschränkungen beim Erstellen einer Tabelle

Beim Erstellen eines Fremdschlüssels müssen Sie zuerst die Slave-Tabelle löschen, bevor Sie die Master-Tabelle löschen können.

    Erstellen Sie die Slave-Tabelle, wenn die Master-Tabelle vorhanden sein muss.
  • Die Fremdschlüsselzuordnung der Sekundärtabelle muss der Primärschlüssel der Primärtabelle sein und die Typen des Primärschlüssels und des Fremdschlüssels müssen konsistent sein.
  • select * from 表 where 表(子查询语句)-- 查询出students中身高最高的男生。显示名字和身高select s.name, s.high from students s where high=(select max(high) from students) and gender="男";-- 查询出高于平均身高的学生信息select * from students where high>(select avg(high) from students);-- 查询学生班级号cls_id能够对应的学生信息select * from students where cls_id in (select id from students);-- 查询最大年龄的女生的idselect * from students where id=(select max(id) from students where gender="女") and  gender="女";
    -- 查询广东省下的所有广东市select * from cities c inner join provinces p on c.provinceid=p.provinceid having p.province="广东省";-- 查询广东省下的所有广东市-- 自关联select * from areas a inner join areas b on a.id=b.pid having a.name="广东";

Die MySQL5.7-Datenbank führt Tabellenverbindungen, Unterabfragen und Fremdschlüssel ein
Verwandte kostenlose Lernempfehlungen:

MySQL-Datenbank(Video)

Die MySQL5.7-Datenbank führt Tabellenverbindungen, Unterabfragen und Fremdschlüssel ein

Das obige ist der detaillierte Inhalt vonDie MySQL5.7-Datenbank führt Tabellenverbindungen, Unterabfragen und Fremdschlüssel ein. 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:Beherrschen Sie MYSQL AdvancedNächster Artikel:Beherrschen Sie MYSQL Advanced