Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Jenis-jenis SQL JOIN

SQL JOIN menggabungkan satu atau lebih dari satu tabel berdasarkan hubungannya. SQL JOIN melibatkan tabel induk dan hubungan tabel anak.

Ada berbagai jenis SQL BERGABUNG:

  1. Gabungan Batin
  2. Gabung Luar Kiri
  3. Gabung Luar Kanan
  4. Gabung Luar Penuh
  5. Gabung Lintas.

Mari kita pahami setiap jenis gabungan SQL dengan bantuan contoh.

Gabungan Batin

Inner Join di SQL adalah gabungan yang banyak digunakan. Itu mengambil semua catatan dari kedua tabel sampai dan kecuali kondisinya cocok. Artinya, gabungan ini hanya akan mengembalikan baris yang sama di kedua tabel.

Sintaks SQL Inner Join:

SELECT  Table_Name1.Colum_Name1,     Table_Name1.Column_Name2, Table_Name1.Column_Name3,Table_Name2.Column_Name1,Table_Name2.Column_Name2, Table_Name2.Column_Name3, FROM Table_Name1 INNER JOIN Table_Name1. 

Pertimbangkan tabel yang sudah ada, yang memiliki data tertentu:

Tabel 1:Karyawan

KARYAWAN FIRST_NAME LAST_NAME GAJI KOTA DEPARTEMEN MANAGERID
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60000 NOIDA C# 5
1003 NIKHIL VANI 50500 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50.000 MUMBAI C# 5
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4001 RAJESH BAIK 60500 MUMBAI UJI 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
4003 RUCHIKA AGRWAL 60000 DELHI ORACLE 1
5001 ARKIT SHARMA 55500 DELHI UJI 4

Tabel 2:Manajer

Pengelola nama_manajer manajer_departemen
1 Snehdeep Kaur ORACLE
2 Kirti Kirtane FMW
3 Abhishek Manish JAVA
4 Anupam Mishra UJI
5 Akash Kadam C#

Tabel 3:Laptop:

LAPTOPID NAMA KARYAWAN
L101 DELL NULL
L102 HP 1002
L103 LENOVO NULL
L104 HP 3003
L105 DELL 4002
L106 LENOVO 4003
L107 DELL 5001
L108 HP NULL
L109 DELL NULL
L110 HP NULL

Contoh SQL Inner Join

Contoh 1: Jalankan kueri untuk bergabung dengan Tabel Karyawan dan Tabel Manajer serta menampilkan detail karyawan seperti id karyawan, nama karyawan, gaji dari tabel karyawan, serta id manajer dan nama manajer dari tabel manajer.

PILIH E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, M.MANAGERID, M.MANAGER_NAME FROM EMPLOYEES E INNER JOIN MANAGER M ON E.MANAGERID =M.MANAGERID;

Dalam kueri di atas, kami mengambil id karyawan, nama depan, nama belakang, gaji dari tabel karyawan dan id manajer, nama manajer dari tabel manajer di mana kolom id manajer tabel karyawan sama dengan kolom id manajer tabel manajer. Kueri akan mengembalikan semua catatan kecocokan dari kedua tabel. Id manajer adalah kolom umum di antara kedua tabel. E adalah nama alias untuk tabel karyawan, sedangkan M untuk tabel manager. Bidang id manajer ditempatkan sebagai kunci asing di tabel karyawan. ID pengelola berfungsi sebagai kunci utama dalam tabel pengelola, yang menciptakan hubungan induk-anak antara dua tabel.

Keluaran:

