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ả.