Pada artikel ini, kita akan melihat dari dekat SQL Server JOINs. Kami akan meninjau semua jenis SQL Server JOIN yang didukung dengan sintaks, ilustrasi visual, dan contoh.
Seperti yang kita semua tahu, data tabel adalah inti dari setiap database SQL. Untuk menggunakannya secara efektif, administrator database perlu mengekstrak record dari beberapa tabel berdasarkan kondisi tertentu secara teratur. Dan itulah gunanya SQL JOIN.
JOIN adalah klausa SQL yang digunakan untuk mengambil yang data dari dua tabel atau lebih berdasarkan hubungan logis antar tabel. Gabung menunjukkan bagaimana SQL Server harus menggunakan data dari satu tabel untuk memilih baris di tabel lain.
Berbagai Jenis GABUNG dalam SQL
SQL Server mendukung berbagai jenis JOIN, termasuk INNER JOIN , BERGABUNG DIRI , GABUNG LINTAS , dan GABUNG LUAR . Faktanya, setiap tipe gabungan mendefinisikan cara dua tabel terkait dalam kueri. OUTER JOIN, pada gilirannya, dapat dibagi menjadi LEFT OUTER JOIN , GABUNG LUAR KANAN , dan GABUNG LUAR PENUH .
Untuk mendemonstrasikan cara kerja JOIN dengan lebih baik, kami akan membuat dua tabel.
CREATE TABLE AdventureWorks2019.dbo.users (
auid INT IDENTITY
,username VARCHAR(50) NOT NULL
,password VARCHAR(50) NOT NULL
,createdate DATETIME NOT NULL
,isActive TINYINT NOT NULL
);
CREATE TABLE AdventureWorks2019.dbo.userprofile (
apid INT NOT NULL
,auid INT NOT NULL
,firstname VARCHAR(50) NOT NULL
,lastname VARCHAR(50) NOT NULL
,email VARCHAR(100) NOT NULL
,phone VARCHAR(45) NOT NULL
);
Selanjutnya, kita perlu memasukkan data ke dalam tabel yang dibuat.
USE AdventureWorks2019
GO
Insert into dbo.users
(auid, username,password, createdate, isActive)
values
(1,'admin','pswrd123', GETDATE(), 1);
Insert into dbo.userprofile
(apid, auid, firstname, lastname, email, phone)
values
(1,1,'Jack', 'Wolf', '[email protected]','600075764216');
Insert into dbo.users
(auid,username,password, createdate, isActive)
values
(2, 'admin1','pass506', GETDATE(), 1);
Insert into dbo.userprofile
(apid, auid, firstname, lastname, email, phone)
values
(2, 3, 'Tom', 'Collins', '[email protected]','878511311054');
Insert into dbo.users
(auid, username,password, createdate, isActive)
values
(4,'fox12','[email protected]', GETDATE(), 1);
Insert into userprofile
(apid, auid, firstname, lastname, email, phone)
values
(4,5,'Bill', 'Fonskin', '[email protected]','450985764216');
Insert into dbo.users
(auid,username,password, createdate, isActive)
values
(6, 'lexus1267','98hnfRT6', GETDATE(), 1);
Insert into dbo.userprofile
(apid, auid, firstname, lastname, email, phone)
values
(7, 7, 'John', 'Hopkins', '[email protected]','878511311054');
SQL INNER GABUNG
Pernyataan INNER JOIN mengembalikan record yang memiliki nilai yang cocok di kedua tabel.
Sintaks dari klausa SQL INNER JOIN adalah sebagai berikut:
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
SQL OUTER BERGABUNG
Berlawanan dengan klausa INNER JOIN, OUTER JOIN tidak hanya mengembalikan record yang cocok tetapi juga record yang tidak cocok. Jika ada baris yang tidak cocok dalam tabel yang digabungkan, nilai NULL akan ditampilkan untuknya.
Ada dua jenis OUTER JOIN berikut di SQL Server:SQL LEFT JOIN dan SQL RIGHT JOIN. Mari kita lihat lebih dekat satu per satu.
SQL KIRI BERGABUNG
SQL LEFT JOIN mengembalikan semua catatan dari tabel kiri (tabel A) dan catatan yang cocok dari tabel kanan (tabel B). Hasilnya adalah 0 catatan dari sisi kanan jika tidak ada yang cocok.
Sintaks dari klausa SQL LEFT JOIN adalah sebagai berikut:
SELECT column_name(s)
FROM tableA
LEFT JOIN tableB
ON tableA.column_name = tableB.column_name;
SQL RIGHT GABUNG
Kata kunci RIGHT JOIN mengembalikan semua record dari tabel kanan (table2), dan record yang cocok dari tabel kiri (table1). Hasilnya adalah 0 catatan dari sisi kiri jika tidak ada yang cocok.
Sintaks dari klausa SQL RIGHT JOIN adalah sebagai berikut:
SELECT column_name(s)
FROM tableA
RIGHT JOIN tableB
ON tableA.column_name = tableB.column_name;
SQL FULL OUTER JOIN
FULL OUTER JOIN mengembalikan semua record ketika ada kecocokan pada record tabel kiri (tabel A) atau kanan (tabel B).
Sintaks dari klausa SQL FULL OUTER JOIN adalah sebagai berikut:
SELECT column_name(s)
FROM tableA
FULL OUTER JOIN tableB
ON tableA.column_name = tableB.column_name
WHERE condition;
SQL CROSS GABUNG
SQL CROSS JOIN, juga dikenal sebagai cartesian JOIN, mengambil semua kombinasi baris dari setiap tabel. Dalam tipe JOIN ini, kumpulan hasil dikembalikan dengan mengalikan setiap baris tabel A dengan semua baris dalam tabel B jika tidak ada kondisi tambahan yang dimasukkan.
Untuk lebih memahami CROSS JOIN, mari kita lihat diagram Venn di bawah ini.
Sintaks dari SQL CROSS JOIN adalah sebagai berikut:
SELECT *
FROM tableA
CROSS JOIN tableB;
SQL Self JOIN
Self-join adalah JOIN biasa, tetapi tabel bergabung dengan dirinya sendiri. Ini menyiratkan bahwa setiap baris tabel digabungkan dengan dirinya sendiri dan dengan setiap baris tabel lainnya.
Sintaks dari SQL self JOIN adalah sebagai berikut:
SELECT column_name(s)
FROM table1 T1, table1 T2
WHERE condition;
Kesimpulan
Pengetahuan dan keahlian dalam menggunakan klausa SQL JOIN adalah keterampilan penting dari setiap DBA atau analis. Dengan fungsionalitas Penyelesaian Kode yang luar biasa, dbForge Studio untuk SQL Server dapat menghemat waktu dan tenaga Anda untuk menulis klausa JOIN yang paling rumit sekalipun. Anda tidak perlu mengingat ratusan nama kolom atau alias, dbForge Studio untuk SQL akan meminta klausa SQL JOIN lengkap. Fungsionalitas yang kaya dari alat ini membuat perancangan kueri SQL yang kompleks dan mengelola kondisi GABUNG menjadi cepat, mudah, dan nyaman.