KARYAWAN FIRST_NAME LAST_NAME GAJI MANAGERID MANAGER_NAME
1001 VAIBHAVI MISHRA 65500 1 Sneedeep Kaur
2001 PRACHI SHARMA 55500 1 Sneedeep Kaur
4003 RUCHIKA AGRWAL 60000 1 Sneedeep Kaur
1003 NIKHIL VANI 50500 2 Kirti kirtan
2002 BHAVESH JAIN 65500 2 Kirti kirtan
3002 ANUJA WANRE 50500 2 Kirti kirtan
3001 PRANOTI SHENDE 55500 3 Abhishek Manish
3003 DEEPAM JAUHARI 58500 3 Abhishek Manish
4002 ASHWINI BAGHAT 54500 3 Abhishek Manish
4001 RAJESH BAIK 60500 4 Anupam Mishra
5001 ARKIT SHARMA 55500 4 Anupam Mishra
1002 VAIBHAV SHARMA 60000 5 Akash Kadam
2003 RUCHIKA JAIN 50.000 4 Akash Kadam

Catatan ditampilkan dalam urutan menaik menurut id pengelola.

Contoh 2: Jalankan kueri untuk bergabung dengan Tabel Karyawan dan tabel Manajer, dan tampilkan detail karyawan seperti id karyawan, nama karyawan, gaji dari tabel karyawan dan id manajer dan departemen manajer dari tabel manajer di mana gaji karyawan lebih besar dari 58000.

PILIH E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, M.MANAGERID, M.MANAGER_DEPARTMENT FROM EMPLOYEES E INNER JOIN MANAGER M ON E.MANAGERID =M.MANAGERID MANA GAJI> 58000;

Dalam kueri di atas, kami mengambil id karyawan, nama depan, nama belakang, gaji dari tabel karyawan, id manajer, dan departemen manajer dari tabel manajer di mana id manajer dari tabel karyawan sama dengan id manajer dari manajer tabel hanya catatan karyawan yang gajinya lebih besar dari 58000.

Keluaran:

KARYAWAN FIRST_NAME LAST_NAME GAJI MANAGERID MANAGER_DEPARTMENT
1001 VAIBHAVI MISHRA 65500 1 ORACLE
4003 RUCHIKA AGRWAL 60000 1 ORACLE
2002 BHAVESH JAIN 65500 2 FMW
3003 DEEPAM JAUHARI 58500 3 JAVA
4001 RAJESH BAIK 60500 4 UJI
1002 VAIBHAV SHARMA 60000 5 C#

Hanya enam catatan yang ditampilkan di mana gaji karyawan melebihi 58.000.

Contoh 3: Jalankan query untuk bergabung dengan tabel Karyawan dan Meja Laptop, tampilkan detail karyawan seperti id karyawan, nama karyawan, dan gaji, kota dari tabel karyawan, id laptop, dan nama laptop dari tabel laptop

PILIH EMP.EMPLOYEEID, EMP.FIRST_NAME, EMP.SALARY, EMP.CITY, LAP.LAPTOPID, LAP. NAMA DARI KARYAWAN EMP INNER GABUNG LAPTOP LAP DI EMP.EMPLOYEEID =LAP.EMPLOYEEID;

Dalam kueri di atas, kami mengambil id karyawan, nama depan, gaji, kota dari id laptop tabel karyawan, dan nama dari tabel laptop di mana id karyawan dari tabel karyawan sama dengan id karyawan dari tabel laptop. ID Karyawan adalah kunci asing di tabel Laptop, yang membuat hubungan induk-anak antara tabel Karyawan dan tabel Laptop.

Keluaran:

KARYAWAN FIRST_NAME GAJI KOTA LAPTOPID NAMA
1002 VAIBHAV 60000 NOIDA L102 HP
3003 DEEPAM 58500 MUMBAI L104 HP
4002 ASHWINI 54500 NOIDA L105 DELL
4003 RUCHIKA 60000 DELHI L106 LENOVO
5001 ARKIT 55500 DELHI L107 DELL

Hanya lima catatan karyawan yang ditampilkan.

Contoh 4: Tulis kueri untuk menampilkan id karyawan, nama depan, gaji, dan departemen dari tabel karyawan ID Manajer dan nama manajer dari tabel manajer menggunakan gabungan dalam di mana gaji> 55000 dan departemen adalah Oracle.

