一,連線查詢
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 中無實用意義。
連線查詢,子查詢,聯合查詢
交叉連線 實際上,交叉連線是將兩個表不設定任何條件的連線結果。交叉連線通常也被叫做 笛卡爾積 數學上可能比較多。語法 from 表1 cross join 表2 可見交叉連線只是沒有on條件而已。cross這個詞也可以省略,還可以使用inner這個詞代替 例子select from product ...
子查詢 聯合查詢和連線查詢
查詢中巢狀查詢。如 select from select cname,cid from tblclass union select dname,did from department as t1 order by cname 將多個結果集合並成乙個結果集,前提是列數相同,並且相應的列的型別相同。判斷...
sql 連線查詢 子查詢 聯合查詢
連線查詢 多表查詢 基本含義 連線就是指兩個或2個以上的表 資料來源 連線起來成為乙個資料來源 實際上,兩個表的完全的連線是這樣的乙個過程 左邊的表的每一行,跟右邊的表的每一行,兩兩互相 橫向對接 後所得到的所有資料行的結果。注意 連線之後,並非形成了乙個新的資料表,而只是一種 記憶體形態 基本形式...