在可以指定一個表名的任何地方,都可以一個括號括起來的join子句替換
1. 自然聯結
inner join (默認聯結)
left (outer) join 左表可以爲NULL
right (outer) join 右表可以爲NULL
full (outner) join 左表和右表都可以爲NULL
2. cross join 笛卡爾積
返回兩張表的所有字段, 不去重重複列名
條件用where 比如 select a.*, b.* from a cross join b where
等同於 select * from a, b where ...
子查詢
1> from子句中的任何表名替換成一條完整的select語句.當然,必須分配一個相關名稱。
例如select p.name, p.id from (select * from students) as p
2>where子句 可以把一個表查詢作爲一個in、some、any、all、exists謂詞的比較值列表的來源。 (即嵌套查詢,子查詢的結果不輸出給主查詢)
例如:Select * from students where students.area in (select area.Name from areas)
All some any 之前皆可用 > 、 = 、<、<=、>=、<>來進行篩選
關於效率問題:
join>exist, 通常情況下用join不用子查詢
對於小數據都可以, 大數據表絕對不允許join和子查詢的