So sánh INNER JOIN và OUTER JOIN trong SQL Server

Hướng dẫn chi tiết về INNER JOIN và OUTER JOIN trong SQL Server, kinh nghiệm thực tế về join

  1. Mục đích của JOIN trong SQL Server
  2. INNER JOIN trong SQL Server
  3. OUTER JOIN trong SQL Server
  4. So sánh giữa INNER JOIN, LEFT JOIN, RIGHT JOIN và FULL JOIN
  5. Video thực hành

Trong SQL Server, JOIN là từ khóa dùng để kết hợp dữ liệu từ hai hoặc nhiều bảng lại với nhau dựa trên mối quan hệ giữa các cột có liên quan (thường là khóa chính và khóa ngoại).

1. Mục đích của JOIN trong SQL Server

    Giúp lấy dữ liệu kết hợp từ nhiều bảng để tạo ra báo cáo, thống kê, xử lý dữ liệu một cách đầy đủ và chính xác.

Cú pháp JOIN cơ bản

SELECT *
FROM Bang1
JOIN Bang2 ON Bang1.CotChung = Bang2.CotChung;

Có các loại Join trong SQL Server bạn cần nắm được, mời bạn xem mục tiếp theo.

2. INNER JOIN trong SQL Server

Mục đích: Kết nối giao nhau (chỉ lấy phần trùng khớp)

Cú pháp:

SELECT *
FROM A
INNER JOIN B ON A.ID = B.ID;

Đặc điểm:

    Chỉ lấy các dòng có giá trị khớp ở cả hai bảng.
    Nếu không khớp, dòng đó bị loại bỏ.

Ví dụ:

Bảng HocSinh

ID Ten
1 An
2 Bình
3 Chi

Bảng Diem

ID Diem
1 8
3 9


Câu lệnh SQL JOIN:

SELECT * FROM HocSinh
INNER JOIN Diem ON HocSinh.ID = Diem.ID;

Kết quả:

ID Ten ID Diem
1 An 1 8
3 Chi 3 9

➡️ Không có dòng của "Bình" vì không có điểm.

2. OUTER JOIN trong SQL Server

Kết nối toàn phần hoặc một bên (giữ lại các dòng không khớp)

Có 3 loại:

a. LEFT OUTER JOIN trong SQL Server

– Giữ lại tất cả từ bảng bên trái

SELECT *
FROM HocSinh
LEFT JOIN Diem ON HocSinh.ID = Diem.ID;

Kết quả:

ID Ten ID Diem
1 An 1 8
2 Bình NULL NULL
3 Chi 3 9

➡️ Giữ lại "Bình" dù không có điểm.

b. RIGHT OUTER JOIN trong SQL Server

Giữ lại tất cả từ bảng bên phải

SELECT *
FROM HocSinh
RIGHT JOIN Diem ON HocSinh.ID = Diem.ID;

➡️ Ngược lại với LEFT JOIN, giữ điểm dù không có học sinh tương ứng.

c. FULL OUTER JOIN trong SQL Server

Giữ lại cả hai phía

SELECT *
FROM HocSinh
FULL JOIN Diem ON HocSinh.ID = Diem.ID;

➡️ Kết quả bao gồm tất cả dòng từ cả 2 bảng, dù khớp hay không khớp.

3. So sánh giữa INNER JOIN, LEFT JOIN, RIGHT JOIN và FULL JOIN

Đặc điểm    INNER JOIN    LEFT JOIN    RIGHT JOIN    FULL JOIN

Đặc điểm INNER JOIN LEFT JOIN RIGHT JOIN FULL JOIN
Lấy dòng khớp
Lấy dòng không khớp bên trái
Lấy dòng không khớp bên phải
Có thể có NULL ở phía không khớp

4. Kinh nghiệm sử dụng Join trong SQL Server

    INNER JOIN: Dùng khi chỉ cần dữ liệu trùng khớp.
    LEFT OUTER JOIN: Dùng khi muốn lấy tất cả dữ liệu từ bảng chính, kể cả khi bảng phụ không có.
    FULL OUTER JOIN: Dùng khi muốn lấy mọi dòng từ cả 2 bảng, kể cả không khớp.

5. Video thực hành



 

Tìm kiếm:

Bài viết liên quan:

Hướng dẫn chi tiết về INNER JOIN và OUTER JOIN trong SQL Server, kinh nghiệm thực tế về join