Để truy xuất dữ liệu từ nhiều bảng ta phải kết nối các bảng lại bằng cách dùng toán tử JOIN. Toán tử này kết nối dữ liệu hai hay nhiều bảng với nhau theo mối quan hệ của chúng trong cơ sở dữ liệu. Có nhiều kiểu kết nối khác nhau được dùng trong MySQL và mỗi kiểu đều được dùng cho mỗi mục đích khác nhau. Cú pháp chung :
table_reference, table_reference
table_reference [CROSS]JOIN table_reference
table_reference INNER JOIN table_reference join_condition table_reference STRAIGHT_JOINtable_reference
table_reference LEFT [OUTER] JOIN table_reference join_condition table_reference LEFT[OUTER] JOIN table_reference
table_reference NATURAL[LEFT [OUTER]] JOIN table_reference { oj table_reference LEFT OUTER JOIN table_reference ON conditional_expr }
table_reference RIGHT[OUTER] JOIN table_reference join_condition table_reference RIGHT [OUTER]JOIN table_reference
table_reference NATURAL [RIGHT [OUTER]]JOIN table_reference
Lưu ý: khi kết nối các bảng với nhau thì trước hết phải có tên các bảng
đó. Chúng ta phải chỉ định kiểu kết nối. Dấu phẩy giữa tên các bảng tương đương với kiểu INTER JOIN or CROSS JOIN, đây là kiểu kết nối được xem
là kết nối đầy đủ.
Khi ta kết nối hai bảng với nhau, để đơn giản ta chỉ cần dùng dấu phẩy giữa hai tên bảng, sau đó bắt buột ta phải đặt điều kiện kết nối vào mệnh đề
WHERE. Đây là kiểu câu lệnh theo điều kiện mà có giải thích các đặc tính
giữa các bảng theo mối quan hệ của chúng.
Khi ta kết nối nhiều hơn hai bảng thì cũng không khó hơn khi ta kết nối hai bảng. Điều kiện chung là chúng ta cần kết nối các bảng theo từng cặp điều kiện kết nối.
Các ví dụ :
mysql> select table1.* from table1LEFT JOIN table2 ON table1.id=table2.id
where table2.id is NULL;
---
mysql> select * from table1,table2 where table1.id=table2.id;
mysql> select * from table1 LEFT JOIN table2 ON table1.id=table2.id; mysql> select * from table1 LEFT JOIN table2 USING (id);
mysql> select * from table1 LEFT JOIN table2 ON table1.id=table2.id LEFT JOIN table3 ON table2.id=table3.id;
--- mysql> select * from table1 USE INDEX (key1,key2) WHERE key1=1 and key2=2 AND key3=3;
--- mysql> select * from table1 IGNORE INDEX (key3) WHERE key1=1 and key2=2 AND key3=3;