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

Hành vi MySQL JOIN mặc định, INNER hay OUTER là gì?

Trong MySQL, viết JOIN không đủ tiêu chuẩn ngụ ý INNER JOIN . Nói cách khác, INNER trong INNER JOIN Là tùy chọn. INNERCROSS là các từ đồng nghĩa trong MySQL. Để rõ ràng, tôi viết JOIN hoặc INNER JOIN nếu tôi có điều kiện tham gia và CROSS JOIN nếu tôi không có điều kiện.

Cú pháp được phép cho phép nối được mô tả trong tài liệu .

Hiệu quả là như nhau, nhưng lịch sử đằng sau chúng là khác nhau. Cú pháp dấu phẩy là từ tiêu chuẩn ANSI-89. Tuy nhiên, có một số vấn đề với cú pháp này nên trong tiêu chuẩn ANSI-92, từ khóa JOIN đã được giới thiệu.

Tôi thực sự khuyên bạn nên luôn luôn sử dụng cú pháp JOIN thay vì dấu phẩy.

  • T1 JOIN T2 ON ... dễ đọc hơn T1, T2 WHERE ... .
  • Nó dễ bảo trì hơn vì mối quan hệ bảng và bộ lọc được xác định rõ ràng thay vì trộn lẫn với nhau.
  • Cú pháp JOIN dễ dàng chuyển đổi thành OUTER JOIN hơn là cú pháp dấu phẩy.
  • Việc trộn lẫn cú pháp dấu phẩy và JOIN trong cùng một câu lệnh có thể gây ra các lỗi gây tò mò do các quy tắc ưu tiên.
  • Ít có khả năng vô tình tạo ra một sản phẩm ca-ri khi sử dụng cú pháp JOIN do một mệnh đề nối bị quên, bởi vì các mệnh đề nối được viết bên cạnh các phép nối và bạn có thể dễ dàng biết được nếu thiếu một mệnh đề.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hỗ trợ PDO cho nhiều truy vấn (PDO_MYSQL, PDO_MYSQLND)

  2. Cách nhận 2 mục mới nhất cho mỗi danh mục trong một lần chọn (với mysql)

  3. Chuyển đổi ngày ở định dạng MM / DD / YYYY sang ngày MySQL

  4. Loại chuỗi này là gì? a:1:{s:2:vi;}

  5. Sự khác biệt về thời gian cần thiết để chèn các bản ghi InnoDB / MyISAM