Logo Zephyrnet

Hiểu SQL THAM GIA: Bên trong, Bên ngoài, Đầy đủ, Trái và Phải

Ngày:

Giới thiệu

Phép nối SQL là các thao tác cơ bản được sử dụng để kết hợp dữ liệu từ nhiều bảng dựa trên các cột chung. Hiểu biết vững chắc về phép nối SQL là rất quan trọng để thao tác dữ liệu và truy vấn hiệu quả. Trong bài viết này, chúng ta sẽ khám phá các loại phép nối khác nhau, cách sử dụng thực tế của chúng và những cân nhắc quan trọng khi sử dụng chúng.

Tham gia bên trong

Nối bên trong truy xuất các bản ghi có giá trị khớp trong cả hai bảng được nối. Nó chỉ trả về các hàng giao nhau, ngoại trừ những hàng không khớp. Mục đích của phép nối bên trong là để tìm dữ liệu có liên quan trên các bảng, làm cho phép nối này hữu ích khi bạn cần truy xuất thông tin từ nhiều bảng bằng một khóa chung.

Khi quyết định có sử dụng phép nối bên trong SQL hay không, một số yếu tố sẽ xuất hiện. Mặt khác, phép nối bên trong đặc biệt hiệu quả vì nó chỉ trả về dữ liệu liên quan. Đây có thể là một lợi thế lớn trong các truy vấn mà chúng tôi chỉ muốn đối sánh dữ liệu trên các bảng khác nhau.

Nối bên trong cũng có thể giúp giảm khối lượng dữ liệu cần xử lý trong các hoạt động sau này, do đó có khả năng cải thiện hiệu suất bằng cách chỉ truyền và xử lý dữ liệu cần thiết.

Ví dụ

Hãy xem xét hai bảng, CustomersOrders, với một cột chung customer_id. Để truy xuất tất cả các khách hàng đã đặt hàng, chúng ta có thể sử dụng một phép nối bên trong như sau:

SELECT Customers.customer_id, Customers.name, Orders.order_id
FROM Customers
INNER JOIN Orders
ON Customers.customer_id = Orders.customer_id;

Truy vấn này có thể trả về dữ liệu như sau:

ID khách hàng tên order_id
1 John Doe 1001
2 Jane Smith 1002
1 John Doe 1003
3 Mary Johnson 1004
2 Jane Smith 1005

Chỗ nối bên trái

Phép nối bên trái, còn được gọi là phép nối ngoài bên trái, trả về tất cả các bản ghi từ bảng bên trái và các bản ghi phù hợp từ bảng bên phải. Nếu không tìm thấy kết quả phù hợp, giá trị NULL được trả về cho các cột của bảng bên phải. Kiểu liên kết này hữu ích khi bạn muốn truy xuất tất cả các bản ghi từ một bảng trong khi bao gồm cả dữ liệu liên quan từ một bảng khác, nếu có.

Ví dụ

Sử dụng cùng bảng “Customers” và “Orders”, chúng ta có thể truy xuất tất cả khách hàng và đơn đặt hàng tương ứng của họ, nếu có, với phép nối trái:

SELECT Customers.customer_id, Customers.name, Orders.order_id
FROM Customers
LEFT JOIN Orders
ON Customers.customer_id = Orders.customer_id;
ID khách hàng tên order_id
1 John Doe 1001
2 Jane Smith 1002
1 John Doe 1003
3 Mary Johnson 1004
2 Jane Smith 1005
4 Alice William NULL

Tham gia đúng

Phép nối bên phải, còn được gọi là phép nối ngoài bên phải, tương tự như phép nối bên trái, nhưng nó truy xuất tất cả các bản ghi từ bảng bên phải và các bản ghi phù hợp từ bảng bên trái. Các giá trị không khớp trong bảng bên trái sẽ dẫn đến NULL giá trị trong các cột tương ứng. Phép nối phải ít được sử dụng hơn phép nối trái nhưng có thể hữu ích khi phân tích dữ liệu chủ yếu từ bảng bên phải hoặc khi bạn cần giữ lại các bản ghi từ bảng bên phải và hiển thị các bản ghi phù hợp từ bảng bên trái.

