多表關聯的話表之間必須得存在關係才行,需要建立 外來鍵 約束:關係表中插入主表的主鍵做外來鍵。
案列分析:
需求:有使用者表sys_user和角色表sys_role,則建乙個把使用者與角色關聯起來的關係表我們稱之為使用者角色表sys_userrole
那麼我們就可以用以下語句查詢每個使用者分別具備哪些角色了
select a.login_id_,a.user_name_,a.country_,b.role_id_,c.name_,c.description_
from [dbo].[sys_user] a
left join [dbo].[sys_userrole] b
on a.id_=b.user_id_
inner join [dbo].[sys_role] c
on b.role_id_=c.id_
--在表中存在至少乙個匹配時返回行。
--inner join 與 join 是相同的。
從左表(table1)返回所有的行,即使右表(table2)中沒有匹配。如果右表中沒有匹配,則結果為 null。
--在某些資料庫中,left join 稱為 left outer join。--
從右表(table2)返回所有的行,即使左表(table1)中沒有匹配。如果左表中沒有匹配,則結果為 null。
-- 在某些資料庫中,right join 稱為 right outer join。
a left join b 取 a 全部,b 沒有對應的值為 null。
a right join b 取 b 全部, a 沒有對應的值為 null。
a full outer join b 取並集,彼此沒有對應的值為 null。
對應條件在 on 後面填寫。
在使用 left jion 時,on和where條件的區別如下:
由於left join、right join、full join 的特殊性,不管on上的條件是否為真都會返回left或right表中的記錄,full則具有left和right的特性的並集。
而 inner jion 沒這個特殊性,則條件放在on中和where中,返回的結果集是相同的。
sql基礎之表關聯
左連線 left join 下面有三張表a,b a表 b表 總結 左連線就是先把left join 左邊的表 a 的所有記錄先顯示出來,然後再根據on後面的條件匹配另一張表 b 但是如果說匹配到多條資料,然後就會把表a的資料複製一遍和後面表的資料一起顯示出來。其次如果a表的資料多,b表沒有就用nul...
SQL語法 之 表連線
連線查詢中用來連線連個表的條件稱為連線條件或連線謂詞。其形式為 表1 列名1 連線運算子 表2 列2 常見的連線運算子包括 1 比較運算子 between和and。2 邏輯運算子 not and or。3 使用between和and連線查詢形式為 表1 列名1 表2 列名2 and 表2 列名3 1...
Sql語法之join表連線說明
sql語法之join表連線說明 左連線 右連線 內連線我們可以看成是在全連線的基礎上過濾條件,這樣比較容易理解 語法 select from a join b 查詢結果 a表資料條數 b表資料條數 查詢總條數 語法 select from a inner join b on a.id b.id 簡化...