PILIH EMPLOYEEID, FIRST_NAME, GAJI, DEPARTEMEN, M.MANAGERID, M.MANAGER_NAME DARI KARYAWAN E INNER GABUNG MANAGER M PADA E.MANAGERID =M.MANAGERID MANA GAJI> 55000 DAN DEPARTEMEN ='ORACLE';

Dalam contoh query join di atas, kami menampilkan detail karyawan seperti id, nama, gaji, dan departemen dari tabel karyawan, id manajer, dan nama manajer dari tabel manajer di mana id manajer dari tabel karyawan sama dengan id manajer dari manajer hanya karyawan yang gajinya lebih besar dari 55000 dan Departemennya adalah Oracle.

Keluaran:

KARYAWAN FIRST_NAME GAJI DEPARTEMEN MANAGERID MANAGER_NAME
1001 VAIBHAVI 65500 ORACLE 1 Snehdeep Kaur
2001 PRACHI 55500 ORACLE 1 Snehdeep Kaur
4003 RUCHIKA 60000 ORACLE 1 Snehdeep Kaur

Hanya tiga karyawan yang gajinya lebih besar dari 55000 dan departemennya adalah Oracle.

Contoh 5: Jalankan kueri bergabung di tabel Karyawan, Manajer, dan Laptop, dan tampilkan detail karyawan, id manajer, dan id laptop.

PILIH E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, M.MANAGERID, L.LAPTOPID DARI KARYAWAN E INNER GABUNG MANAGER M PADA E.MANAGERID =M.MANAGERID INNER JOIN LAPTOP L PADA E.EMPLOYEEID =L.EMPLOYEEID; 

Query di atas menampilkan id karyawan, nama depan, nama belakang, id manajer, dan id laptop dari tabel karyawan, manajer, dan laptop. Kami bergabung dengan tiga tabel. Id karyawan adalah kolom umum antara karyawan dan tabel laptop dan membuat hubungan induk-anak antara ketiga tabel ini. Antara karyawan dan manajer, id manajer tabel adalah kolom umum.

Keluaran:

KARYAWAN FIRST_NAME LAST_NAME MANAGERID LAPTOPID
4003 RUCHIKA AGRWAL 1 L106
3003 DEEPAM JAUHARI 3 L104
4002 ASHWINI BAGHAT 3 L105
5001 ARKIT SHARMA 4 L107
1002 VAIBHAV SHARMA 5 L102

Gabung Luar Kiri

Gabung luar kiri akan mengembalikan semua catatan tabel di sisi kiri gabungan dan catatan yang cocok untuk tabel di sisi kanan gabungan. Kumpulan hasil berisi nol untuk catatan yang tidak umum di sisi kanan.

Sintaks gabungan luar kiri:

SELECT        Table_Name1.Colum_Name1,     Table_Name1.Column_Name2, Table_Name1.Column_Name3,Table_Name2.Column_Name1,Table_Name2.Column_Name2, Table_Name2.Column_Name3, FROM_Nama_Tabel1 JOLE_Nama_Tabel. 

Pertimbangkan tabel yang ada, yang memiliki catatan berikut:

Tabel 1:Karyawan

KARYAWAN FIRST_NAME LAST_NAME GAJI KOTA DEPARTEMEN MANAGERID
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60000 NOIDA C# 5
1003 NIKHIL VANI 50500 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50.000 MUMBAI C# 5
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4001 RAJESH BAIK 60500 MUMBAI UJI 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
4003 RUCHIKA AGRWAL 60000 DELHI ORACLE 1
5001 ARKIT SHARMA 55500 DELHI UJI 4

Tabel 2:Manajer

Pengelola nama_manajer manajer_departemen
1 Snehdeep Kaur ORACLE
2 Kirti Kirtane FMW
3 Abhishek Manish JAVA
4 Anupam Mishra UJI
5 Akash Kadam C#

