Tìm hiểu về JOIN trong SQL
Trong các cơ sở dữ liệu phức tạp, mệnh đề JOIN được sử dụng rất thường xuyên với mục đích kết hợp dữ liệu trên hai hoặc nhiều bảng khác nhau dựa trên mối quan hệ giữa chúng. Trong bài viết này chúng ta sẽ cùng tìm hiểu các ví dụ minh họa cụ thể để hiểu về mệnh đề JOIN trong SQL.
Các loại Join trong SQL
Trong SQL Join được chia thành nhiều loại, mỗi loại lại có các chức năng khác nhau trong từng trường hợp. Ở bài viết này chúng ta cùng tìm hiểu về các loại Join sau:
- INNER JOIN
- LEFT JOIN
- RIGHT JOIN
- FULL OUTER JOIN
Chúng ta hãy nhìn vào ví dụ sau đây:
- bảng school với các thông tin:
- bảng student với các thông tin:
Sau khi xem qua thì chúng ta có thể thấy rằng bảng school có quan hệ một - nhiều với bảng student
1. INNER JOIN
INNER JOIN: Trả về các bản ghi có giá trị phù hợp ở cả hai bảng
Cú pháp sử dụng:
SELECT * FROM student
INNER JOIN school
ON student.school_id = school.id
Kết quả nhận được:
Kết luận: Như vậy chúng ta có thể thấy khi sử dụng mệnh đề INNER JOIN thì kết quả trả về chỉ là thông tin của những student và school có giá trị phù hợp với điều kiện ở cả 2 bảng.
2. LEFT JOIN
LEFT JOIN: Trả về các bản ghi từ bảng bên trái (table1) và các bản ghi được so khớp từ bảng bên phải (table2). Kết quả là NULL từ phía bên phải, nếu không có kết quả phù hợp.
Cú pháp sử dụng:
SELECT * FROM student
LEFT JOIN school
ON student.school_id = school.id
Kết quả nhận được:
Kết luận: Như vậy chúng ta có thể thấy khi sử dụng mệnh đề LEFT JOIN thì kết quả trả về chỉ là thông tin của tất cả các student (vì trong trường hợp này student là table 1) và school có giá trị phù hợp với điều kiện còn các giá trị không phù hợp sẽ là NULL
3. RIGHT JOIN
RIGHT JOIN: Trả về các bản ghi từ bảng bên phải (table2) và các bản ghi được so khớp từ bảng bên trái (table1). Kết quả là NULL từ phía bên trái, nếu không có kết quả phù hợp.
Cú pháp sử dụng:
SELECT * FROM student
RIGHT JOIN school
ON student.school_id = school.id
Kết quả nhận được:
Kết luận: Như vậy chúng ta có thể thấy khi sử dụng mệnh đề RIGHT JOIN thì kết quả trả về chỉ là thông tin của tất cả các school (vì trong trường hợp này school là table 2) và student có giá trị phù hợp với điều kiện còn các giá trị không phù hợp sẽ là NULL
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 các bản ghi bảng bên trái (table1) hoặc bên phải (table2)
Cú pháp sử dụng:
SELECT * FROM student
FULL OUTER JOIN school
ON student.school_id = school.id
Lời kết
Qua bài viết này mình đã giới thiệu được cho các bạn về các loại JOIN trong SQL. Mỗi loại JOIN lại có các chức năng và lợi ích riêng. Chúng ta cần sử dụng chúng 1 cách linh hoạt và hợp lý để có một câu truy vấn tối ưu nhất. Các bạn có thể tham khảo link tài liệu ở cuối bài viết để hiểu rõ hơn về JOIN trong SQL.
Lê Quang Khải