mysql join tutorial inner
Erfahren Sie mehr über verschiedene MySQL JOIN-Anweisungen wie Inner, Outer, Cross, Left, Right und Self mit Syntax- und Programmierbeispielen:
In diesem Tutorial lernen wir MySQL JOIN kennen und verstehen die verschiedenen Arten von Joins, die in MySQL unterstützt werden. JOIN in seiner einfachsten Form kann als Mittel zum Abrufen / Aktualisieren oder Löschen von Daten aus mehreren Tabellen für eine einzelne Abfrage angesehen werden.
Im Wesentlichen kombiniert JOIN zwei oder mehr Tabellen, um Daten für eine bestimmte Bedingung abzurufen.
MySQL unterstützt auch andere Möglichkeiten zum Abfragen von Daten aus mehreren Tabellen mithilfe von Unterabfragen und durch Kombinieren mehrerer Abfragen mit UNION usw.
Was du lernen wirst:
Normalisierte Tabellen
In normalisierten MySQL-Datenbanken haben Tabellen mithilfe von Schlüsseleinschränkungen wie Fremdschlüsseln Beziehungen zu allgemeinen Spalten.
Versuchen wir dies anhand eines Beispiels zu verstehen - Angenommen, es gibt zwei Tabellen, EMPLOYEE und EMPLOYEE_DEPARTMENT. In einer denormalisierten Datenbank - d. H. Einer einzelnen Tabelle mit allen Spalten - werden viele Informationen, beispielsweise über die Abteilung, dupliziert, da viele Mitarbeiter derselben Abteilung angehören können.
Um diese Duplikate zu reduzieren und Speicherplatz zu sparen, werden Datenbanken in einem normalisierten Zustand gehalten.
In diesem Fall verweisen wir auf die Abteilung durch ein Feld Department_id in der Tabelle EMPLOYEE, und alle relevanten abteilungsbezogenen Informationen wie Abteilungsinformationen, Abteilungsleiter usw. können als Teil der Tabelle EMPLOYEE_DEPARTMENT gespeichert werden.
Kurz gesagt: EMPLOYEE und EMPLOYEE_DEPARTMENT sind über das Feld Department_id miteinander verbunden, das als AUSLÄNDISCHER SCHLÜSSEL für die Tabelle EMPLOYEE und als PRIMARY KEY für die Tabelle EMPLOYEE_DEPARTMENT fungiert.
Das folgende Bild zeigt eine bildliche Darstellung mit einer Beziehung zwischen diesen beiden Tabellen mittels Fremdschlüsseleinschränkung
MySQL JOIN
MySQL JOIN wird verwendet, um Daten aus 2 oder mehr Tabellen unter einer bestimmten Bedingung abzurufen, zu aktualisieren oder zu löschen. Daher wird JOIN immer in Verbindung mit SELECT-, UPDATE- oder DELETE-Anweisungen verwendet
Syntax des Befehls JOIN:
Mit SELECT beitreten
SELECT {column_list} FROM tableName1 {joinType} tableName2 ON {joinCondition}
Mit UPDATE beitreten
DELETE FROM tableName1 {joinType} tableName2 ON {joinCondition} WHERE {condition}
MIT LÖSCHEN BEITRETEN
UPDATE tableName1 SET targetColumn = targetValue FROM tableName1 {joinType} tableName2 ON {joinCondition} WHERE {condition}
Beachten Sie, dass JOIN in einer einzigen Abfrage auf mehrere Tabellen angewendet werden kann. Der Einfachheit halber versuchen wir jedoch zunächst, die Verwendung von Joins mit 2 Tabellen zu verstehen.
Die verschiedenen Teile der Syntax umfassen:
- {column_list} - Dies stellt die Namen der Spalten dar, die wir als Ergebnis unserer Abfrage abrufen möchten.
- {JoinType} - Dies gibt die Art des Joins an, den wir anwenden. Es gibt verschiedene Arten von JOINS, mit denen Daten abgerufen werden können:
- INNER JOIN
- OUTER JOIN
- LINKE ÄUSSERE VERBINDUNG
- RIGHT OUTER JOIN
- CROSS JOIN
In den nächsten Abschnitten des Tutorials werden wir mehr über all diese verschiedenen Arten von MySQL JOINS erfahren.
- {JoinCondition} - Dies sind die Spaltenbedingungen, die für den JOIN zum Abfragen und Abrufen von Daten verwendet werden.
Im nächsten Abschnitt werden verschiedene Arten von Joins erläutert, die in MySQL verfügbar sind.
Arten von MySQL JOIN
Vorbereitung der Probendaten
Um die JOINS zu verwenden, verwenden wir 2 Tabellen Employee und Employee_Department mit den folgenden Details. Sie können eine hilfreiche Site verwenden / darauf verweisen Hier um Dummy-Daten für das Schema zu generieren.
Auflisten von Abfragen zum Erstellen und Einfügen von Tabellen:
CREATE TABLE IF NOT EXISTS Employee_Department ( name varchar(100), id INT NOT NULL auto_increment, PRIMARY KEY (id) ); CREATE TABLE IF NOT EXISTS Employee ( name varchar(100), id int not null auto_increment, address varchar(100), Department_id int, PRIMARY KEY (id), FOREIGN KEY (Department_id) references Employee_Department(id) ); INSERT INTO `Employee_Department` VALUES ('Information Technology','1'), ('HR','2'), ('Finance','3'), ('Accounting','4'), ('Housekeeping','5'), ('Security','6'), ('Support','7'), ('Contract Staff','8'), ('Sales','9'), ('Management','10'); INSERT INTO `Employee` VALUES ('Veniam','1','640 Damon Junction
East Mathew, NY 68818','3'), ('Molestiae','2','6658 Hollis Club
Ernamouth, TX 19743','10'), ('Officiis','3','59965 Mason Neck Apt. 985
Kareemborough, NV 85535','9'), ('Rerum','4','91067 Geovany Fort
Hanefort, WA 92863','6'), ('Et','5','7647 Reva Shores Suite 970
New Audrafort, OH 17846-5397','2'), ('Et','6','9419 Carmela Burg Apt. 687
Aimeebury, SD 32389-4489','8'), ('Laborum','7','6961 Weissnat Drive
Donnellyfort, MT 53947','6'), ('Cupiditate','8','117 Nellie Summit Suite 982
South Heavenfurt, CA 45675','8'), ('Eveniet','9','9086 Mariam Square Suite 698
South Dulce, MT 82861-3079','2'), ('Rerum','10','783 Goodwin Burgs Apt. 429
Willmsfort, UT 42820-1019','9'), ('Quis','11','42928 Ernesto Trail
East Jules, WV 87169-2851','1'), ('Esse','12','161 Kassulke Stravenue Apt. 937
Williamsonton, MS 62622','7'), ('Dolores','13','22811 Liliana Trail Apt. 890
South Ernesto, MT 04134','10'), ('Ut','14','981 Laron Overpass Suite 361
West Olahaven, FL 46982-7801','10'), ('Mollitia','15','411 Louisa Mill
South Maximefort, MA 04903','8'), ('Necessitatibus','16','2853 Jonathon Turnpike
Quitzonville, KY 54776','4'), ('Fugit','17','3647 Rosalinda Corner
Maureenstad, RI 96605','5'), ('Corporis','18','03559 Nicholas Circle Apt. 364
West Zettaberg, ID 58592-3447','8'), ('Neque','19','56111 Alysson Gateway Apt. 212
Leschbury, VT 90605-2306','8'), ('Velit','20','263 O'Keefe Avenue Apt. 884
West Missouri, IL 50303','6'),
INNER JOIN
INNER JOIN ist die häufigste Form von JOIN und wird sehr häufig verwendet. Fast alle von euch hätten dies irgendwann benutzen sollen. Sehen wir uns die Syntax und dann einige Beispielabfragen an.
Syntax:
SELECT {column_list} FROM tableName1 INNER JOIN tableName2 ON {joinCondition}
Abfrage zum Abrufen von Abteilungsnamen für alle Mitarbeiter aus den oben deklarierten Tabellen (Mitarbeiter und Mitarbeiterabteilung):
SELECT Employee.name as Employee_name, Employee_Department.name as Department_name FROM Employee INNER JOIN Employee_Department ON Employee.Department_id = Employee_Department.id
Hier ist die Ausgabe der obigen Abfrage:
Mitarbeitername | Abteilungsname |
---|---|
Dinge | Sicherheit |
WHO | Informationstechnologie |
Und | HR |
widerfahren | HR |
ich | Finanzen |
Bedürfnisse | Buchhaltung |
Fgit | Housekeeping |
Snacks | Sicherheit |
Bitte | Sicherheit |
Das | Unterstützung |
Und | Vertragsbedienstete |
Eifer | Vertragsbedienstete |
Elastizität | Vertragsbedienstete |
Körper | Vertragsbedienstete |
Messe | Vertragsbedienstete |
Büros | Der Umsatz |
Dinge | Der Umsatz |
Ärger | Management |
Schmerzen | Management |
aus | Management |
Hinweis: Hier haben wir Aliasnamen für Spaltennamen verwendet. Beispiel: Employee.name als Employee_name - nur um die Ergebnisse lesbarer und umfassender zu machen.
Ändern Sie diese Abfrage so, dass nur die Namen abgerufen werden, die mit dem Buchstaben 'm' beginnen.
SELECT Employee.name as Employee_name, Employee_Department.name as Department_name FROM Employee INNER JOIN Employee_Department ON Employee.Department_id = Employee_Department.id WHERE Employee.name like 'm%'
Unten ist die Ausgabe:
Mitarbeitername | Abteilungsname | |||||
---|---|---|---|---|---|---|
Snacks | 7 | 6961 Weissnat Drive Donnellyfort, MT 53947 | 6 | NULL | NULL | NULL |
Ärger | Management | |||||
Elastizität | Vertragsbedienstete |
Und jetzt verstehen wir den INNER JOIN mit Hilfe von Venn Diagram wie folgt. Die resultierenden zurückgegebenen Zeilen bestehen aus den überlappenden Daten zwischen beiden Tabellen, die mit der JOIN-Bedingung übereinstimmen.
OUTER JOIN
OUTER JOIN wird verwendet, um Daten aus 2 oder mehr Tabellen abzurufen, mit Ausnahme von nicht übereinstimmenden Zeilen (oder Zeilen mit Nulldaten für die abgefragten Spalten).
Um Outer Join besser zu verstehen, fügen Sie eine neue Tabelle office_locations mit den Feldern id und address hinzu und fügen Sie der ursprünglich erstellten Employee-Tabelle eine neue Spalte mit dem Namen 'office_id' hinzu.
Hier sind die Abfragen für das gleiche:
CREATE TABLE IF NOT EXISTS office_locations ( address varchar(100), id INT NOT NULL auto_increment, PRIMARY KEY (id) ); ALTER TABLE Employee ADD COLUMN office_id int; INSERT INTO `office_locations`(address) VALUES('Bangalore'), ('Mumbai'), ('Seattle'), ('Santa Clara'); UPDATE Employee SET office_id=1 where id % 2 = 0; UPDATE Employee SET office_id=2 where id % 3 = 0;
Bitte beziehen Sie sich auf das folgende Venn-Diagramm, um OUTER JOINS bildlich zu verstehen:
Es gibt 2 Arten von OUTER JOINs
a) LINKS AUSSEN VERBINDEN
Wie der Name schon sagt, ruft diese Art von Join alle Zeilen (einschließlich NULL-Werte) aus der Tabelle ab, die sich auf der linken Seite der JOIN-Abfrage befindet. Mit einfachen Worten, alle Ergebnisse / Zeilen, die nicht mit der JOIN-Bedingung übereinstimmen, werden zurückgegeben, wobei das Ergebnis NULL-Werte für die richtige Tabelle enthält.
Zum Beispiel, Wir benötigen Standortdaten für alle Mitarbeiter - d. h. finden Sie heraus, wie die Büroadresse aller Mitarbeiter lautet.
SELECT * from Employee LEFT OUTER JOIN office_locations ON Employee.office_id = office_locations.id
Ausgabe der obigen Abfrage:
Name | Ich würde | Adresse | Department_id | Office_id | Büro adresse | Ich würde |
---|---|---|---|---|---|---|
ich | 1 | 640 Damon Junction East Mathew, NY 68818 | 3 | NULL | NULL | NULL |
Ärger | zwei | 6658 Hollis Club Ernamouth, TX 19743 | 10 | 1 | Bangalore | 1 |
Büros | 3 | 59965 Mason Neck Apt. 985 Kareemborough, NV 85535 | 9 | zwei | Mumbai | zwei |
Dinge | 4 | 91067 Geovany Fort] Hanefort, WA 92863 | 6 | 1 | Bangalore | 1 |
Und | 5 | 7647 Reva Shores Suite 970 New Audrafort, OH 17846-5397 | zwei | NULL | NULL | NULL |
Und | 6 | 9419 Carmela Burg Apt. 687 Aimeebury, SD 32389-4489 | 8 | zwei | Mumbai | zwei |
Eifer | 8 | 117 Nellie Summit Suite 982 South Heavenfurt, CA 45675 | 8 | 1 | Bangalore | 1 |
widerfahren | 9 | 9086 Mariam Square Suite 698 South Dulce, MT 82861-3079 | zwei | zwei | Mumbai | zwei |
Dinge | 10 | 783 Goodwin Burgs Apt. 429 Willmsfort, UT 42820-1019 | 9 | 1 | Bangalore | 1 |
WHO | elf | 42928 Ernesto Trail East Jules, WV 87169-2851 | 1 | NULL | NULL | NULL |
Das | 12 | 161 Kassulke Stravenue Apt. 937 Williamsonton, MS 62622 | 7 | zwei | Mumbai | zwei |
Schmerzen | 13 | 22811 Liliana Trail Apt. 890 South Ernesto, MT 04134 | 10 | NULL | NULL | NULL |
aus | 14 | 981 Laron Overpass Suite 361 West Olahaven, FL 46982-7801 | 10 | 1 | Bangalore | 1 |
Elastizität | fünfzehn | 411 Louisa Mill South Maximefort, MA 04903 | 8 | zwei | Mumbai | zwei |
Bedürfnisse | 16 | 2853 Jonathon Turnpike Quitzonville, KY 54776 | 4 | 1 | Bangalore | 1 |
FLED | 17 | 3647 Rosalinda Corner Maureenstad, RI 96605 | 5 | NULL | NULL | NULL |
Körper | 18 | 03559 Nicholas Circle Apt. 364 West Zettaberg, ID 58592-3447 | 8 | zwei | Mumbai | zwei |
oder | 19 | 56111 Alysson Gateway Apt. 212 Leschbury, VT 90605-2306 | 8 | NULL | NULL | NULL |
Bitte | zwanzig | 263 O'Keefe Avenue Apt. 884 West Missouri, IL 50303 | 6 | 1 | Bangalore | 1 |
b) RECHTE AUSSENVERBINDUNG
Ähnlich wie bei LEFT JOIN werden bei dieser Art von Join alle Datensätze, die nicht mit der rechten Tabelle übereinstimmen, mit NULL-Werten in den Spalten für die linke Seitentabelle zurückgegeben.
Wie viel kostet Toast pos?
Zum Beispiel, Wenn wir in unseren Beispieltabellen RIGHT JOIN für dieselbe Abfrage ausführen, die wir für LEFT JOIN verwendet haben, erhalten wir NULL-Werte für die Städte 'Seattle' und 'Santa Clara', da in der Employee-Tabelle keine Zeilen mit festgelegtem Standort vorhanden sind zu diesen Werten.
SELECT * from Employee RIGHT OUTER JOIN office_locations ON Employee.office_id = office_locations.id
Ausgabe der obigen Abfrage:
Name | Ich würde | Adresse | Department_id | Office_id | Büro adresse | Ich würde |
---|---|---|---|---|---|---|
Bitte | zwanzig | 263 O'Keefe Avenue Apt. 884 West Missouri, IL 50303 | 6 | 1 | Bangalore | 1 |
Ärger | zwei | 6658 Hollis Club Ernamouth, TX 19743 | 10 | 1 | Bangalore | 1 |
Dinge | 4 | 91067 Geovany Fort Hanefort, WA 92863 | 6 | 1 | Bangalore | 1 |
Eifer | 8 | 117 Nellie Summit Suite 982 South Heavenfurt, CA 45675 | 8 | 1 | Bangalore | 1 |
Dinge | 10 | 783 Goodwin Burgs Apt. 429 Willmsfort, UT 42820-1019 | 9 | 1 | Bangalore | 1 |
aus | 14 | 981 Laron Overpass Suite 361 West Olahaven, FL 46982-7801 | 10 | 1 | Bangalore | 1 |
Bedürfnisse | 16 | 2853 Jonathon Turnpike Quitzonville, KY 54776 | 4 | 1 | Bangalore | 1 |
Büros | 3 | 59965 Mason Neck Apt. 985 Kareemborough, NV 85535 | 9 | zwei | Mumbai | zwei |
Und | 6 | 9419 Carmela Burg Apt. 687 Aimeebury, SD 32389-4489 | 8 | zwei | Mumbai | zwei |
widerfahren | 9 | 9086 Mariam Square Suite 698 South Dulce, MT 82861-3079 | zwei | zwei | Mumbai | zwei |
Das | 12 | 161 Kassulke Stravenue Apt. 937 Williamsonton, MS 62622 | 7 | zwei | Mumbai | zwei |
Elastizität | fünfzehn | 411 Louisa Mill South Maximefort, MA 04903 | 8 | zwei | Mumbai | zwei |
Körper | 18 | 03559 Nicholas Circle Apt. 364 West Zettaberg, ID 58592-3447 | 8 | zwei | Mumbai | zwei |
NULL | NULL | NULL | NULL | NULL | Seattle | 3 |
NULL | NULL | NULL | NULL | NULL | Santa Clara | 4 |
Hinweise / Tipps:
- In anderen relationalen Datenbanken wie Microsoft SQL finden Sie möglicherweise einen anderen Typ von OUTER JOIN, der als FULL OUTER JOIN bezeichnet wird. Es ist nichts anderes als eine Kombination aus INNER- und OUTER-Joins - d. H. Es werden NULL-Werte aus den Tabellen LEFT und RIGHT zurückgegeben.
- Eine ausführliche Diskussion mit Erklärungen und Beispielen zu Unterschieden zwischen INNER- und OUTER-VERBINDUNGEN finden Sie in unserem Tutorial Hier.
- In den Abfragen OUTER JOIN können RIGHT OUTER JOIN und LEFT OUTER JOIN zur besseren Lesbarkeit nur als RIGHT JOIN bzw. LEFT JOIN angegeben werden.
CROSS JOIN
CROSS JOIN wird auch als kartesisches Produkt bezeichnet. Es wird ein Ergebnis gegen übereinstimmende Join-Bedingungen mit insgesamt m x n Zeilen zurückgegeben, wobei m und n eine Anzahl übereinstimmender Zeilen in Tabelle1 und Tabelle2 mit der JOIN-Bedingung sind.
Sehen wir uns eine Beispielabfrage für einen CROSS JOIN an, um Ergebnisse aus zwei Tabellen zu erhalten - Employee und office_locations
SELECT * from Employee CROSS JOIN office_locations
Die zurückgegebene Ausgabe enthält insgesamt 80 Zeilen, was nichts anderes als das Produkt der Zeilen in beiden Tabellen ist - Mitarbeiter (20) x office_locations (4) => 80
Bitte beachte, dass, Während Sie CROSS JOIN ausführen, müssen Sie keine JOIN-Bedingung angeben, da Sie ohnehin ein m x n-Ergebnis erhalten würden.
Hinweise / Tipps:
Sie werden CROSS JOIN nicht oft finden, da es nicht viele Anwendungsfälle gibt. Dieser Join wird im Allgemeinen ausgeführt, wenn jemand alle möglichen Kombinationen mit Daten aus 2 Tabellen abrufen möchte.
Zum Beispiel: Angenommen, Sie sind ein Bekleidungsexporteur und haben zwei Tabellen - eine mit Farbdaten und eine mit Größendaten. Um das Inventar sicherzustellen, können Sie hier eine CROSS JOIN beider Tabellen durchführen, um sicherzustellen, dass alle Kleidungsstücke für alle Größen- und Farbkombinationen beschafft werden.
SELBST BEITRETEN
SELF JOIN ist genau wie jeder andere INNER- oder OUTER-Join, mit der einzigen Ausnahme, dass beide Tabellen, d. H. Die Joining- und die Joined-Tabelle, gleich sind.
Im Allgemeinen verwenden wir SELF Joins, wenn wir die Beziehung zwischen Zeilen derselben Tabelle herausfinden möchten. Zum Beispiel, Wenn eine Tabelle sowohl die Mitarbeiter-ID als auch die Supervisor-Mitarbeiter-ID enthält, können wir die Tabelle gegen sich selbst verbinden, wenn wir den Namen des Managers anhand des Namens des Mitarbeiters ermitteln möchten.
Bitte beachten Sie, dass Sie für SELF JOIN Tabellenaliasnamen verwenden sollten, damit Join-Bedingungen unter Bezugnahme auf die richtige Tabelle angegeben werden können.
Sehen wir uns hier ein Beispiel an:
SELECT e1.name as Employee1, e2.name as Employee2 from Employee e1 inner join Employee e2 on e1.office_id = e2.office_id where e1.Department_id = e2.Department_id
Hier haben wir die Mitarbeitertabelle mit sich selbst verbunden, um die Mitarbeiternamen mit demselben Bürostandort und derselben Abteilung herauszufinden
Mitarbeiter1 | Mitarbeiter2 |
---|---|
Und | Elastizität |
Ärger | Ärger |
Ärger | aus |
Oficiis | Büros |
Dinge | Dinge |
Dinge | Bitte |
Und | Und |
Und | Körper |
Eifer | Eifer |
widerfahren | widerfahren |
Dinge | Dinge |
Das | Das |
aus | Ärger |
aus | aus |
Elastizität | Und |
Elastizität | Elastizität |
Elastizität | Körper |
Bedürfnisse | Bedürfnisse |
Körper | Und |
Körper | Elastizität |
Körper | Körper |
Bitte | Dinge |
Bitte | Bitte |
Wie bereits erwähnt, hat SELF JOIN nur die gleichen Joining- und Joined-Tabellen. Wir können SELF JOIN mit INNER- oder OUTER-Joins verwenden.
MySQL JOIN MIT UPDATE UND DELETE
Bisher haben wir Joins mit SELECT-Anweisungen besprochen. Joins können jedoch auch mit MySQL DELETE- und UPDATE-Anweisungen verwendet werden.
Die Syntax bleibt hier gleich. Schauen wir uns einige Beispiele an, um das Konzept besser zu verstehen.
UPDATE Mit INNER JOIN
Angenommen, wir möchten die Adresse in der Employee-Tabelle in den Namen des Bürostandorts ändern, der in der Tabelle office_locations vorhanden ist. Hier können wir INNER JOIN verwenden, um den Städtenamen von office_locations abzurufen und dieselbe Abfrage zu aktualisieren.
Beispielabfrage:
UPDATE Employee emp inner join office_locations off_loc on emp.office_id = off_loc.id set emp.address = off_loc.address;
Ähnlich kann UPDATE auch mit anderen Arten von Joins verwendet werden, abhängig von den Anforderungen für bestimmte Anwendungsfälle.
LÖSCHEN MIT INNER JOIN
Wir werden Tabellen, Employee und Employee_Departments als Beispiel verwenden. Angenommen, wir möchten alle Mitarbeiterdatensätze löschen, die zur Verkaufsabteilung gehören, und wir möchten auch den Eintrag für die Verkaufsabteilung löschen.
Da wir Department_id als FOREIGN KEY-Einschränkung verwendet haben, sollten wir diese Einschränkung zuerst fallen lassen, bevor wir DELETE with JOIN für mehrere Tabellen verwenden.
Lassen Sie uns zunächst den Namen der Einschränkung, die für Department_id erstellt wurde, in der Employee-Tabelle herausfinden. Führen Sie einfach den Befehl aus, um den Befehl CREATE TABLE abzurufen.
show create table Employee
Sie erhalten die Ausgabe als:
CREATE TABLE `Employee` ( `name` varchar(100) DEFAULT NULL, `id` int NOT NULL AUTO_INCREMENT, `address` varchar(100) DEFAULT NULL, `Department_id` int DEFAULT NULL, `office_id` int DEFAULT NULL, PRIMARY KEY (`id`), KEY `Department_id` (`Department_id`), CONSTRAINT `Employee_ibfk_1` FOREIGN KEY (`Department_id`) REFERENCES `Employee_Department` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
Jetzt können Sie den Namen der FOREIGN_KEY-Einschränkung aus dem obigen Befehl 'Employee_ibfk_1' referenzieren. Mit diesem Namen können Sie diese Einschränkung aus der Employee-Tabelle löschen, indem Sie den folgenden Befehl ausführen:
alter table Employee drop constraint Employee_ibfk_1
Führen Sie nun den Befehl DELETE mit INNER JOIN aus
delete emp_dept, emp from Employee emp inner join Employee_Department emp_dept on emp.Department_id = emp_dept.id where emp.Department_id = 9
Die Ausgabe dieses Befehls wäre nein. Anzahl der gelöschten Zeilen (und dies sollte die Zeilen aus beiden Tabellen, auf die in der obigen JOIN-Abfrage verwiesen wird, erfolgreich löschen).
Häufig gestellte Fragen
F # 1) Wie viele Arten von Joins gibt es in MySQL?
Antworten: MySQL unterstützt hauptsächlich drei Arten von Joins. Diese sind:
- Inner Join
- Outer Join - Left Outer Join und Right Outer Join
- Cross Join
F # 2) Kann Join nur für 2 Tabellen verwendet werden?
Antworten: Verknüpfungen können auf 2 oder mehr als 2 Tabellen angewendet werden. Meistens werden Joins für 2 Tabellen verwendet.
Unten sehen Sie ein Beispiel für einen INNER JOIN mit 3 Tabellen:
select Employee.name as emp_name, Employee_Department.name as dept_name, office_locations.address as office_location from Employee inner join Employee_Department on Employee.Department_id = Employee_Department.id inner join office_locations on Employee.office_id = office_locations.id
Ausgabe der obigen Abfrage:
emp_name | Dept_name | Bürostandort |
---|---|---|
aus | Management | Bangalore |
Ärger | Management | Bangalore |
Dinge | Sicherheit | Bangalore |
Und | Vertragsbedienstete | Mumbai |
Eifer | Vertragsbedienstete | Bangalore |
widerfahren | HR | Mumbai |
Das | Unterstützung | Mumbai |
Elastizität | Vertragsbedienstete | Mumbai |
Bedürfnisse | Buchhaltung | Bangalore |
Körper | Vertragsbedienstete | Mumbai |
Bitte | Sicherheit | Bangalore |
F # 3) Wie verwende ich Tabellen-Aliase mit Joins?
Antworten: Aliase sind eine Möglichkeit, einen temporären Namen für eine Tabelle zu haben, auf die in einer Abfrage verwiesen wird. Da JOIN-Abfragen manchmal komplex sind und um die Abfragen lesbar zu machen und zu vermeiden, dass für jede Spaltenreferenz auf Tabellennamen verwiesen wird, können wir Namen mit Aliasen verkürzen.
Schreiben Sie eine INNER JOIN-Abfrage, um Daten für alle Mitarbeiternamen und Abteilungsnamen aus den Tabellen Employee und Employee_Departments abzurufen.
select emp.name as emp_name, Department.name as dept_name from Employee emp inner join Employee_Department as Department on emp.Department_id = Department.id
In der obigen Abfrage können Sie sehen, dass wir die Employee-Tabelle als emp und die Employee_Department-Tabelle als Abteilung aliasiert und die Aliase zum Verweisen auf Spaltennamen und Join-Bedingungen verwendet haben.
Fragen und Antworten zum PHP-Interview pdf
F # 4) Was ist CROSS JOIN?
Antworten: CROSS JOIN ist eine Art von Join, bei dem der Benutzer das kartesische Produkt der zu verbindenden Tabellen abrufen möchte.
Das Ergebnis von CROSS JOIN ist m x n, wobei m die Anzahl der übereinstimmenden Zeilen in der ersten Tabelle und n die Anzahl der übereinstimmenden Zeilen in der zweiten Tabelle ist.
F # 5) So erhalten Sie FULL OUTER JOIN in MySQL
Antworten: MySQL bietet im Gegensatz zu anderen Datenbanken wie Microsoft SQL kein FULL OUTER JOIN als separaten Join-Typ an. Um jedoch Ergebnisse zu erhalten, die als FULL OUTER JOIN abgerufen worden wären, können wir die Ergebnisse von LEFT OUTER JOIN und RIGHT OUTER JOIN kombinieren.
Zum Beispiel können wir Mitarbeiter- und Abteilungsdetails abrufen und die Vereinigung auf linke und rechte äußere Verknüpfungen anwenden.
Empfohlene Lektüre = >> MySQL Union Operator
Fazit
In diesem Tutorial haben wir verschiedene Arten von Joins kennengelernt, die in MySQL verfügbar sind.
Wir haben INNER-, OUTER-, CROSS- und SELF-Joins besprochen und auch gesehen, wie JOIN-Abfragen mit UPDATE- und DELETE-Anweisungen verwendet werden können, um effiziente und optimierte Abfragen für verknüpfte Daten zwischen 2 oder mehr als 2 Tabellen zu erhalten.
JOINS sind eine der grundlegendsten verwendeten Abfragen, und jeder, der SQL-basierte Datenbanken verwendet oder lernt, sollte ein gründliches Verständnis der SQL-Joins haben.
Literatur-Empfehlungen
- Inner Join Vs Outer Join: Genauer Unterschied zu Beispielen
- MySQL Create View Tutorial mit Codebeispielen
- MySQL Delete-Anweisung - Befehlssyntax und Beispiele löschen
- MySQL Insert Into Table - Syntax und Beispiele für Insert-Anweisungen
- Tutorial zur MySQL-Update-Anweisung - Syntax und Beispiele für Update-Abfragen
- Unterschied zwischen SQL und MySQL und SQL Server (mit Beispielen)
- Was ist MySQL und warum wird es verwendet?
- 20+ MongoDB Tutorial für Anfänger: Kostenloser MongoDB Kurs