Tabel 3:Laptop

LAPTOPID NAMA KARYAWAN
L101 DELL NULL
L102 HP 1002
L103 LENOVO NULL
L104 HP 3003
L105 DELL 4002
L106 LENOVO 4003
L107 DELL 5001
L108 HP NULL
L109 DELL NULL
L110 HP NULL

Contoh SQL Left Outer Join

Contoh 1: Jalankan kueri gabungan luar kiri pada tabel Karyawan dan tabel Laptop, tempat menampilkan id karyawan, nama karyawan, dan id laptop.

PILIH E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, L.LAPTOPID, L.NAME FROM EMPLOYEES E LEFT OUTER JOIN LAPTOP L PADA E.EMPLOYEEID =L.EMPLOYEEID; 

Dalam kueri di atas, kami menampilkan id karyawan, nama depan, nama belakang dari id laptop tabel karyawan, dan nama dari tabel laptop dan melakukan kueri join luar kiri pada dua tabel ini. Kueri akan mengembalikan nilai nol di sisi kanan tabel jika baris antar tabel tidak sama.

Keluaran:

KARYAWAN FIRST_NAME LAST_NAME LAPTOPID NAMA
1001 VAIBHAVI MISHRA NULL NULL
1002 VAIBHAV SHARMA L102 HP
1003 NIKHIL VANI NULL NULL
2001 PRACHI SHARMA NULL NULL
2002 BHAVESH JAIN NULL NULL
2003 RUCHIKA JAIN NULL NULL
3001 PRANOTI SHENDE NULL NULL
3002 ANUJA WANRE NULL NULL
3003 DEEPAM JAUHARI L104 HP
4001 RAJESH BAIK NULL NULL
4002 ASHWINI BAGHAT L105 DELL
4003 RUCHIKA AGRWAL L106 LENOVO
5001 ARKIT SHARMA L107 DELL

Contoh 2: Tulis kueri untuk mengambil id karyawan, nama depan, nama belakang, gaji dari tabel karyawan kiri luar gabung di meja laptop di mana gaji> 55000.

PILIH E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, L.LAPTOPID, L.NAME FROM EMPLOYEES E LEFT OUTER JOIN LAPTOP L PADA E.EMPLOYEEID =L.EMPLOYEEID MANA GAJI> 55000; 

Dalam kueri di atas, kami mengambil detail karyawan dari tabel karyawan dan detail laptop dari tabel laptop, tetapi hanya detail karyawan yang gajinya lebih besar dari 55000. Kami melakukan kueri gabung luar kiri pada dua tabel ini. Kueri akan mengembalikan nilai nol di sisi kanan tabel jika baris antar tabel tidak sama.

Keluaran:

KARYAWAN FIRST_NAME LAST_NAME GAJI LAPTOPID NAMA
1001 VAIBHAVI MISHRA 65500 NULL NULL
1002 VAIBHAV SHARMA 60000 L102 HP
2001 PRACHI SHARMA 55500 NULL NULL
2002 BHAVESH JAIN 65500 NULL NULL
3001 PRANOTI SHENDE 55500 NULL NULL
3003 DEEPAM JAUHARI 58500 L104 HP
4001 RAJESH BAIK 60500 NULL NULL
4003 RUCHIKA AGRWAL 60000 L106 LENOVO
5001 ARKIT SHARMA 55500 L107 DELL

Gabung Luar Kanan

Gabungan luar kanan akan mengembalikan semua catatan tabel di sisi kanan gabungan dan catatan yang cocok untuk tabel di sisi kiri gabungan. Kumpulan hasil berisi nol untuk catatan yang tidak umum di sisi kiri.

Sintaks gabungan luar kanan:

