SQL JOIN

Giới thiệu về SQL JOIN

Trong ngôn ngữ lập trình SQL, JOIN là một phần quan trọng để kết hợp dữ liệu từ nhiều bảng khác nhau trong cơ sở dữ liệu. JOIN cho phép người dùng truy vấn thông tin từ các bảng liên kết với nhau thông qua các khóa chung, giúp tạo ra những báo cáo chi tiết và chính xác hơn.

Các loại JOIN

Có nhiều loại JOIN trong SQL, mỗi loại phục vụ cho những mục đích khác nhau. Dưới đây là các loại JOIN phổ biến:

1. INNER JOIN

INNER JOIN trả về các bản ghi chỉ khi có sự trùng khớp giữa các bảng được kết nối. Nếu không có sự trùng khớp, dữ liệu sẽ không được hiển thị.

Cú pháp:
SELECT cột1, cột2, ...
FROM bảng1
INNER JOIN bảng2
ON bảng1.cột_khóa = bảng2.cột_khóa;
Ví dụ:
SELECT students.name, classes.class_name
FROM students
INNER JOIN classes ON students.class_id = classes.id;

2. LEFT JOIN (hoặc LEFT OUTER JOIN)

LEFT JOIN trả về tất cả các bản ghi từ bảng bên trái và các bản ghi khớp từ bảng bên phải. Nếu không có bản ghi khớp ở bảng bên phải, kết quả vẫn sẽ bao gồm bản ghi của bảng bên trái với giá trị NULL ở các cột của bảng bên phải.

Cú pháp:
SELECT cột1, cột2, ...
FROM bảng1
LEFT JOIN bảng2
ON bảng1.cột_khóa = bảng2.cột_khóa;
Ví dụ:
SELECT students.name, classes.class_name
FROM students
LEFT JOIN classes ON students.class_id = classes.id;

3. RIGHT JOIN (hoặc RIGHT OUTER JOIN)

RIGHT JOIN tương tự như LEFT JOIN, nhưng nó 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ó bản ghi khớp ở bảng bên trái, kết quả sẽ bao gồm bản ghi của bảng bên phải với giá trị NULL ở các cột của bảng bên trái.

Cú pháp:
SELECT cột1, cột2, ...
FROM bảng1
RIGHT JOIN bảng2
ON bảng1.cột_khóa = bảng2.cột_khóa;
Ví dụ:
SELECT students.name, classes.class_name
FROM students
RIGHT JOIN classes ON students.class_id = classes.id;

4. FULL JOIN (hoặc FULL OUTER JOIN)

FULL JOIN kết hợp kết quả của cả LEFT JOIN và RIGHT JOIN. Nó sẽ trả về tất cả các bản ghi từ cả hai bảng, với các giá trị NULL ở những nơi không có sự khớp giữa các bảng.

Cú pháp:
SELECT cột1, cột2, ...
FROM bảng1
FULL JOIN bảng2
ON bảng1.cột_khóa = bảng2.cột_khóa;
Ví dụ:
SELECT students.name, classes.class_name
FROM students
FULL JOIN classes ON students.class_id = classes.id;

5. CROSS JOIN

CROSS JOIN tạo ra tích Cartesian của hai bảng, tức là kết hợp tất cả các bản ghi từ bảng này với tất cả các bản ghi từ bảng kia.

Cú pháp:
SELECT cột1, cột2, ...
FROM bảng1
CROSS JOIN bảng2;
Ví dụ:
SELECT students.name, classes.class_name
FROM students
CROSS JOIN classes;

Kết luận

SQL JOIN là một công cụ mạnh mẽ giúp kết hợp dữ liệu từ nhiều bảng khác nhau, từ đó tạo ra thông tin hữu ích và đầy đủ hơn cho người dùng. Với các loại JOIN khác nhau, bạn có thể dễ dàng điều chỉnh và khai thác cơ sở dữ liệu của mình một cách hiệu quả.