Tham gia bên ngoài SQL

Tham Gia Ben Ngoai Sql



Không cần phải nói rằng phép nối là một trong những tính năng dễ nhận biết nhất của cơ sở dữ liệu quan hệ. Các phép nối cho phép chúng ta kết hợp dữ liệu từ một hoặc nhiều bảng dựa trên một điều kiện liên quan để tạo ra một thao tác dữ liệu mạch lạc.

Có nhiều loại liên kết khác nhau trong SQL, mỗi loại có một cách riêng để xử lý dữ liệu từ các bảng tham gia hoặc tập hợp kết quả. Một trong những kiểu nối phổ biến nhất trong SQL là THAM GIA NGOÀI.







OUTER THAM GIA trong SQL truy xuất tất cả các hàng khớp từ các bảng có liên quan cũng như các hàng không khớp từ một hoặc cả hai bảng. Nó rất hữu ích khi bạn xử lý các bảng chứa giá trị NULL hoặc các tập hợp bị thiếu.



Chúng ta hãy khám phá thêm những phép nối này làm gì, cách chúng hoạt động và cách chúng ta có thể sử dụng chúng trong cơ sở dữ liệu SQL.



Yêu cầu:

Đối với hướng dẫn này, chúng tôi sẽ làm việc với MySQL 8.0 và sử dụng cơ sở dữ liệu mẫu Sakila. Tuy nhiên, vui lòng sử dụng bất kỳ tập dữ liệu nào khác mà bạn cho là có thể áp dụng được.





Các loại kết nối bên ngoài

Có ba loại THAM GIA NGOÀI chính trong SQL. Các loại THAM GIA NGOÀI này bao gồm:

  1. THAM GIA NGOÀI TRÁI

  2. Trong trường hợp LEFT OUTER JOINS, phép nối lấy tất cả các hàng từ bảng bên trái và chỉ các hàng khớp từ bảng bên phải. Nếu không có hàng nào khớp với bảng bên phải, phép nối sẽ trả về giá trị NULL cho các cột ở bảng bên phải.



  3. THAM GIA NGOÀI Bên phải

  4. Điều này tương tự như RIGHT OUTER JOIN. Tuy nhiên, nó lấy tất cả các hàng từ bảng bên phải nhưng chỉ lấy các hàng phù hợp từ bảng bên trái. Nếu không có hàng nào khớp với bảng bên trái, phép nối sẽ bao gồm các giá trị NULL cho các cột ở bảng bên trái.

  5. THAM GIA NGOÀI ĐẦY ĐỦ

  6. Cuối cùng, chúng ta có THAM GIA NGOÀI ĐẦY ĐỦ. Kiểu liên kết này kết hợp cả liên kết ngoài RIGHT và LEFT. Kết quả là, phép nối lấy tất cả các hàng khi có sự trùng khớp ở bảng bên trái hoặc bên phải. Nếu không có kết quả khớp, phép nối sẽ trả về giá trị NULL cho các cột trong bảng không khớp.

Cú pháp của SQL OUTER THAM GIA

Phần sau đây thể hiện cú pháp của SQL OUTER JOIN. Tuy nhiên, cần lưu ý rằng cú pháp có thể thay đổi đôi chút tùy thuộc vào công cụ cơ sở dữ liệu đích.

Sau đây là cấu trúc chung:

CHỌN cột
TỪ bảng 1
[TRÁI | QUYỀN | ĐẦY ĐỦ] Bảng THAM GIA NGOÀI22
TRÊN bảng1.column_name = table2.column_name;

Cú pháp của OUTER JOIN trong SQL khá dễ hiểu.

Ví dụ:

Chúng ta hãy xem xét một số cách sử dụng mẫu về cách chúng ta có thể áp dụng các loại THAM GIA NGOÀI khác nhau trong SQL.

Như chúng tôi đã đề cập, chúng tôi sẽ sử dụng cơ sở dữ liệu mẫu Sakila để trình diễn. Trong trường hợp này, chúng tôi sử dụng bảng “khách hàng” và “thanh toán”.

Ví dụ 1: LEFT OUTER THAM GIA

Chúng ta hãy bắt đầu với OUTER THAM GIA. Giả sử chúng ta muốn truy xuất tất cả thông tin khách hàng cùng với thông tin thanh toán của họ, nếu có.

Điều này làm cho LEFT OUTER JOIN có thể áp dụng được vì chúng tôi muốn tất cả thông tin khách hàng (ở bên trái) và thông tin thanh toán nếu có (phải).

Nếu khách hàng chưa thực hiện bất kỳ khoản thanh toán nào, liên kết sẽ hiển thị giá trị NULL cho các cột liên quan đến thanh toán.

Một ví dụ như sau:

LỰA CHỌN
c.customer_id,
c.first_name,
c.last_name,
số tiền,
p.ngày thanh toán
TỪ
khách hàng c
LEFT OUTER JOIN thanh toán p
TRÊN
c.customer_id = p.customer_id;

Trong truy vấn nhất định, chúng tôi bao gồm các cột “customer_id”, “first_name” và “last_name” từ bảng “customer”. Chúng tôi cũng bao gồm số tiền và “ngày thanh toán” từ bảng “thanh toán”.

Sau đó, chúng tôi thực hiện LEFT OUTER THAM GIA giữa bảng “khách hàng” và “thanh toán” dựa trên “customer_id”.

Đây là tất cả các khách hàng (dù đã thanh toán hay chưa) cùng với thông tin thanh toán của họ (nếu có).

Một đầu ra ví dụ như sau:

Ví dụ 2: RIGHT OUTER JOIN

Bây giờ, chúng ta hãy chuyển sang RIGHT OUTER JOIN. Giả sử chúng tôi muốn bao gồm tất cả thông tin thanh toán và khách hàng liên quan trong trường hợp này, nếu có.

Trong trường hợp này, nếu khách hàng thực hiện thanh toán, liên kết sẽ hiển thị thông tin chi tiết về khách hàng đó. Nếu có một khoản thanh toán không có khách hàng liên quan, nó sẽ hiển thị giá trị NULL cho các cột liên quan đến khách hàng.

LỰA CHỌN
c.customer_id,
c.first_name,
c.last_name,
số tiền,
p.ngày thanh toán
TỪ
khách hàng c
Thanh toán RIGHT OUTER THAM GIA p
TRÊN
c.customer_id = p.customer_id;

Tập hợp kết quả như sau:

Ví dụ 3: THAM GIA ĐẦY ĐỦ NGOÀI

Mặt khác, FULL OUTER JOIN lấy tất cả thông tin và thanh toán của khách hàng. Điều này bao gồm tất cả khách hàng và tất cả các khoản thanh toán và hiển thị các giá trị NULL khi không có sự trùng khớp giữa các bảng.

LỰA CHỌN
c.customer_id,
c.first_name,
c.last_name,
số tiền,
p.ngày thanh toán
TỪ
khách hàng c
Thanh toán FULL OUTER JOIN p
TRÊN
c.customer_id = p.customer_id;

Cần lưu ý rằng MySQL về cơ bản không hỗ trợ THAM GIA NGOÀI ĐẦY ĐỦ. Bạn phải thực hiện một số phép thuật jiujitsu với LEFT JOIN, UNION và RIGHT JOIN. Khá khó chịu, chúng tôi có thể thêm vào.

Phần kết luận

Trong hướng dẫn này, chúng ta đã tìm hiểu tất cả về OUTER JOINS. Chúng ta đã tìm hiểu OUTER JOIN là gì trong SQL, các loại OUTER JOINS và các ví dụ về cách sử dụng các loại OUTER JOINS này.