mysql join tutorial inner
Aflați despre diferite declarații MySQL JOIN, cum ar fi Inner, Outer, Cross, Left, Right și Self cu sintaxă și exemple de programare:
În acest tutorial, vom afla despre MySQL JOIN și, de asemenea, vom înțelege diferitele tipuri de Joins care sunt acceptate în MySQL. JOIN în forma sa cea mai simplă poate fi gândit ca un mijloc de a prelua / actualiza sau șterge date din mai multe tabele într-o singură interogare.
Deci, în esență, JOIN combină 2 sau mai multe tabele pentru a prelua date împotriva unei condiții date.
MySQL acceptă, de asemenea, alte moduri diferite de interogare a datelor din mai multe tabele folosind - subinterogări și prin combinarea mai multor interogări folosind UNION etc.
Ce veți învăța:
- Tabelele normalizate
- MySQL JOIN
- Tipuri de MySQL JOIN
- MySQL ÎNSCRIEȚI-VĂ CU ACTUALIZARE ȘI ȘTERGERE
- Concluzie
Tabelele normalizate
În bazele de date MySQL normalizate, tabelele au relații cu coloanele obișnuite prin intermediul constrângerilor cheie, cum ar fi cheile străine.
Să încercăm să înțelegem acest lucru cu ajutorul unui exemplu - Să presupunem că există 2 tabele, EMPLOYEE și EMPLOYEE_DEPARTMENT. Acum, într-o bază de date denormalizată - adică într-un singur tabel cu toate coloanele, o mulțime de informații, de exemplu despre departament, ar fi duplicate, deoarece pot exista mulți angajați care fac parte din același departament.
Prin urmare, pentru a reduce aceste duplicări și pentru a economisi stocarea, bazele de date sunt păstrate într-o stare normalizată.
Deci, în acest caz, ne-am referi la Departament printr-un câmp Department_id în tabelul EMPLOYEE și toate informațiile relevante legate de departament - cum ar fi Departamentul Info, șeful departamentului etc. pot fi păstrate ca parte a tabelului EMPLOYEE_DEPARTMENT.
Deci, pe scurt - EMPLOYEE și EMPLOYEE_DEPARTMENT sunt legate între ele prin câmpul Department_id, care acționează ca o cheie externă pentru tabelul EMPLOYEE și CHEIE PRIMARĂ pentru tabela EMPLOYEE_DEPARTMENT.
Imaginea de mai jos este o reprezentare picturală care are o relație între ambele tabele prin intermediul Constrângerea cheii străine
MySQL JOIN
MySQL JOIN este utilizat pentru preluarea, actualizarea sau ștergerea datelor din 2 sau mai multe tabele într-o anumită condiție. Prin urmare, JOIN este întotdeauna utilizat împreună cu instrucțiunile SELECT, UPDATE sau DELETE
Sintaxa comenzii JOIN:
ÎNSCRIEȚI-VĂ cu SELECT
SELECT {column_list} FROM tableName1 {joinType} tableName2 ON {joinCondition}
ÎNSCRIEȚI-VĂ CU ACTUALIZARE
DELETE FROM tableName1 {joinType} tableName2 ON {joinCondition} WHERE {condition}
ÎNSCRIEȚI-VĂ cu DELETE
UPDATE tableName1 SET targetColumn = targetValue FROM tableName1 {joinType} tableName2 ON {joinCondition} WHERE {condition}
Vă rugăm să rețineți că JOIN ar putea fi aplicat mai multor tabele într-o singură interogare, dar, pentru simplitate, mai întâi să încercăm să înțelegem utilizarea Joins cu 2 tabele.
Diferitele părți ale sintaxei includ:
- {column_list} - Aceasta reprezintă numele coloanelor pe care dorim să le preluăm ca rezultat al interogării noastre.
- {JoinType} - Aceasta indică tipul de Alăturare pe care îl aplicăm. Există următoarele tipuri diferite de JOINS care pot prelua date:
- INTERIOR ÎNSCRIEȚI-VĂ
- ALĂTURAȚI-VĂ
- ÎNREGISTRARE ÎN EXTERIOR
- ÎNREGISTRAȚI-VĂ ÎN DREAPTA
- CROSS JOIN
Vom afla despre toate aceste tipuri diferite de MySQL JOINS în secțiunile viitoare ale tutorialului.
- {JoinCondition} - Aceasta este condițiile coloanei care ar fi utilizate pentru JOIN pentru a interoga și prelua date.
În secțiunea următoare, vom discuta despre diferite tipuri de Joins care sunt disponibile în MySQL.
Tipuri de MySQL JOIN
Pregătirea probelor de date
Pentru a utiliza JOINS, vom folosi 2 tabele Employee și Employee_Department cu detaliile de mai jos. Puteți utiliza / consultați un site util Aici pentru a genera date fictive pentru schemă.
Listarea interogărilor pentru crearea și inserarea tabelelor:
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'),
INTERIOR ÎNSCRIEȚI-VĂ
INNER JOIN este cea mai comună formă de JOIN și este foarte utilizată. Aproape toți ar fi trebuit să folosiți acest lucru la un moment dat sau altul. Să vedem sintaxa și apoi câteva exemple de interogări.
Sintaxă:
SELECT {column_list} FROM tableName1 INNER JOIN tableName2 ON {joinCondition}
Interogare pentru a prelua numele_departament pentru toți angajații din tabelele declarate mai sus (Angajat și Departamentul_angajat):
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
Iată rezultatul interogării de mai sus:
Numele angajatului | Numele departamentului |
---|---|
lucruri | Securitate |
Care | Tehnologia de informație |
Și | HR |
întâmpla | HR |
Eu | Finanţa |
are nevoie | Contabilitate |
Fgit | Menaj |
gustări | Securitate |
Vă rog | Securitate |
Acea | A sustine |
Și | Personal contractual |
nerăbdare | Personal contractual |
rezistenta | Personal contractual |
corp | Personal contractual |
Corect | Personal contractual |
birouri | Vânzări |
lucruri | Vânzări |
supărări | Management |
Dureri | Management |
Afară | Management |
Notă: Aici am folosit aliasuri de nume de coloană. Exemplu: Employee.name ca Employee_name - doar pentru a face rezultatele mai lizibile și mai cuprinzătoare.
Să modificăm această interogare pentru a prelua doar numele care încep cu litera „m”.
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%'
Mai jos este rezultatul:
Numele angajatului | Numele departamentului | |||||
---|---|---|---|---|---|---|
gustări | 7 | 6961 Weissnat Drive Donnellyfort, MT 53947 | 6 | NUL | NUL | NUL |
supărări | Management | |||||
rezistenta | Personal contractual |
Și acum să înțelegem INNER JOIN cu ajutorul Venn Diagram ca mai jos. Rândurile rezultate returnate constau din datele suprapuse între ambele tabele, potrivite cu condiția JOIN.
ALĂTURAȚI-VĂ
OUTER JOIN este folosit pentru a prelua date din 2 sau mai multe tabele, cu excepția includerii de rânduri neegalate (sau rânduri cu date nule pentru coloanele interogate).
Pentru a înțelege mai bine Outer Join, adăugați un nou tabel office_locations cu câmpuri - id și adresă și adăugați o nouă coloană numită `office_id` în tabela Angajaților creată inițial.
Iată întrebările pentru același lucru:
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;
Vă rugăm să consultați diagrama Venn de mai jos pentru a înțelege pictura OUTER JOINS:
Există 2 tipuri de OUTER JOIN-uri
a) ÎNREGISTRARE ÎN EXTERIOR
După cum sugerează și numele, acest tip de Alăturare ar prelua toate rândurile (inclusiv valorile NULL) din tabelul care se află în partea stângă a interogării JOIN. În cuvinte simple, toate rezultatele / rândurile care nu corespund condiției JOIN vor fi returnate, rezultatul având valori NULL pentru tabelul potrivit.
De exemplu, avem nevoie de date de localizare pentru toți angajații - adică să aflăm care este adresa biroului tuturor angajaților.
SELECT * from Employee LEFT OUTER JOIN office_locations ON Employee.office_id = office_locations.id
Rezultatul interogării de mai sus:
Nume | Id | Abordare | Department_id | Office_id | Adresa biroului | Id |
---|---|---|---|---|---|---|
Eu | 1 | 640 Damon Junction 68818. East Mathew, NY | 3 | NUL | NUL | NUL |
supărări | Două | 6658 Hollis Club 19743. Ernamouth, TX | 10 | 1 | Bangalore | 1 |
birouri | 3 | 59965 Mason Neck Apt. 985 Kareemborough, NV 85535 | 9 | Două | Mumbai | Două |
lucruri | 4 | 91067 Fort Geovany) Hanefort, WA 92863 | 6 | 1 | Bangalore | 1 |
Și | 5 | 7647 Reva Shores Suite 970 New Audrafort, OH 17846-5397 | Două | NUL | NUL | NUL |
Și | 6 | 9419 Carmela Burg Ap. 687 Aimeebury, SD 32389-4489 | 8 | Două | Mumbai | Două |
nerăbdare | 8 | 117 Nellie Summit Suite 982 South Heavenfurt, CA 45675 | 8 | 1 | Bangalore | 1 |
întâmpla | 9 | 9086 Mariam Square Suite 698 South Dulce, MT 82861-3079 | Două | Două | Mumbai | Două |
lucruri | 10 | 783 Goodwin Burgs Ap. 429 Willmsfort, UT 42820-1019 | 9 | 1 | Bangalore | 1 |
Care | unsprezece | 42928 Traseul Ernesto East Jules, WV 87169-2851 | 1 | NUL | NUL | NUL |
Acea | 12 | 161 Kassulke Stravenue Apt. 937 Williamsonton, MS 62622 | 7 | Două | Mumbai | Două |
Dureri | 13 | 22811 Liliana Trail Apt. 890 South Ernesto, MT 04134 | 10 | NUL | NUL | NUL |
Afară | 14 | 981 Laron Overpass Suite 361 West Olahaven, FL 46982-7801 | 10 | 1 | Bangalore | 1 |
rezistenta | cincisprezece | 411 Moara Louisa South Maximefort, MA 04903 | 8 | Două | Mumbai | Două |
are nevoie | 16 | 2853 Jonathon Turnpike Quitzonville, KY 54776 | 4 | 1 | Bangalore | 1 |
Fugit | 17 | 3647 Rosalinda Corner Maureenstad, RI 96605 | 5 | NUL | NUL | NUL |
corp | 18 | 03559 Nicholas Circle ap. 364 West Zettaberg, ID 58592-3447 | 8 | Două | Mumbai | Două |
sau | 19 | 56111 Alysson Gateway Apt. 212 Leschbury, VT 90605-2306 | 8 | NUL | NUL | NUL |
Vă rog | douăzeci | 263 O'Keefe Avenue Apt. 884 West Missouri, IL 50303 | 6 | 1 | Bangalore | 1 |
b) ÎNREGISTRARE EXTERNĂ DREPT
Similar cu LEFT JOIN, în acest tip de Join toate înregistrările care nu se potrivesc din tabelul din dreapta sunt returnate cu valori NULL pe coloanele din tabelul din stânga.
de ce filmele solare nu funcționează
De exemplu, cu tabelele noastre eșantion, dacă executăm RIGHT JOIN pe aceeași interogare pe care am folosit-o pentru LEFT JOIN, vom obține valori NULL pentru orașele „Seattle” și „Santa Clara” deoarece nu există rânduri în tabelul Angajaților care au locația setată la aceste valori.
SELECT * from Employee RIGHT OUTER JOIN office_locations ON Employee.office_id = office_locations.id
Rezultatul interogării de mai sus:
Nume | Id | Abordare | Department_id | Office_id | Adresa biroului | Id |
---|---|---|---|---|---|---|
Vă rog | douăzeci | 263 O'Keefe Avenue Apt. 884 West Missouri, IL 50303 | 6 | 1 | Bangalore | 1 |
supărări | Două | 6658 Hollis Club 19743. Ernamouth, TX | 10 | 1 | Bangalore | 1 |
lucruri | 4 | 91067 Fortul Geovany Hanefort, WA 92863 | 6 | 1 | Bangalore | 1 |
nerăbdare | 8 | 117 Nellie Summit Suite 982 South Heavenfurt, CA 45675 | 8 | 1 | Bangalore | 1 |
lucruri | 10 | 783 Goodwin Burgs Ap. 429 Willmsfort, UT 42820-1019 | 9 | 1 | Bangalore | 1 |
Afară | 14 | 981 Laron Overpass Suite 361 West Olahaven, FL 46982-7801 | 10 | 1 | Bangalore | 1 |
are nevoie | 16 | 2853 Jonathon Turnpike Quitzonville, KY 54776 | 4 | 1 | Bangalore | 1 |
birouri | 3 | 59965 Mason Neck Apt. 985 Kareemborough, NV 85535 | 9 | Două | Mumbai | Două |
Și | 6 | 9419 Carmela Burg Ap. 687 Aimeebury, SD 32389-4489 | 8 | Două | Mumbai | Două |
întâmpla | 9 | 9086 Mariam Square Suite 698 South Dulce, MT 82861-3079 | Două | Două | Mumbai | Două |
Acea | 12 | 161 Kassulke Stravenue Apt. 937 Williamsonton, MS 62622 | 7 | Două | Mumbai | Două |
rezistenta | cincisprezece | 411 Moara Louisa South Maximefort, MA 04903 | 8 | Două | Mumbai | Două |
corp | 18 | 03559 Nicholas Circle ap. 364 West Zettaberg, ID 58592-3447 | 8 | Două | Mumbai | Două |
NUL | NUL | NUL | NUL | NUL | Seattle | 3 |
NUL | NUL | NUL | NUL | NUL | Sfanta Clara | 4 |
Note / Sfaturi:
- În alte baze de date relaționale, cum ar fi Microsoft SQL - este posibil să găsiți un alt tip de OUTER JOIN, care se numește FULL OUTER JOIN. Nu este altceva decât o combinație atât de combinații INNER, cât și OUTER - adică va returna valori NULL atât din tabelele STÂNGA, cât și din DREAPTA.
- Pentru o discuție detaliată, împreună cu explicații și exemple cu privire la diferențele dintre INNER și OUTER JOINS, vă rugăm să consultați tutorialul nostru Aici.
- În interogările OUTER JOIN - RIGHT OUTER JOIN și LEFT OUTER JOIN ar putea fi specificate doar ca RIGHT JOIN și respectiv LEFT JOIN pentru mai multă lizibilitate.
CROSS JOIN
CROSS JOIN se mai numește produs cartezian. Returnează un rezultat împotriva condițiilor de asociere potrivite cu un total de m x n rânduri unde m și n sunt un număr de rânduri potrivite din tabelul 1 și tabelul 2 împotriva condiției JOIN.
Să vedem un exemplu de interogare pentru un CROSS JOIN pentru obținerea rezultatelor din 2 tabele - Angajații și locațiile biroului
SELECT * from Employee CROSS JOIN office_locations
Rezultatul returnat va conține un total de 80 de rânduri, ceea ce nu este altceva decât produsul rândurilor din ambele tabele - Angajat (20) x birouri_locări (4) => 80
Vă rugăm să rețineți că, în timp ce faceți CROSS JOIN nu trebuie să specificați nicio condiție JOIN, deoarece oricum ați obține m x n rezultat.
Note / Sfaturi:
Nu veți găsi de multe ori folosind CROSS JOIN, deoarece nu are multe cazuri de utilizare asociate. Această alăturare este executată în general atunci când cineva caută să obțină toate combinațiile posibile împotriva datelor din 2 tabele.
De exemplu: Să presupunem că sunteți un exportator de articole de îmbrăcăminte și că aveți 2 tabele - unul cu date de culoare și altul cu date de mărime. Aici, pentru a vă asigura inventarul, puteți lua în considerare realizarea unei ÎNCROCĂTURI a ambelor tabele pentru a vă asigura că toate articolele de îmbrăcăminte sunt achiziționate pentru toate combinațiile de dimensiuni și culori.
AUTO ÎNSCRIEȚI-VĂ
SELF JOIN este la fel ca orice altă combinație INNER sau OUTER, cu singurele excepții că ambele tabele, adică tabelul de asociere și de asociere sunt aceleași.
În general, folosim SELF Joins atunci când dorim să aflăm relația dintre rândurile aceluiași tabel. De exemplu, dacă un tabel are atât ID-ul angajatului, cât și ID-ul angajatului supervizorului, ne putem alătura tabelului împotriva lui însuși, dacă dorim să aflăm numele managerului împotriva numelui angajatului.
automatizarea construcției vă va ajuta
Vă rugăm să rețineți că pentru SELF JOIN ar trebui să utilizați aliasuri de tabel, astfel încât condițiile de asociere să poată fi specificate referindu-se la tabelul corect.
Să vedem un exemplu aici:
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
Aici, ne-am alăturat tabelului angajaților pentru a afla numele angajaților care au aceeași locație de birou și departament
Angajat1 | Angajat2 |
---|---|
Și | rezistenta |
supărări | supărări |
supărări | Afară |
Oficiis | birouri |
lucruri | lucruri |
lucruri | Vă rog |
Și | Și |
Și | corp |
nerăbdare | nerăbdare |
întâmpla | întâmpla |
lucruri | lucruri |
Acea | Acea |
Afară | supărări |
Afară | Afară |
rezistenta | Și |
rezistenta | rezistenta |
rezistenta | corp |
are nevoie | are nevoie |
corp | Și |
corp | rezistenta |
corp | corp |
Vă rog | lucruri |
Vă rog | Vă rog |
Așa cum am discutat, SELF JOIN are doar tabele Alăturare și Alăturat la fel, putem folosi SELF JOIN cu Inner sau OUTER Joins.
MySQL ÎNSCRIEȚI-VĂ CU ACTUALIZARE ȘI ȘTERGERE
Până acum, am discutat despre Alăturări cu instrucțiuni SELECT. Cu toate acestea, Asocierile ar putea fi folosite și cu instrucțiunile MySQL DELETE și UPDATE.
Sintaxa rămâne aceeași aici. Să vedem câteva exemple pentru a înțelege mai bine conceptul.
ACTUALIZAȚI CU INNER JOIN
Să presupunem că dorim să schimbăm adresa din tabelul Angajați cu numele locației biroului care este prezent în tabelul birou_locări. Aici putem folosi INNER JOIN pentru a prelua numele orașului din office_locations și pentru a actualiza aceeași interogare.
Exemplu de interogare:
UPDATE Employee emp inner join office_locations off_loc on emp.office_id = off_loc.id set emp.address = off_loc.address;
Similar cu aceasta, UPDATE poate fi utilizat și cu alte tipuri de Joins, în funcție de cerința împotriva unor cazuri de utilizare specifice.
ȘTERGEȚI Cu INNER JOIN
Vom folosi tabele, Employee și Employee_Departments ca exemplu. Să presupunem că dorim să ștergem toate înregistrările angajaților care aparțin departamentului de vânzări și vrem să ștergem și intrarea pentru departamentul de vânzări.
Deoarece am folosit Department_id ca constrângere FOREIGN KEY, prin urmare ar trebui mai întâi DROP această constrângere înainte de a utiliza DELETE with JOIN pentru mai multe tabele.
Să aflăm mai întâi numele constrângerii create pentru Department_id în tabelul Angajați. Pur și simplu rulați comanda pentru a obține comanda CREATE TABLE.
show create table Employee
Veți obține rezultatul ca:
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
Acum puteți consulta numele constrângerii FOREIGN_KEY din comanda de mai sus, care este „Employee_ibfk_1” și putem folosi acest nume pentru a renunța la această constrângere din tabelul Angajați executând comanda de mai jos:
alter table Employee drop constraint Employee_ibfk_1
Acum să executăm comanda DELETE cu INNER JOIN
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
Ieșirea acestei comenzi ar fi nr. de rânduri șterse (și acest lucru ar trebui ȘTERGERE cu succes rândurile din ambele tabele la care se face referire în interogarea JOIN de mai sus)
întrebări frecvente
Q # 1) Câte tipuri de Joins există în MySQL?
Răspuns: MySQL acceptă în principal 3 tipuri de Joins. Acestea sunt:
- Alăturare interioară
- Îmbinare exterioară - Îmbinare exterioară stângă și Îmbinare exterioară dreaptă
- Alăturați-vă încrucișat
Q # 2) Join poate fi folosit doar pentru 2 tabele?
Răspuns: Asocierile pot fi aplicate la 2 sau mai mult de 2 tabele. De cele mai multe ori Alăturările sunt utilizate pentru 2 tabele.
Mai jos este un exemplu de INNER JOIN folosind 3 tabele:
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
Rezultatul interogării de mai sus:
emp_name | nume_dept | locația biroului |
---|---|---|
Afară | Management | Bangalore |
supărări | Management | Bangalore |
lucruri | Securitate | Bangalore |
Și | Personal contractual | Mumbai |
nerăbdare | Personal contractual | Bangalore |
întâmpla | HR | Mumbai |
Acea | A sustine | Mumbai |
rezistenta | Personal contractual | Mumbai |
are nevoie | Contabilitate | Bangalore |
corp | Personal contractual | Mumbai |
Vă rog | Securitate | Bangalore |
Î # 3) Cum se utilizează pseudonimele de tabel cu Alăturări?
Răspuns: Aliasurile sunt o modalitate de a avea un nume temporar pentru o tabelă la care să se facă referire în cadrul unei interogări. Deoarece interogările JOIN sunt uneori complexe și pentru a face interogările lizibile și pentru a evita trimiterea la numele tabelelor pentru fiecare referință de coloană, putem avea nume scurtate cu pseudonime.
Să scriem o interogare INNER JOIN pentru a prelua date pentru toate numele angajaților și numele departamentelor din tabelele Angajat și, respectiv, Departamentul_ angajați.
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
În interogarea de mai sus, puteți vedea că am aliasat tabelul Angajați ca emp și tabelul Angajat_Departament ca Departament și am folosit aliasurile pentru referințarea numelor coloanelor și a condițiilor de Alăturare.
Q # 4) Ce este CROSS JOIN?
Răspuns: CROSS JOIN este un tip de Join în care utilizatorul dorește să aducă produsul cartezian al tabelelor care se alătură.
Rezultatul CROSS JOIN este m x n unde m este numărul rândurilor potrivite din primul tabel și n este numărul rândurilor potrivite din al doilea tabel.
Q # 5) Cum se obține FULL OUTER JOIN în MySQL
Răspuns: MySQL nu furnizează FULL OUTER JOIN ca tip de Join separat, spre deosebire de alte baze de date precum Microsoft SQL. Cu toate acestea, pentru a obține rezultate așa cum s-ar fi preluat un FULL OUTER JOIN, putem combina rezultatele pentru STÂNGA EXTERIOR și DREAPTA EXTERIOR.
De exemplu, putem prelua detaliile despre angajați și departamente și putem aplica uniunea pentru îmbinările exterioare stânga și dreapta.
Citire recomandată = >> Operator MySQL Union
Concluzie
În acest tutorial, am aflat despre diferite tipuri de Joins care sunt disponibile în MySQL.
Am discutat INNER, OUTER, CROSS și SELF Joins și am văzut și modul în care interogările JOIN ar putea fi utilizate cu instrucțiunile UPDATE și DELETE pentru a avea interogări eficiente și optimizate pentru datele Unite între 2 sau mai mult de 2 tabele.
JOINS este una dintre cele mai de bază interogări utilizate și oricine folosește sau învață baze de date bazate pe SQL ar trebui să aibă o înțelegere aprofundată a SQL Joins.
Lectură recomandată
- Alăturare interioară Vs Alăturare exterioară: Diferență exactă cu exemple
- Tutorial MySQL Create View cu exemple de cod
- Instrucțiunea MySQL Delete - Ștergeți sintaxa comenzilor și exemple
- MySQL Insert Into Table - Inserați sintaxa declarațiilor și exemple
- Tutorial MySQL Update Declarație - Actualizați sintaxa interogării și exemple
- Diferența dintre SQL și MySQL împotriva SQL Server (cu exemple)
- Ce este MySQL și de ce este folosit?
- 20+ Tutorial MongoDB pentru începători: curs gratuit MongoDB