Nối phải đặc biệt hữu ích trong trường hợp bạn muốn hiển thị tất cả dữ liệu từ bảng bên phải, bất kể có khớp ở bảng bên trái hay không. Điều này có thể hữu ích khi bạn cần hiển thị tất cả các sản phẩm và dữ liệu bán hàng tương ứng của chúng, ngay cả khi một số sản phẩm chưa được bán.

Nối phải truy xuất tất cả các bản ghi từ bảng bên phải và các bản ghi phù hợp từ bảng bên trái. Nếu có các giá trị không khớp trong bảng bên trái, kết quả sẽ chứa NULL giá trị trong các cột tương ứng.

Ví dụ

Để minh họa phép nối phải, hãy xem xét việc đảo ngược các bảng từ ví dụ trước. Chúng tôi có hai bảng: CustomersOrders. Chúng tôi muốn truy xuất tất cả các đơn đặt hàng và khách hàng liên quan của họ, bao gồm các đơn đặt hàng không có khách hàng liên quan (ví dụ: đơn đặt hàng của khách). Chúng ta có thể sử dụng phép nối phải:

SELECT Customers.customer_id, Customers.name, Orders.order_id
FROM Customers
RIGHT JOIN Orders
ON Customers.customer_id = Orders.customer_id;
ID khách hàng tên order_id
1 John Doe 1001
2 Jane Smith 1002
1 John Doe 1003
3 Mary Johnson 1004
2 Jane Smith 1005
NULL NULL 1006

Trong ví dụ này, kết quả sẽ hiển thị tất cả các bản ghi từ Orders bảng, và nếu có một trận đấu trong Customers bảng, nó sẽ hiển thị thông tin khách hàng tương ứng. Nếu không có sự phù hợp, các customer_idname các lĩnh vực từ Customers bảng sẽ được NULL.

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

Nối đầy đủ, còn được gọi là nối ngoài đầy đủ, truy xuất tất cả các bản ghi từ cả hai bảng, bao gồm các bản ghi khớp cũng như các bản ghi không khớp từ cả hai bảng. Nếu một hàng không khớp trong bảng đối diện, các giá trị NULL sẽ được điền vào các cột tương ứng. Phép nối đầy đủ rất hữu ích để kết hợp dữ liệu một cách toàn diện, đặc biệt khi bạn muốn phân tích dữ liệu từ cả hai bảng mà không làm mất bất kỳ thông tin nào.

Ví dụ

Để chứng minh một phép nối đầy đủ, một lần nữa chúng ta sẽ xem xét hai bảng, CustomersOrders. Chúng tôi muốn truy xuất tất cả khách hàng và đơn đặt hàng liên quan của họ, bao gồm cả khách hàng không có đơn đặt hàng và đơn đặt hàng không có khách hàng. Điều này có thể hữu ích, chẳng hạn như để xác định những khách hàng chưa đặt bất kỳ đơn hàng nào hoặc đơn hàng không được liên kết với bất kỳ khách hàng nào. Chúng ta có thể đạt được điều này với sự tham gia đầy đủ:

SELECT Customers.customer_id, Customers.name, Orders.order_id
FROM Customers
FULL JOIN Orders
ON Customers.customer_id = Orders.customer_id;
ID khách hàng tên order_id
1 John Doe 1001
2 Jane Smith 1002
1 John Doe 1003
3 Mary Johnson 1004
2 Jane Smith 1005
NULL NULL 1006
4 Alice William NULL

Tối ưu hóa hiệu suất JOIN

