工作中寫sql語句時需要用到在多個表之間各查詢點資料,然後組合,利用mybatis返回給乙個bean物件。
現在把這幾個連線總結下,方便下次用時參考。
下面是學生表student:
idname
***age
001aaa
boy10
002bbb
girl
10003
cccgirl
10004
dddboy
10005
eeegirl
10006
fffboy
10下面是學生成績表grades:
idmath
chinese
english
00190
9495
00291
9793
00392
9896
00493
9291
00794
9090
00895
9596
現在,查詢學生的數學成績並對應姓名。可以先用不使用連線的sql語句查詢:
select
student.name,
grades.math
from
student,grades
where
student.id = grades.id
這樣的查詢結果為:
name
math
aaa90
bbb91
ccc92
ddd93
先看一下用inner join 的sql語句查詢上面的內容寫法:
select
student.name,
grades.math
from
student
inner join
grades
on student.id = grades.id
inner join定義:在查詢的幾個表中,每個表都存在至少乙個匹配時,inner join 關鍵字返回行。也就是共有部分,即,幾個表的交集。
把上面內連線(inner join)的關鍵字改為left join
效果如何呢?
select
student.name,
grades.math
from
student
left join
grades
on student.id = grades.id
下面是查詢結果:
name
math
aaa90
bbb91
ccc92
ddd93
eeefff
會發現學生eee和fff沒有成績,原因是因為:
left join定義:關鍵字會從左表 (student) 那裡返回所有的行,即使在右表 (grades) 中沒有匹配的行。
有了left join,肯定會想,有沒有right join呢?答案是,有的。
select
student.name,
grades.math
from
student
right join
grades
on student.id = grades.id
下面是查詢結果:
name
math
aaa90
bbb91
ccc92
ddd93
9495
會發現,多了兩列沒有名字,只有成績的行。
right join定義:關鍵字會右表 (grades) 那裡返回所有的行,即使在左表 (student) 中沒有匹配的行。
有了左連線,有了右連線,還有了內連線(交集),那有沒有取並集的連線呢?答案是,有的。
select
student.name,
grades.math
from
student
full join
grades
on student.id = grades.id
查詢結果,想必也知道了:
name
math
aaa90
bbb91
ccc92
ddd93
eeefff
9495
full join定義:只要查詢的某個表存在匹配,full join 關鍵字就會返回行。
但是:mysql中沒有full join,那麼mysql中要用full join的效果怎麼辦呢?
用法:
select
student.name,
grades.math
from
student
left join
grades
on student.id = grades.id
union
select
student.name,
grades.math
from
student
right join
grades
on student.id = grades.id
union定義:union 操作符用於合併兩個或多個 select 語句的結果集。
注意:
union
和union all
區別:union all會列出所有結果,有重複,union沒有重複。
資料庫 資料庫表連線Join
一條sql join語句對應著關係代數裡的乙個join操作,它對關聯式資料庫裡乙個或多個表的列進行合併。ansi標準的sql規定了5種型別的join inner,left outer,right outer,full outer和cross。除此之外乙個表能夠對自身進行連線,即self join。以...
Sql 資料庫 join 連線
sql裡面有兩個連線乙個是union,另乙個就是join 他們兩個的區別 union 連線的是行 是一行一行的連 而 join 連線的是列 字段 他們倆的區別暫時就就知道這點 join連線的使用的前提 1.必須要有至少乙個表 乙個表可以用自連線 2.必須要有相關聯的列 字段 主鍵外來鍵啥的。join...
CI框架資料庫查詢之join用法分析
用 a表中的每個id 去查詢這個 id 在 people 表中的資訊。語句如下 this db from a this db join b sites.id b.id 用 a表中的每個id 去查詢這個 id 在 b表中的資訊。注意sql的約定,如果乙個列名在二張表中是重複的,你需要在列名前加上表名和...