內連線: 只連線匹配的行
左外連線: 包含左邊表的全部行(不管右邊的表中是否存在與它們匹配的行),以及右邊表中全部匹配的行
右外連線: 包含右邊表的全部行(不管左邊的表中是否存在與它們匹配的行),以及左邊表中全部匹配的行
全外連線: 包含左、右兩個表的全部行,不管另外一邊的表中是否存在與它們匹配的行。
表aid name
1 張
2 李
3 王
表bid address a_id
1 北京 1
2 上海 3
3 南京 10
/******************************** left join 左連線*****************************************/
包容性:a表包容b表,左連線左表是全的.(left join 或 left outer join )
sql語句如下:
select a.name, b.address
from a
left join b on a.id = b.a_id
查詢結果為:
name address
張 北京
李 null
王 上海
/******************************** right join 右連線*****************************************/
包容性:b表包容a表,右連線右表是全的.(right join 或 right outer join )
sql語句如下:
select a.name, b.address
from a
right join b on a.id = b.a_id
查詢結果為:
name address
張 北京
王 上海
null 南京
/******************************** inner join 內連線*****************************************/
排他性:a,b表中至少有1個匹配時,才返回行。兩表的交集
sql語句如下:
select a.name,b.address from a
inner join b
on a.id = b.a_id
查詢結果為:
name address
張 北京
王 上海
inner join 內連線等價於下面的sql:
select a.name, b.address
from a, b
where a.id = b.a_id
/******************************** full join 全連線*****************************************/
注釋:全外連線返回參與連線的兩個資料集合中的全部資料,無論它們是否具有與之相匹配的行。在功能上,它等價於
對這兩個資料集合分別進行左外連線和右外連線,然後再使用消去重複行的並操作將上述兩個結果集合並為乙個結果集
。(full join 或 full outer join )
sql語句如下:
select * from a
full join b
查詢結果為:
id name id address a_id
1 張 1 北京 1
2 李 1 北京 1
3 王 1 北京 1
1 張 2 上海 3
2 李 2 上海 3
3 王 2 上海 3
1 張 3 南京 10
2 李 3 南京 10
3 王 3 南京 10
/******************************** cross join(不帶條件where...)***********************************/
注釋:返回3*3=9條記錄,即笛卡爾積
sql語句如下:
select * from a
cross join b
查詢結果為:
id name id address a_id
1 張 1 北京 1
2 李 1 北京 1
3 王 1 北京 1
1 張 2 上海 3
2 李 2 上海 3
3 王 2 上海 3
1 張 3 南京 10
2 李 3 南京 10
3 王 3 南京 10
cross join等價於:
select * from a,b
資料庫 連線(自然連線 外連線 內連線)
1 自然連線 只考慮那些在兩個關係模式中都出現的屬性上取值相同的元組對natural join join.using select a1,a2,an from r1 natural join r2 natural join natural join rn where p select name1,c...
資料庫 左外連線 右外連線 內連線
資料庫 左外連線 1.左外連線的主表在左邊,即連線兩個表時,保留左表中的不匹配部分,右表的相應項用null 或0 值表示。如圖 表ax 表bx from bx left outer join ax 左表,是指from 句中的左邊的表 bx.on ax.id bx.id 結果如圖 2.右外連線 右表的...
資料庫的內連線 外連線
sql資料庫的連線 內連線 和外連線 左外連線 右外連線 和全連線 本次實驗在mysql資料庫中進行,資料庫初始表如下 一 內連線 結果僅包含符合連線條件的兩表中的行。如下 二 外連線 結果包含符合條件的行,同時包含不符合條件的行 分為左外連線 右外連線和全外連線 1 左外連線 左表全部行 右表匹配...