SELECT        Table_Name1.Colum_Name1,     Table_Name1.Column_Name2, Table_Name1.Column_Name3,Table_Name2.Column_Name1,Table_Name2.Column_Name2, Table_Name2.Column_Name3, FROM_Nama_OUTER Tabel _Nama_Kolom =_Nama_Kolom Tabel . 

Contoh SQL Right Outer Join

Contoh 1: Jalankan kueri gabungan luar kanan di meja karyawan dan meja laptop, di mana menampilkan id karyawan, nama karyawan.

PILIH E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, L.LAPTOPID, L.NAME FROM EMPLOYEES E Right OUTER JOIN LAPTOP L PADA E.EMPLOYEEID =L.EMPLOYEEID; 

Pada query di atas, kami menampilkan id karyawan, nama depan, nama belakang dari id laptop tabel karyawan, dan nama dari tabel laptop dan melakukan query outer join kanan pada dua tabel ini. Kueri akan mengembalikan nilai nol di sisi kiri tabel jika baris antar tabel tidak sama.

Keluaran:

KARYAWAN FIRST_NAME LAST_NAME LAPTOPID NAMA
NULL NULL NULL L101 DELL
1002 VAIBHAV SHARMA L102 HP
NULL NULL NULL L103 LENOVO
3003 DEEPAM JAUHARI L104 HP
4002 ASHWINI BAGHAT L105 DELL
4003 RUCHIKA AGRWAL L106 LENOVO
5001 ARKIT SHARMA L107 DELL
NULL NULL NULL L108 HP
NULL NULL NULL L109 DELL
NULL NULL NULL L110 HP

Contoh 2: Tulis kueri untuk mengambil id karyawan, nama depan, dan nama belakang dari tabel karyawan. Gabungan luar kanan pada meja laptop di mana nama laptop termasuk salah satu daftarnya adalah Dell, HP.

PILIH E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, L.LAPTOPID, L.NAME DARI KARYAWAN E KANAN LUAR BERGABUNG LAPTOP L DI E.EMPLOYEEID =L.EMPLOYEEID WHERE L.NAME IN (' DELL', 'HP');

Dalam query di atas, kami menampilkan detail karyawan dari tabel detail laptop karyawan di meja laptop. Kami melakukan kueri gabungan luar kanan pada dua tabel ini hanya karyawan yang nama laptopnya termasuk salah satu daftar adalah Dell dan HP. Kueri akan mengembalikan nilai nol di sisi kiri tabel jika baris antar tabel tidak sama.

Keluaran:

KARYAWAN FIRST_NAME LAST_NAME LAPTOPID NAMA
NULL NULL NULL L101 DELL
1002 VAIBHAV SHARMA L102 HP
3003 DEEPAM JAUHARI L104 HP
4002 ASHWINI BAGHAT L105 DELL
5001 ARKIT SHARMA L107 DELL
NULL NULL NULL L108 HP
NULL NULL NULL L109 DELL
NULL NULL NULL L110 HP

Gabung Luar Penuh

Full Outer Join menggabungkan hasil dari Left Outer Joins dan Right Outer Join. Full Outer Join sama dengan Cross Join. Full Outer Joins mengembalikan output, di mana baris adalah umum atau tidak umum di antara tabel.

Sintaks full outer join:

PILIH COLUMNNAME1, COLUMNNAME2 DARI TABLE1 FULL JOIN TABLE2;

Contoh 1: Tulis kueri untuk menampilkan id karyawan, nama depan, nama belakang dari id manajer dari tabel karyawan lengkap luar bergabung dengan Tabel Manajer di mana gaji karyawan lebih besar dari 65000.

PILIH EMPLOYEEID, FIRST_NAME, LAST_NAME, M.MANAGERID DARI KARYAWAN FULL JOIN MANAGER M MANA GAJI> 65000;

