SQL đến từ relational algebra.
Một cách để xem xét sự khác biệt là JOINs hoạt động trên các tập hợp có thể tạo ra nhiều bản ghi hoặc ít bản ghi hơn trong kết quả mà bạn có trong bảng gốc. Ở phía bên kia WHERE sẽ luôn hạn chế số lượng kết quả.
Phần còn lại của văn bản là giải thích thêm.
Để biết tổng quan về loại tham gia, hãy xem lại article.
Khi tôi nói rằng điều kiện nơi sẽ luôn hạn chế kết quả, bạn phải tính đến khi chúng ta nói về các truy vấn trên hai (hoặc nhiều) bảng bạn phải bằng cách nào đó ghép các bản ghi từ các bảng này ngay cả khi có không có từ khóa JOIN. Vì vậy, trong SQL nếu các bảng được phân cách đơn giản bằng dấu phẩy, bạn thực sự đang sử dụng CROSS JOIN (sản phẩm Descartes) trả về mọi hàng từ một bảng cho mỗi hàng trong hàng khác. Và vì đây là số kết hợp tối đa các hàng từ hai bảng nên kết quả của bất kỳ WHERE nào trên các bảng được nối chéo có thể được biểu diễn dưới dạng một phép toán JOIN.
Nhưng giữ, có những trường hợp ngoại lệ tối đa này khi bạn giới thiệu LEFT, RIGHT và FULL OUTER tham gia.
LEFT JOIN sẽ nối các bản ghi từ bảng bên trái vào tiêu chí nhất định với các bản ghi từ bảng bên phải, NHƯNG nếu tiêu chí tham gia, nhìn vào hàng từ bảng bên trái không hài lòng với bất kỳ bản ghi nào trong bảng bên phải JOIN sẽ vẫn trả về một bản ghi từ bảng bên trái và trong các cột sẽ đến từ bảng bên phải nó sẽ trả về NULLs (RIGHT JOIN hoạt động tương tự nhưng từ phía bên kia, FULL OUTER hoạt động giống như cả hai cùng một lúc).
Vì kết nối chéo mặc định KHÔNG trả về các bản ghi đó, bạn không thể biểu diễn các tiêu chí kết hợp này với điều kiện WHERE và bạn buộc phải sử dụng cú pháp JOIN (oracle là một ngoại lệ với phần mở rộng này tới tiêu chuẩn SQL và = toán tử, nhưng điều này không được chấp nhận bởi các nhà cung cấp khác và tiêu chuẩn).
Ngoài ra, tham gia thường, nhưng không phải lúc nào cũng trùng khớp với tính toàn vẹn tham chiếu hiện tại và đề xuất mối quan hệ giữa các thực thể, nhưng tôi sẽ không đặt trọng số vào điều đó vì điều kiện có thể thực hiện tương tự (ngoại trừ trường hợp được đề cập trước đó) và với một RDBMS tốt, nó sẽ không tạo ra sự khác biệt nơi bạn chỉ định tiêu chí của mình.
Mẹo nhỏ: Hãy xem xét kế hoạch thực hiện, có thể cung cấp thông tin chi tiết hơn một chút. SQL thực hiện rất nhiều tối ưu hóa truy vấn. – Zyphrax