Để tối ưu hóa hiệu suất của SQL THAM GIA của bạn, hãy xem xét các mẹo sau:

  1. Sử dụng các loại tham gia thích hợp dựa trên tập hợp kết quả mong muốn. Ví dụ: sử dụng INNER THAM GIA khi bạn chỉ cần các bản ghi khớp từ cả hai bảng và sử dụng TRÁI hoặc PHẢI THAM GIA khi bạn muốn bao gồm các bản ghi không khớp từ một trong các bảng.

  2. Chỉ chọn những cột cần thiết để giảm thiểu việc truy xuất dữ liệu không cần thiết. Điều này có thể giúp giảm lượng dữ liệu đang được xử lý và cải thiện hiệu suất truy vấn.

  3. Bất cứ khi nào có thể, áp dụng WHERE mệnh đề để lọc dữ liệu trước tham gia các bảng. Điều này có thể giúp giảm số lượng hàng cần nối, do đó cải thiện hiệu suất.

  4. Cân nhắc sử dụng các chỉ mục trên các cột được sử dụng trong điều kiện nối, vì điều này có thể cải thiện đáng kể hiệu suất của các phép nối của bạn.

Xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, các tiêu chuẩn được ngành công nghiệp chấp nhận và bảng lừa đảo đi kèm. Dừng lệnh Googling Git và thực sự học nó!

Bằng cách làm theo các phương pháp hay nhất này, bạn có thể đảm bảo rằng SQL JOIN của mình hoạt động hiệu quả và trả về kết quả mong muốn một cách kịp thời.

Sự hiểu biết vững chắc về phép nối SQL là rất quan trọng để làm việc với cơ sở dữ liệu quan hệ. Bằng cách nắm vững các loại liên kết khác nhau và cách sử dụng chúng, bạn có thể nhanh chóng và dễ dàng sử dụng SQL để truy vấn và phân tích các bộ dữ liệu phức tạp.

Trong hướng dẫn này, chúng tôi thảo luận về các kiểu nối SQL khác nhau – Bên trong, Bên ngoài, Đầy đủ, Trái và Phải – và cung cấp một số hiểu biết về cách chúng hoạt động, ưu điểm và nhược điểm của chúng.

Kết luận

Hãy để chúng tôi tóm tắt nhanh về cách sử dụng phép nối SQL để kết hợp dữ liệu từ nhiều bảng, cùng với các trường hợp sử dụng, ưu và nhược điểm của chúng:

  • Tham gia bên trong chỉ truy xuất các bản ghi phù hợp từ cả hai bảng. Đây là kiểu liên kết phổ biến nhất và rất hữu ích khi bạn cần kết hợp dữ liệu dựa trên khóa hoặc thuộc tính dùng chung. Tuy nhiên, nếu không có bản ghi phù hợp, kết quả sẽ trống.

  • nối trái lấy tất cả các bản ghi từ bảng bên trái và các bản ghi phù hợp từ bảng bên phải. Nếu không có bản ghi phù hợp trong bảng bên phải, giá trị NULL sẽ được trả về. Kiểu liên kết này hữu ích khi bạn muốn bao gồm tất cả các bản ghi từ bảng bên trái, ngay cả khi không có dữ liệu tương ứng trong bảng bên phải.

  • nối phải lấy tất cả các bản ghi từ bảng bên phải và các bản ghi phù hợp từ bảng bên trái. Tương tự như nối trái, nếu không có bản ghi khớp trong bảng bên trái, giá trị NULL sẽ được trả về. Phép nối này hữu ích khi bạn muốn bao gồm tất cả các bản ghi từ bảng bên phải, ngay cả khi không có dữ liệu tương ứng trong bảng bên trái.

  • tham gia đầy đủ truy xuất tất cả các bản ghi từ cả hai bảng, bất kể có bản ghi phù hợp hay không. Nếu không khớp, giá trị NULL được trả về cho dữ liệu bị thiếu. Kiểu liên kết này hữu ích khi bạn muốn kết hợp dữ liệu từ cả hai bảng và bao gồm tất cả các bản ghi, ngay cả khi không có sự khớp giữa chúng.

Hiểu các kiểu nối này và mục đích của chúng cho phép bạn thao tác và phân tích dữ liệu một cách hiệu quả. Hãy nhớ rằng việc chọn loại tham gia phù hợp tùy thuộc vào trường hợp sử dụng cụ thể của bạn và kết quả mong muốn. Bằng cách thành thạo các kiểu nối này, bạn sẽ được trang bị tốt hơn để xử lý các tác vụ phân tích dữ liệu phức tạp và tối ưu hóa các truy vấn SQL của mình.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img