Phép nối tạo ra một bảng có thể được sử dụng một mình hoặc kết hợp với nhau. Do đó, nên hiểu các phép nối này và sự khác biệt giữa chúng để xác định phép nối cụ thể cũng như nên chọn bên phải hay bên trái trong các trường hợp đặc biệt.
Chìa khóa chính
- Phép nối bên trái bao gồm 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, điền giá trị NULL cho các hàng không khớp.
- Nối phải bao gồm 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, điền giá trị NULL cho các hàng không khớp.
- Các phép nối trái và phải là hình ảnh phản chiếu của nhau và có thể hoán đổi cho nhau tùy thuộc vào thứ tự bảng trong truy vấn.
Tham gia bên trái vs Tham gia bên phải
Nối trái trả về tất cả các hàng từ bảng bên trái và các hàng khớp từ bảng bên phải và nếu không có kết quả khớp nào trong bảng bên phải, kết quả sẽ chứa các giá trị null. Nối phải, tương tự với nối trái, nhưng nó trả về tất cả các hàng từ bảng bên phải và các hàng phù hợp từ bảng bên trái.
Mặc dù không có kết quả phù hợp ở phía bên phải của bảng, SQL TRÁI xử lý tất cả các mục nhập từ bảng bên trái. Điều này ngụ ý rằng khi mệnh đề ON chứa các mục nhập 0 (không) ở phía bên phải của bảng, phép nối vẫn sẽ trả về một bản ghi có NULL trong mọi trường từ bảng chính.
Mặt khác, phép nối bên phải nhận thấy rằng ngay cả trong bảng bên trái, SQL RIGHT nhận và gửi tất cả các mục nhập từ bảng bên phải.
Điều này ngụ ý rằng phép nối phải cung cấp tất cả dữ liệu từ bảng bên phải, cũng như mọi giá trị được chấp nhận từ các bảng hoặc NULL nếu không tồn tại vị từ nối phù hợp cho thao tác này.
Bảng so sánh
Các thông số so sánh | Chỗ nối bên trái | Tham gia đúng |
---|---|---|
Sử dụng | Nó kết nối nhiều bảng và cung cấp tất cả các bản ghi từ bảng bên trái cũng như các hàng phù hợp từ bên phải. | Nó kết hợp nhiều bảng và cung cấp tất cả dữ liệu từ bảng bên phải cũng như các hàng khớp trước từ bảng bên trái. |
Thực thi truy vấn | Trong quá trình triển khai truy vấn bao gồm phép nối bên trái, tất cả các mục nhập của bảng đều được nhận trước, sau đó dữ liệu khớp của các giá trị cột trong bảng bên phải được lấy bằng cách sử dụng các vòng lặp xếp chồng lên nhau và giá trị NULL được thay thế cho dữ liệu chưa khớp khác. | Trong quá trình triển khai truy vấn bao gồm phép nối bên phải, tất cả dữ liệu của bảng bên phải được lấy trước và sau đó, các bản ghi khớp của các giá trị cột trong bảng bên trái được thu thập bằng cách sử dụng các vòng lặp xếp chồng lên nhau. |
Bộ kết quả | Giá trị tập hợp kết quả sẽ là NULL hoặc XNUMX nếu không tìm thấy dữ liệu phù hợp trong bảng bên phải. | Giá trị tập hợp kết quả sẽ là NULL hoặc XNUMX nếu không tìm thấy dữ liệu phù hợp trong bảng bên trái. |
thuật ngữ đồng nghĩa | THAM GIA BÊN NGOÀI TRÁI | THAM GIA ĐÚNG NGƯỜI RA NGOÀI |
cú pháp | CHỌN tên_cột TỪ bảng1 TRÁI THAM GIA bảng2 BẬT table1.column_name = table2.column_name; | CHỌN cột_name TỪ bảng1 THAM GIA ĐÚNG bảng2 ON bảng1.column_name = bảng2.column_name; |
Tham gia trái là gì?
Để hợp nhất dữ liệu từ hai cơ sở dữ liệu tùy thuộc vào một cột chứa các giá trị phù hợp, chúng tôi sử dụng THAM GIA trong SQL. Chẳng hạn, nếu bạn có một bảng chứa dữ liệu khách hàng (ID khách hàng, đầu tiên họ, mã định danh, v.v.) và sau đó là một bảng khác chứa dữ liệu đơn đặt hàng cho một thời điểm cụ thể (ID giao dịch, thời gian, ID khách hàng, ID sản phẩm, v.v.)
Hãy xem cú pháp của Left Join để hiểu đúng công dụng của nó:
CHỌN tên_cột
TỪ bảng1
TRÁI THAM GIA bảng2
BẬT table1.column_name = table2.column_name
- 'CHỌN' – Bắt đầu bằng cách chọn các danh mục mà chúng tôi muốn xem trong tập dữ liệu.
- 'TỪ' – Nhập dữ liệu của các bảng, trong đó chúng tôi muốn duy trì tất cả thông tin.
- 'LEFT JOIN' – Nhập dữ liệu của bảng thứ hai được đề cập.
- 'BẬT' – Sử dụng cụm từ này để chỉ định trường nào sẽ được sử dụng để kết nối các bảng.
Nếu có nhiều phát hiện phù hợp, cột trong bảng bên trái sẽ được sao chép để bao gồm tất cả dữ liệu trực tiếp từ bảng bên phải. Nếu không tìm thấy kết quả khớp, nó sẽ giữ nguyên hàng như từ bảng bên trái và sau đó chèn NULL vào các cột có liên quan của bảng bên phải.
Tham gia đúng là gì?
Nói một cách thẳng thắn, thao tác nối phải rất giống với nối trái, chỉ là ngược lại.
Nối phải về cơ bản rất giống với nối trái ở chỗ chúng truy xuất tất cả các hàng từ bảng được chỉ định trong cụm từ THAM GIA RIGHT nhưng chỉ các hàng tương ứng từ bảng được chỉ định trong mệnh đề TỪ.
THAM GIA RIGHT hiếm khi được sử dụng vì nội dung của THAM GIA RIGHT có thể được lấy bằng cách hoán đổi nhãn của hai bảng được kết nối trong THAM GIA TRÁI.
Điều đáng nói là LEFT JOIN và RIGHT JOIN cũng có thể được diễn đạt bằng LEFT THAM GIA NGOÀI TRỜI cũng như RIGHT OUTER THAM GIA.
Cú pháp của Right Join được mô tả thêm bên dưới. Hoạt động của phép nối phải và trái giống hệt nhau, nhưng theo thứ tự ngược lại:
CHỌN tên_cột
TỪ bảng1
QUYỀN THAM GIA bảng2
BẬT table1.column_name = table2.column_name
Sự khác biệt chính giữa Tham gia trái và Tham gia phải
- Cụm từ nối bên trái thường được sử dụng hơn cụm từ nối bên phải.
- Công thức để nối bên trái là tất cả các bản ghi khớp + các bản ghi chưa khớp của bảng bên trái trong khi công thức để nối bên phải là tất cả các bản ghi khớp + các bản ghi chưa khớp của bảng bên phải.
- https://www.tutorialspoint.com/sql/sql-left-joins.htm#:~:text=The%20SQL%20LEFT%20JOIN%20returns,matches%20in%20the%20right%20table.&text=This%20means%20that%20a%20left,of%20no%20matching%20join%20predicate.
- https://mode.com/sql-tutorial/sql-right-join/#:~:text=Right%20joins%20are%20similar%20to,names%20in%20a%20LEFT%20JOIN%20.
Cập nhật lần cuối: ngày 11 tháng 2023 năm XNUMX
Sandeep Bhandari có bằng Cử nhân Kỹ thuật Máy tính của Đại học Thapar (2006). Ông có 20 năm kinh nghiệm trong lĩnh vực công nghệ. Anh rất quan tâm đến các lĩnh vực kỹ thuật khác nhau, bao gồm hệ thống cơ sở dữ liệu, mạng máy tính và lập trình. Bạn có thể đọc thêm về anh ấy trên trang sinh học.
Tôi không tin rằng SQL RIGHT JOIN hiếm khi được sử dụng như đề xuất, nó có cách sử dụng thích hợp trong các truy vấn phức tạp hơn.
Tôi hiểu quan điểm của bạn, nhưng SQL RIGHT JOIN thực sự là một lựa chọn ít thường xuyên hơn trong thực tế.
Sự khác biệt cố hữu giữa các phép nối phải và trái được giải thích một cách toàn diện đến mức nó mở rộng đáng kể sự hiểu biết của một người về các phép nối SQL.
Hoàn toàn có thể, bài viết này có một phân tích cực kỳ chi tiết và sâu sắc.
Tôi cho rằng nội dung ở đây quá cụ thể và không đặc biệt hữu ích cho những người thiếu kinh nghiệm sâu rộng về SQL.
Đúng là nội dung ở đây có thể phù hợp hơn với những người có hiểu biết sâu hơn về SQL.
Mặc dù thông tin ở đây rất thú vị nhưng đôi khi giọng điệu của bài viết có vẻ hơi độc quyền.
Đó thực sự là một quan sát hợp lệ.
Bảng so sánh kỹ lưỡng thực sự giúp phân biệt hai loại kết nối. Bài viết này thực sự khai sáng.
Chắc chắn, bài viết này thực sự nổi bật.
Tôi không thể đồng ý hơn.
Điều cực kỳ quan trọng là phải hiểu sự khác biệt giữa các phép nối trái và phải và chúng nên được sử dụng trong những tình huống nào. Bài viết này hoàn thành tốt điều đó.
Tuyệt đối! Sự chính xác tỉ mỉ là điều đáng khen ngợi.