聯表查詢 內連線 外連線

2021-09-27 13:43:00 字數 2132 閱讀 3627

內連線(inner join)語句1:隱式的內連線,沒有inner join,形成的中間表為兩個表的笛卡爾積。select s.stuid,s.stuname,c.courseid,c.coursename

from student as s,course as c 

where s.stuid=c.stuid

語句2:顯示的內連線,一般稱為內連線,有inner join,形成的中間表為兩個表經過on條件過濾後的笛卡爾積。

select s.stuid,s.stuname,c.courseid,c.coursename

from student as s,

inner join course as c 

on s.stuid=c.stuid

注:語句1和語句2的查詢結果相同,這兩種寫法是等價的,不過建議使用顯示內聯結,實際業務中往往不止連線兩個表,這個時候用第一種方式不僅寫起來會比較抓狂、別人看起來也比較亂,效能也會下降很多。而用第二種方式,可以一直 inner join,不管連線多少個表,看起來都不至於特別亂

三、外連線:外連不但返回符合連線和查詢條件的資料行,還返回不符合條件的一些行。外連線分三類:左外連線(left  join)、右外連線(right  join)和全外連線(full  join)。

三者的共同點是都返回符合連線條件和查詢條件(即:內連線)的資料行。不同點如下:

左外連線還返回左表中不符合連線條件單符合查詢條件的資料行。

右外連線還返回右表中不符合連線條件單符合查詢條件的資料行。

全外連線還返回左表中不符合連線條件單符合查詢條件的資料行,並且還返回右表中不符合連線條件單符合查詢條件的資料行。全外連線實際是上左外連線和右外連線的數學合集(去掉重複),即「全外=左外 union 右外」。

說明:左表就是在「(left join)」關鍵字左邊的表。右表當然就是右邊的了。

left join 關鍵字會從 左表  那裡返回所有的行,即使在 右表 中沒有匹配的行。

right join 關鍵字會從 右表  那裡返回所有的行,即使在 左表 中沒有匹配的行。

full join 關鍵字會從左表  和右表 那裡返回所有的行。如果 左表 中的行在右表 中沒有匹配,或者如果 右表中的行在左表中沒有匹配,這些行同樣會列出。

現有兩表student和course

student表中有字段stuid,stuname,stu***

course表中有字段courseid,coursename,stuid

1.查詢所有人的學號、姓名以及他們的課程資訊
隱式內連線

select s.stuid,s.stuname,c.courseid,c.coursename

from student as s,course as c

where s.stuid=c.stuid

顯示內聯接來查詢

select s.stuid,s.stuname,c.courseid,c.coursename

from student as s,

inner join course as c

on s.stuid=c.stuid

left join左外聯接 例項

select *from userinfo 

left join userlogin

on userinfo.userid=userlogin.userid

right join右外聯接 例項

select *from userinfo 

right join userlogin

on userinfo.userid=userlogin.userid

full join 全外連線 例項

select *from userinfo 

full join userlogin

on userinfo.userid=userlogin.userid

聯表查詢 內連線 外連線

1.說明 聯表查詢可實現兩個或多個表之間的連線查詢,一般用於有主外來鍵關係表之間的連查詢,這裡拿兩個有主外來鍵關係的表來舉例說明聯表查詢的使用。student表 其中classid為外來鍵 class表 2.內連線查詢 查詢出學生的所有資訊 select from student a,class b...

連表查詢(內連線,左外連線,右外連線)

用兩個表 a table b table 關聯欄位a table.a id和b table.b id來演示一下mysql的內連線 外連線 左 外 連線 右 外 連線 全 外 連線 mysql版本 server version 5.6.31 mysql community server gpl 資料庫...

Mysql連表查詢(內連線 外連線)

建立兩張 並分別插入資料 create table ifnot exists left table id int auto increment,age int,name varchar 20 primary key id engine innodb default charset utf8 auto...