Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Trong SQL, sự khác biệt giữa JOIN và CROSS JOIN là gì?

SQL có các kiểu nối sau, tất cả đều xuất phát từ lý thuyết tập hợp:

  • Tham gia bên trong.
    From A inner join B tương đương với A ∩ B, cung cấp tập hợp các phần tử chung cho cả hai tập hợp.

  • Kết nối bên ngoài bên trái.
    From A left outer join B là tương đương của (A - B) ∪ (A ∩ B). Mỗi chữ A sẽ xuất hiện ít nhất một lần; nếu có nhiều B phù hợp, A sẽ được lặp lại một lần cho mỗi B. phù hợp.

  • Tham gia bên ngoài bên phải.
    From A right outer join B là tương đương của (A ∩ B) ∪ (B - A). Nó giống với phép nối trái với các bàn giao dịch chỗ. Mỗi B sẽ xuất hiện ít nhất một lần; nếu có nhiều As phù hợp, mỗi B sẽ được lặp lại một lần cho mỗi B. phù hợp.

  • Tham gia bên ngoài đầy đủ.
    From A full outer join B là tương đương của (A - B) ∪ (A ∩ B) ∪ (B - A). Mỗi A và mỗi B sẽ xuất hiện ít nhất một lần. Nếu một A khớp với nhiều B, nó sẽ được lặp lại một lần cho mỗi trận đấu; nếu một B phù hợp với nhiều Vì nó sẽ được lặp lại một lần mỗi trận.

  • Tham gia chéo.
    From A cross join B là sản xuất sản phẩm cacte A × B. Mỗi A sẽ được lặp lại một lần cho mỗi B. Nếu A có 100 hàng và B có 100 hàng, tập kết quả sẽ bao gồm 10.000 hàng.

Cần lưu ý rằng việc thực thi theo lý thuyết của một select truy vấn bao gồm các bước sau được thực hiện theo thứ tự này:

  1. Tính toàn bộ sản phẩm cacte của (các) bộ nguồn trong from mệnh đề nguyên tố trong tập kết quả ứng cử viên.

  2. Áp dụng tiêu chí kết hợp trong from mệnh đề và giảm tập kết quả ứng cử viên.

  3. Áp dụng các tiêu chí trong mệnh đề where clause để giảm thêm tập hợp kết quả ứng viên.

  4. phân chia tập hợp kết quả ứng cử viên thành các nhóm dựa trên tiêu chí trong nhóm group by mệnh đề.

  5. Loại bỏ khỏi kết quả ứng cử viên đặt bất kỳ cột nào khác với những cột có liên quan đến nhóm group by hoặc liên quan đến việc đánh giá một chức năng tổng hợp.

  6. Tính toán giá trị của bất kỳ hàm tổng hợp nào như vậy cho từng nhóm trong tập kết quả ứng viên.

  7. Thu gọn mỗi nhóm trong tập hợp kết quả ứng viên thành một hàng duy nhất bao gồm các cột nhóm và các giá trị được tính toán cho mỗi hàm tổng hợp. Tập hợp kết quả đề xuất hiện bao gồm một hàng cho mỗi nhóm, với tất cả các cột khác với nhóm group by cột hoặc giá trị tính toán của các hàm tổng hợp cho nhóm bị loại bỏ.

  8. Áp dụng các tiêu chí trong having mệnh đề để giảm tập kết quả ứng viên và tạo ra tập kết quả cuối cùng.

  9. Sắp xếp kết quả cuối cùng được thiết lập theo tiêu chí trong order by và phát ra nó.

Có nhiều bước hơn, phải làm với những thứ như computecompute by nhưng điều này là đủ để có được khái niệm lý thuyết về cách nó hoạt động.

Cũng cần lưu ý rằng không có gì ngoại trừ việc triển khai ngây thơ nhất sẽ thực sự đánh giá một select tuyên bố theo cách này, nhưng kết quả được tạo ra phải giống như khi các bước trên được thực hiện đầy đủ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để xóa tệp hoặc hình ảnh khỏi thư mục và cơ sở dữ liệu trong Laravel?

  2. Truy vấn MySQL để tìm trọng số của các cạnh trong biểu đồ

  3. Cách cài đặt CHỈ MySQL trên Debian GNU / Linux 9 (căng) mà không cần MariaDB?

  4. Chọn các khóa học hoàn toàn hài lòng theo danh sách các điều kiện tiên quyết nhất định

  5. So sánh với giá trị NULL