資料庫查詢連線 JOIN 用法

2021-09-01 05:39:29 字數 2890 閱讀 2619

工作中寫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 語句的結果集。

注意:

unionunion 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的約定,如果乙個列名在二張表中是重複的,你需要在列名前加上表名和...