Giới thiệu về JOIN trong SQL

Giới thiệu về JOIN trong SQL


Khi làm việc với cơ sở dữ liệu, bạn có thể cần lấy dữ liệu từ nhiều bảng khác nhau. Trong SQL, lệnh JOIN cho phép kết hợp dữ liệu từ hai hoặc nhiều bảng dựa trên một điều kiện liên kết cụ thể.

    


I. Các loại JOIN

Có nhiều loại JOIN khác nhau, mỗi loại phục vụ một mục đích cụ thể:

  • INNER JOIN: Chỉ trả về các hàng có giá trị khớp trong cả hai bảng. Đây là loại JOIN phổ biến nhất.
  • LEFT JOIN (hoặc LEFT OUTER JOIN): Trả về tất cả các hàng từ bảng bên trái và các hàng khớp từ bảng bên phải. Nếu không có hàng khớp, các cột từ bảng bên phải sẽ có giá trị NULL.
  • RIGHT JOIN (hoặc RIGHT OUTER JOIN): Tương tự như LEFT JOIN, nhưng trả về tất cả các hàng từ bảng bên phải và các hàng khớp từ bảng bên trái.
  • FULL JOIN (hoặc FULL OUTER JOIN): Trả về tất cả các hàng từ cả hai bảng, kết hợp các hàng khớp và điền NULL cho các cột không khớp.

II. Cú pháp cơ bản của JOIN

Cú pháp chung cho các loại JOIN là:

SELECT column_list
FROM table1
JOIN table2 ON table1.column = table2.column;
  • column_list: Danh sách các cột bạn muốn chọn từ các bảng.
  • table1, table2: Tên của hai bảng bạn muốn kết hợp.
  • ON: Điều kiện xác định cách các bảng được kết hợp. 

Thông thường, điều kiện này liên quan đến việc so sánh các khóa ngoại và khóa chính.

Trong đó:


1. INNER JOIN

 

INNER JOIN trả về các bản ghi khi có sự trùng khớp giữa các hàng trong cả hai bảng được tham gia.

Ví dụ giả sử bạn có hai bảng:


Bảng KhachHang

MaKHTenKH
1Nguyễn Văn A
2Trần Thị B


Bảng DonHang

MaDHMaKHNgayDatHang
10112024-08-01
10222024-08-02
10332024-08-03


Truy vấn INNER JOIN sẽ như sau:

SELECT KhachHang.TenKH, DonHang.NgayDatHang
FROM KhachHang
INNER JOIN DonHang ON KhachHang.MaKH = DonHang.MaKH;

Kết quả:

TenKHNgayDatHang
Nguyễn Văn A2024-08-01
Trần Thị B2024-08-02


2. LEFT JOIN

 

 LEFT JOIN trả về tất cả các bản ghi từ bảng bên trái (bảng đầu tiên), cùng với các bản ghi khớp từ bảng bên phải (bảng thứ hai). Nếu không có sự trùng khớp, kết quả từ bảng bên phải sẽ là NULL.

Ví dụ giả sử bạn có hai bảng:


Bảng KhachHang

MaKHTenKH
1Nguyễn Văn A
2Trần Thị B
3Lê Văn C


Bảng DonHang

MaDHMaKHNgayDatHang
10112024-08-01
10222024-08-02
10332024-08-03
 

Truy vấn LEFT JOIN sẽ như sau:

SELECT      KhachHang.TenKH, DonHang.NgayDatHang
FROM        KhachHang
LEFT JOIN   DonHang ON KhachHang.MaKH = DonHang.MaKH;

TenKHNgayDatHang
Nguyễn Văn A2024-08-01
Trần Thị B2024-08-02
Lê Văn CNULL


3. RIGHT JOIN

RIGHT JOIN tương tự như LEFT JOIN, nhưng sẽ trả về tất cả các bản ghi từ bảng bên phải và các bản ghi khớp từ bảng bên trái. Nếu không có sự trùng khớp, kết quả từ bảng bên trái sẽ là NULL.
Ví dụ giả sử bạn có hai bảng:


Bảng KhachHang

MaKHTenKH
1Nguyễn Văn A
2Trần Thị B


Bảng DonHang

MaDHMaKHNgayDatHang
10112024-08-01
10222024-08-02
10332024-08-03


Truy vấn RIGHT JOIN sẽ như sau:

SELECT KhachHang.TenKH, DonHang.NgayDatHang
FROM KhachHang
RIGHT JOIN DonHang ON KhachHang.MaKH = DonHang.MaKH;
Kết quả:

TenKHNgayDatHang
Nguyễn Văn A2024-08-01
Trần Thị B2024-08-02
NULL2024-08-03


4. FULL OUTER JOIN

 

FULL OUTER JOIN trả về tất cả các bản ghi khi có sự trùng khớp trong bất kỳ bảng nào. Nếu không có sự trùng khớp, kết quả sẽ là NULL từ bảng không có dữ liệu phù hợp.
Ví dụ giả sử bạn có hai bảng:


Bảng KhachHang

MaKHTenKH
1Nguyễn Văn A
2Trần Thị B
4Phạm Thị D


Bảng DonHang

MaDHMaKHNgayDatHang
10112024-08-01
10222024-08-02
10332024-08-03


Truy vấn FULL OUTER JOIN sẽ như sau:

SELECT KhachHang.TenKH, DonHang.NgayDatHang
FROM KhachHang
FULL OUTER JOIN DonHang ON KhachHang.MaKH = DonHang.MaKH;


Kết quả:

TenKHNgayDatHang
Nguyễn Văn A2024-08-01
Trần Thị B2024-08-02
NULL2024-08-03
Phạm Thị DNULL

Post a Comment

Mới hơn Cũ hơn
//13.12.2023