子查詢 聯合查詢和連線查詢

2021-08-18 14:55:29 字數 1398 閱讀 3543

查詢中巢狀查詢。

如  select * from (

select cname,cid from tblclass

union

select dname,did from department

) as t1

order by cname

將多個結果集合並成乙個結果集,前提是列數相同,並且相應的列的型別相同。判斷標準以第乙個表的結果集為準。

執行結果集的特點:結果集的列名以第乙個為準;

如上面的語句的結果集為在第乙個表的基礎上,插入第二個表的資料。列數和原來一致,只增加行數。

使用union關鍵字

自動排序、消除重複項

使用union all關鍵字

不自動排序,也不消除重複項

做多個表的資料查詢。有時,結果集中的資料被包含在多個表中,則需要使用連線查詢。

第一種:內連線 inner join....on或join....on

匹配兩張表中都有的資料

select tclassname,tsname

from tblclass

inner join tblstudent on tblclass.tclassid = tblstudent.tsclassid

或select tclassname,tsname

from tblclass ,tblstudent 

where tblclass.tclassid = tblstudent.tsclassid

只有兩張表中的資料符合on條件,才會顯示結果中。

第二種:外鏈結 left(outer) join..on , right(outer) join..on和full join.on

(1)left join ....on :左表中的資訊全部出現,右表中的資訊必須能夠匹配的才出現

未匹配的項使用null填充

假設有a,b兩張表

select * from a left (outer) join b on a.id = b.id;

或select * from a ,b where a.id = b.id(+)

(2)right join ...on:右表中的資訊全部出現,左表中的資訊必須能夠匹配的才出現

未匹配的項使用null填充

select * from a right (outer) join b on a.id = b.id;

或select * from a,b where a.id(+) = b.id;

(3)full join...on:所有資料都會出現,不匹配的項使用null填充

只要想做連線查詢,必須分析出兩個表間的關係

select * from a full join b on a.id = b.id;

連線查詢,子查詢,聯合查詢

交叉連線 實際上,交叉連線是將兩個表不設定任何條件的連線結果。交叉連線通常也被叫做 笛卡爾積 數學上可能比較多。語法 from 表1 cross join 表2 可見交叉連線只是沒有on條件而已。cross這個詞也可以省略,還可以使用inner這個詞代替 例子select from product ...

連線查詢,子查詢,聯合查詢

一,連線查詢 1.交叉連線查詢 這種查詢方式基本不會使用,原因就是這種查詢方式得到的是兩個表的乘積 笛卡兒集 語法就是select from a,b 2.內連線查詢,可以有效的去除笛卡爾集現象 內連線查詢分為兩類 隱式內連線 select from a,b where 條件隱式連線使用別名 sele...

sql 連線查詢 子查詢 聯合查詢

連線查詢 多表查詢 基本含義 連線就是指兩個或2個以上的表 資料來源 連線起來成為乙個資料來源 實際上,兩個表的完全的連線是這樣的乙個過程 左邊的表的每一行,跟右邊的表的每一行,兩兩互相 橫向對接 後所得到的所有資料行的結果。注意 連線之後,並非形成了乙個新的資料表,而只是一種 記憶體形態 基本形式...