一,連接查詢
1
.交叉連接查詢
這種查詢方式基本不會使用,原因就是這種查詢方式得到的是兩個表的乘積(笛卡兒集)
語法就是select * from a,b;
2.
內連接查詢,可以有效的去除笛卡爾集現象
內連接查詢分為兩類:
隱式內連接 select * from A,B where 條件隱式連接使用別名:select * from A 別名1,B 別名2 where 別名1.xx=別名2.xx;顯示內連接 select * from A inner join B on 條件 (inner可以省略)顯示連接使用別名: select * from A 別名1 inner join B 別名2 on 別名1.xx=別名2.xx
3.
外連接
外連接有兩種方式,一種是左外連接,一種是右外連接
左外連接:select * from A left outer join B on條件右外連接:select * from A right out join B on 條件左外連接就是左邊的表的內容全部顯示,然后匹配右邊的表,如果右邊的表匹配不到,則空右外連接就是右邊的表的內容全部顯示,然后匹配左邊的表,如果左邊的表匹配不到,則空
總結:
內連接就是兩個表的交集
左外連接就是左邊表加兩表交集
右外連接就是右邊表加兩表交集
二,子查詢
定義:
子查詢允許把一個查詢嵌套在另一個查詢當中。
子查詢,又叫內部查詢,相對於內部查詢,包含內部查詢的就稱為外部查詢內部查詢,包含內部查詢的就稱為外部查詢。內部查詢,包含內部查詢的就稱為外部查詢。
子查詢可以包含普通select可以包括的任何子句,比如:distinct、 group by、order by、limit、join和union等;但是對應的外部查詢必須是以下語句之一:select、insert、update、delete、set或 者do。
使用IN進行子查詢
in的基本語法形式為:
where 操作數 in (值1,值2, ....)
則in子查詢就是:
where 操作數 in ( 列子查詢 );
使用in進行子查詢,這個我們在日常寫sql的時候是經常遇到的。in的意思就是指定的一個值是否在這個集合中,如何在就返回TRUE;否則就返回FALSE了。
in是“=any”的別名,在使用“=any”的地方,我們都可以使用“in”來進行替換。
有了in,肯定就有了not in;not in並不是和<>any是同樣的意思,not in和<>all是一個意思。
三,聯合查詢
聯合查詢就是將兩個select語句的查詢結果“層疊”到一起成為一個“大結果”。
兩個查詢結果的能夠進行“聯合”的先覺條件是:結果字段數相等。
關鍵字:union
子查詢的位置:
select 中、from 后、where 中.group by 和order by 中無實用意義。