Tham gia bên trong so với tham gia bên ngoài


Trong SQL, một tham gia được sử dụng để so sánh và kết hợp - tham gia theo nghĩa đen - và trả về các hàng dữ liệu cụ thể từ hai hoặc nhiều bảng trong cơ sở dữ liệu. An tham gia nội bộ tìm và trả về dữ liệu khớp từ các bảng trong khi tham gia bên ngoài tìm và trả về dữ liệu trùng khớp một số dữ liệu khác nhau từ các bảng.

báo cáo quảng cáo này

Tham gia nội bộ

Một phép nối bên trong tập trung vào điểm chung giữa hai bảng. Khi sử dụng phép nối bên trong, phải có ít nhất một số dữ liệu khớp giữa hai (hoặc nhiều) bảng được so sánh. Một bảng tham gia tìm kiếm bên trong để tìm dữ liệu khớp hoặc chồng chéo. Khi tìm thấy nó, phép nối bên trong kết hợp và trả về thông tin vào một bảng mới.

Ví dụ về tham gia nội bộ

Hãy xem xét một kịch bản chung của hai bảng: giá và số lượng sản phẩm. Thông tin chung trong hai bảng là tên sản phẩm, vì vậy đó là cột logic để tham gia các bảng trên. Có một số sản phẩm phổ biến trong hai bảng; các bảng khác là duy nhất cho một trong các bảng và không có kết quả khớp trong bảng khác.

Một sự tham gia bên trong Các sản phẩm trả về thông tin về chỉ những sản phẩm phổ biến trong cả hai bảng.

Tham gia ngoài

Một kết nối bên ngoài trả về một tập hợp các bản ghi (hoặc các hàng) bao gồm những gì một kết nối bên trong sẽ trả về nhưng cũng bao gồm các hàng khác không tìm thấy kết quả khớp tương ứng trong bảng khác.

Có ba loại kết nối bên ngoài:

  • Bên trái tham gia (hoặc tham gia trái)
  • Phải tham gia bên ngoài (hoặc tham gia phải)
  • Tham gia đầy đủ bên ngoài (hoặc Tham gia đầy đủ)

Mỗi liên kết ngoài này đề cập đến phần dữ liệu được so sánh, kết hợp và trả về. Đôi khi null sẽ được tạo ra trong quá trình này vì một số dữ liệu được chia sẻ trong khi dữ liệu khác thì không.

Bên trái tham gia

Tham gia ngoài bên trái sẽ trả về tất cả dữ liệu trong Bảng 1 và tất cả dữ liệu được chia sẻ (vì vậy, phần bên trong của ví dụ về sơ đồ Venn), nhưng chỉ có dữ liệu tương ứng từ Bảng 2, đó là liên kết bên phải.

Ví dụ tham gia trái

Trong cơ sở dữ liệu mẫu của chúng tôi, có hai sản phẩm - cam và cà chua - ở bên trái '(Giá cả bảng) không có mục tương ứng trên 'bên phải' (bảng Số lượng). Trong một liên kết bên trái, các hàng này được bao gồm trong tập kết quả với NULL trong cột Số lượng. Các hàng khác trong kết quả giống như tham gia bên trong.

Bên phải tham gia

Phép nối ngoài bên phải trả về dữ liệu của Bảng 2 và tất cả dữ liệu được chia sẻ, nhưng chỉ có dữ liệu tương ứng từ Bảng 1, đó là phép nối trái.

Ví dụ tham gia đúng

Tương tự như ví dụ nối trái, đầu ra của phép nối ngoài phải bao gồm tất cả các hàng của phép nối bên trong và hai hàng - bông cải xanh và quả bí - từ 'bên phải' (Số lượng bảng) không có mục phù hợp ở bên trái.

Tham gia đầy đủ bên ngoài

Một tham gia bên ngoài đầy đủ, hoặc tham gia đầy đủ, đó là không phải được hỗ trợ bởi hệ thống quản lý cơ sở dữ liệu MySQL phổ biến, kết hợp và trả về tất cả dữ liệu từ hai bảng trở lên, bất kể có thông tin chia sẻ hay không. Hãy nghĩ về một tham gia đầy đủ như chỉ đơn giản là sao chép tất cả các thông tin được chỉ định, nhưng trong một bảng, thay vì nhiều bảng. Khi thiếu dữ liệu khớp, null sẽ được tạo.

Đây chỉ là những điều cơ bản, nhưng nhiều điều có thể được thực hiện với các phép nối. Thậm chí có những tham gia có thể loại trừ các tham gia khác!

Video giải thích nội bộ vs bên ngoài

Video này giải thích sự khác biệt giữa các loại tham gia khác nhau. Nó được kích hoạt để bắt đầu tại điểm bắt đầu cuộc thảo luận về việc tham gia.

Người giới thiệu

  • Sự khác biệt giữa tham gia bên trong và bên ngoài - Tràn ngăn xếp
  • Tham gia SQL bên trong - Quackit
  • Tham gia SQL bên ngoài - Quackit
  • Sử dụng nội bộ - Máy chủ Microsoft SQL
  • Sử dụng kết nối bên ngoài - Máy chủ Microsoft SQL
  • Đại diện trực quan của SQL Joins - Dự án mã
  • Wikipedia: Tham gia (SQL)