Dalam kueri di atas, kami menampilkan detail karyawan dan detail manajer dari tabel karyawan dan manajer di mana gaji karyawan lebih besar dari 65000 menggunakan full join. Secara penuh, gabungkan setiap Baris tabel karyawan di setiap Baris tabel manajer, yaitu, produk Cartesian akan terjadi. M * T

Keluaran:

KARYAWAN FIRST_NAME LAST_NAME MANAGERID
1001 VAIBHAVI MISHRA 1
1001 VAIBHAVI MISHRA 2
1001 VAIBHAVI MISHRA 3
1001 VAIBHAVI MISHRA 4
1001 VAIBHAVI MISHRA 5
2002 BHAVESH JAIN 1
2002 BHAVESH JAIN 2
2002 BHAVESH JAIN 3
2002 BHAVESH JAIN 4
2002 BHAVESH JAIN 5

Seperti yang kita lihat, employee id 1001 cross bergabung dengan masing-masing manager id, sama dengan employee id 2002.

Contoh 2: Jalankan kueri gabungan luar penuh pada tabel Karyawan dan tabel laptop, di mana gaji karyawan lebih besar dari 60000, dan lokasi karyawan adalah Pune.

PILIH LAPTOPID, E.EMPLOYEEID, E.FIRST_NAME, E.SALARY, E.CITY DARI LAPTOP FULL JOIN EMPLOYEES E WHERE GARY> 60000 AND CITY ='PUNE';

Dalam query di atas, kami menampilkan laptop id, employee id, first name, salary, dan city from laptop full join employee hanya yang gajinya lebih besar dari 60000 dan kota Pune. Jika kedua kondisi cocok untuk karyawan saja, maka catatan akan diambil.

Keluaran:

Gabung Lintas

Gabungan silang dalam SQL tidak lain adalah disebut produk kartesius. Setiap Baris dari satu tabel digabungkan atau digabungkan dengan setiap Baris dari tabel lainnya. M * N adalah silang Gabung

Sintaks Cross bergabung:

PILIH NAMA KOLOM1, NAMA KOLOM2 DARI TABEL1 LINTAS GABUNG TABEL2;

Contoh 1: Tulis kueri untuk melakukan operasi penggabungan silang pada tabel karyawan dan tabel manajer di mana nama depan karyawan dimulai dengan A

PILIH EMPLOYEEID, FIRST_NAME, M.MANAGERID DARI KARYAWAN LINTAS GABUNG MANAGER M MANA FIRST_NAME LIKE 'A%';

Dalam contoh kueri gabungan luar lengkap di atas, kami mengambil detail karyawan dan detail manajer dari tabel karyawan dan tabel manajer tetapi hanya catatan di mana nama depan karyawan dimulai dengan huruf 'A'.

Keluaran:

Hasilnya menunjukkan bahwa id karyawan adalah gabungan silang dengan setiap baris id manajer.

M * N Di sini, M =3; id karyawan dari tabel karyawan

N =5; id manajer dari tabel manajer 3 * 5 =15 baris.

Contoh 2: Tulis kueri untuk melakukan operasi penggabungan silang pada tabel laptop dan tabel karyawan di mana gaji karyawan lebih besar dari 58000 dan Mumbai.

PILIH LAPTOPID, NAMA, E.EMPLOYEEID DARI LAPTOP CROSS JOIN EMPLOYEES E WHERE GARY> 58000 AND CITY ='MUMBAI';

Dalam query di atas, kami menampilkan id laptop, nama, dan id karyawan dari tabel laptop untuk melakukan operasi cross join pada tabel karyawan di mana gaji karyawan lebih besar dari 58000 dan kota Pune. Cross join tampil seperti M * N.

Keluaran:


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Game MMO dan Desain Basis Data

  2. SQL SUM() untuk Pemula

  3. Kompleksitas NULL – Bagian 1

  4. Cara Melindungi Aplikasi JDBC Terhadap Injeksi SQL

  5. Bagaimana Menangani Pembagian dengan Nol Dalam SQL