Nối trong và nối ngoài là hai cách hữu ích để nối các bảng cơ sở dữ liệu và truy vấn dữ liệu từ nhiều bảng. Trong bài viết này, chúng ta sẽ xem xét sự khác biệt giữa phép nối bên trong và phép nối bên ngoài trong SQL.
Tham gia bên trong
Phép nối bên trong trả về các hàng từ hai hoặc nhiều bảng trong đó ít nhất một cột có cùng giá trị trong tất cả các bảng. Nếu không có giá trị chung nào thì không có hàng nào được trả về.
Đây là cú pháp của tham gia bên trong:
select * from table1 INNER JOIN table2 on table1.column_name = table2.column_name; OR select * from table1 JOIN table2 on table1.column_name = table2.column_name;
Tham gia bên ngoài
Nối ngoài trả về các hàng từ hai hoặc nhiều bảng trong đó ít nhất một cột có giá trị chung, cũng như các hàng mà điều kiện nối không thành công. Có 3 loại nối ngoài:
Tham gia bên ngoài bên trái
Trong trường hợp này, tất cả các hàng của bảng bên trái được giữ lại trong kết quả, trong trường hợp điều kiện nối của nó khớp với các bảng khác, giá trị cột của chúng được trả về, các giá trị khác được trả về cho các cột đó. Đây là cú pháp của phép nối bên trái.
select * from table1 LEFT OUTER JOIN table2 on table1.column_name = table2.column_name;
Tham gia bên ngoài bên phải
Trong trường hợp này, tất cả các hàng của bảng bên phải được giữ lại trong kết quả, trong trường hợp điều kiện nối của nó khớp với các bảng khác, giá trị cột của chúng được trả về, các giá trị khác được trả về cho các cột đó.
Đây là cú pháp của phép nối ngoài bên phải
select * from table1 RIGHT OUTER JOIN table2 on table1.column_name = table2.column_name;
Tham gia toàn bộ bên ngoài
Trong trường hợp này, tất cả các hàng của cả hai bảng đều được trả về. Nếu điều kiện kết hợp được thỏa mãn, các cột được điền bằng cách sử dụng các giá trị của cả hai bảng. Nếu điều kiện nối không thành công, thì các giá trị của một trong các bảng được điền vào các cột và phần còn lại được điền dưới dạng null.
Sự khác biệt giữa tham gia bên trong và tham gia bên ngoài trong SQL
Dưới đây là những điểm khác biệt chính giữa tham gia bên trong và tham gia bên ngoài.
Tham gia bên trong
- Nó chỉ trả về các hàng có giá trị cột chung.
- Bạn có thể sử dụng mệnh đề INNER JOIN hoặc JOIN. Cả hai đều có tác dụng như nhau
- Nó trả về null khi không có giá trị cột nào phù hợp giữa hai (hoặc nhiều) bảng
- Tham gia bên trong nhanh hơn Tham gia bên ngoài
- Sẽ rất hữu ích khi thực hiện tra cứu trên nhiều bảng
- Theo thuật ngữ toán học, nó trả về giao của hai tập hợp (bảng)
Tham gia bên ngoài
- Nó trả về các giá trị từ một hoặc nhiều bảng ngay cả khi không có giá trị cột nào phù hợp
- Đối với các hàng không có thuộc tính phù hợp, nó trả về null cho các cột còn lại
- Tham gia đầy đủ bên ngoài và Tham gia đầy đủ có cùng tác dụng.
- Nó chậm hơn so với tham gia bên trong
- Nó được sử dụng để lấy thông tin đầy đủ trong hai hoặc nhiều bảng
- Tham gia đầy đủ bên ngoài không được hỗ trợ trong MySQL. Nó có sẵn trong PostgreSQL, SQL Server, Oracle và các cơ sở dữ liệu phổ biến khác.
Cần một công cụ báo cáo cho MySQL? Ubiq giúp dễ dàng trực quan hóa dữ liệu trong vài phút và theo dõi trong trang tổng quan thời gian thực. Thử nó ngay hôm nay!