mysql 聯結 子查詢

在可以指定一個表名的任何地方,都可以一個括號括起來的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和子查詢的
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章