連線查詢中用來連線連個表的條件稱為連線條件或連線謂詞。其形式為:
[《表1>].《列名1> 《連線運算子》 [《表2>].《列2>常見的連線運算子包括
1、比較運算子:=、>、=、<=、!=、between和and。
2、邏輯運算子:not、and、or。
3、使用between和and連線查詢形式為[《表1>].《列名1>[《表2>].《列名2>and[《表2>].《列名3>。
1、內連線:表中的行互相連線。結果集的行數等於每個表滿足條件的行數的乘積,參與連線的表示平等的。
2、外連線:參與連線的表有主次之分,主表的每一行資料去匹配從表的資料列,符合連線條件的資料將直接返回到結果集中,不符合連線條件的資料列將以null填充後返回到結果集中,其中外連線又分左外連線、右外連線和全連線3種。
[1] 等值連線查詢
select p.*,c.*上面的等值連線中,兩張表都有countryid欄位,因此查出來的結果中就會有兩列countryidfrom country as c,person as
p where c.countryid = p.countryid
[2] 在等值結果中消除資料就是自然連線
select p.name,c.countryname from country as c,person as p where c.countryid = p.countryid[3] 自身連線
乙個資料表自己與自己建立連線稱為自身連線
1、內連線查詢的語法結構如下:
selectinner 可以省略,只有 join 時就是省略了inner。內連線就是傳統的連線操作,這裡用 on 子句指定連線條件,用 where 子句指定連線後的其他限定條件:屬性或表示式列
from
表[inner
]join
表on連線條
[where 《限定條件》
]
select1、左外連線查詢的語法結構,outer 可省略:p.name,c.countryname
from country as c inner
join person p on p.countryid = c.countryid
select如下:屬性或表示式列
from
表left
[outer
]join
表on連線條
[where 《限定條件》
]
select注意:[1] 第乙個表為主表,第二個表為從表;ta.roleid,ta.rolename,tb.functioncode
from sysrole ta left
join sysrolefunction tb on ta.roleid = tb.roleid
[2] 在查詢結果集中包含第乙個表中滿足條件的所有記錄,如果第二個表存在on子句連線條件匹配的記錄,則第二個表返回相應值,否則第二個表返回null。也就是說,不管第二個表有沒有記錄匹配,第乙個表的所有欄位都會返回,這就是外連線與內連線的區別。
1、右外連線查詢的語法結構如下:
select2、例項:屬性或表示式列
from
表right
outer
join
表on連線條
[where 《限定條件》
]
select注:[1] 第乙個表為從表,第二個表為主表;tb.roleid,tb.functioncode,ta.rolename
from sysrole ta right
join sysrolefunction tb on ta.roleid = tb.roleid
[2] 在查詢結果集中包含第二個表中滿足條件的所有記錄,如果第乙個表存在on子句連線條件匹配的記錄,則第乙個表返回相應值,否則第乙個表返回null。也就是說,不管第乙個表有沒有記錄匹配,第二個表的所有欄位都會返回。
1、全外連線查詢的語法結構如下:
select注:[1] 兩個表同為主表;屬性或表示式列
from
表full
[outer
]join
表on連線條
[where 《限定條件》
]
[2] 在查詢結果集中包含兩個表中的所有記錄,如果存在on子句連線條件匹配的記錄,則另乙個表返回相應值,否則另乙個表返回null。也就是說,不管表記錄有沒有記錄匹配,兩個表的所有欄位都會返回。
交叉連線corss join,用於將第一張表的所有記錄與第二張表的所有記錄組合一次並返回。
執行如下sql語句:
select lastname + firstnameunion是乙個特殊的運算子,用於將兩個或兩個以上的查詢產生乙個結果集。join將資訊水平連線(新增更多列),而union將資訊垂直連線(新增更多行)。當使用union處理查詢時,要注意以下幾個關鍵點。from name2 cross
join name1
(1)、所有union的查詢必須在select列表中有相同的列數。即如果第乙個查詢有3個列數,第二個查詢也要只有3個列數。
(2)、union返回結果的標題集僅從第乙個查詢中獲得,無論第二個查詢如何命名或取別名都不會更改。
(3)、查詢中對應的列的資料型別必須隱式一致。注意不要求完全一致,只需要隱式一致。
(4)、與其他非union不同,union的預設返回選項為distinct,而不是all。union all語句與union的不同點僅僅在於遇到相同的記錄,會全部保留。
Sql語法之join表連線說明
sql語法之join表連線說明 左連線 右連線 內連線我們可以看成是在全連線的基礎上過濾條件,這樣比較容易理解 語法 select from a join b 查詢結果 a表資料條數 b表資料條數 查詢總條數 語法 select from a inner join b on a.id b.id 簡化...
SQL學習之SQL語法
sql語句 最重要也是最常用的的 sql 命令 菜鳥教程 mysql oracle sqlite access ms sql server等 其中又分為兩大陣營 非關係型資料庫 key value的形式,沒有表結構 由來 資料庫管理軟體的由來 資料想要永久儲存,都是儲存在檔案中的,毋庸置疑,乙個檔案...
mysql表連線sql表 MYSQL表連線查詢
表連線查詢 一 交叉連線 笛卡爾積 查詢teacher和course表中所有的資料 select from teacher,course select name,courseid,course.id,cname from teacher,course where teacher.courseid c...