資料庫外連線

2021-06-01 23:20:16 字數 2030 閱讀 5580

外連線的理解:

就是具有外來鍵關係的兩張表之間的關係,比如學生表student裡面的studentid可能在分數表score裡面是乙個外來鍵stuid,正常情況下,學生表裡面有了學生的資訊資料之後,那麼在score表裡面也應該對應的有資訊,但是現在存在的問題就是有了studentid不一定會在分數表中有資料,因為可能現在沒有考試,或者是考試的時候有些人沒有去...,,為了反映出來這兩張表之間的差異就需要使用語句把它們給查詢出來這個時候就出現了外連線了,外連線分為三種,一種是自連線,一種是左連線,一種是右連線,可是如果我們按照它們的原理去記憶的話非常的繁瑣,這個時候這樣記:左連線左全,右連線右全。這句話的意思就是說如果是左連線,那麼就是左表的記錄是全的也就是說左表是主表,而右表是從表是以主表的主鍵為外來鍵的表,後面的一句話也是同樣的道理,只不過是換乙個說法而已。

因此左連線左全,右連線右全這句話就可以很簡單的幫助我們在使用外連線的時候很清楚的區分自己應該如何使用它們。

例如兩張表:

create table student(

studentid number(11) primary key,

name varchar2(20)

);create table score(

scoreid number(15) primary key,

stuid number(11),

point number(3)

);alter table score

add constraint f_studentid foreign key (stuid)

references student (studentid);

例如要查詢出來考試的時候有誰沒有考試那麼這個時候需要使用到這兩張表,這樣就需要使用外連線了,使用外連線的時候有兩種方法,一種是使用where子句和"+"一起使用的外連線,另外一種是使用left/right join ***table on ***condition 下面就分別使用者兩種方式把結果給查詢出來,不過這兩個是不可以混合使用的,只能夠使用其中乙個。

select * from score;

--left join

select s.studentid as "學號",s.name as "姓名" ,sc.point as "分數"

from student s left join score sc on s.studentid = sc.stuid;

--where 和 」+「

select s.studentid as "學號" ,s.name as "姓名",sc.point as "分數"

from student s,score sc where sc.stuid(+)=s.studentid;

--right join

select s.studentid as "學號" ,s.name as "姓名",sc.point as "分數"

from score sc right join student s on s.studentid = sc.stuid;

--where 和 」+「

select s.studentid as "學號",s.name as "姓名",sc.point as "分數"

from student s,score sc where s.studentid=sc.stuid(+);

--full join

select s.studentid as "學號",s.name as "姓名",sc.point as "分數"

from student s full join score sc on s.studentid = sc.stuid;

關於使用(+)的一些注意事項:

1.(+)操作符只能出現在where子句中,並且不能與outer join語法同時使用。

2. 當使用(+)操作符執行外連線時,如果在where子句中包含有多個條件,則必須在所有條件中都包含(+)操作符

3.(+)操作符只適用於列,而不能用在表示式上。

4.(+)操作符不能與or和in操作符一起使用。

5.(+)操作符只能用於實現左外連線和右外連線,而不能用於實現完全外連線。

資料庫 左外連線 右外連線 內連線

資料庫 左外連線 1.左外連線的主表在左邊,即連線兩個表時,保留左表中的不匹配部分,右表的相應項用null 或0 值表示。如圖 表ax 表bx from bx left outer join ax 左表,是指from 句中的左邊的表 bx.on ax.id bx.id 結果如圖 2.右外連線 右表的...

資料庫的外連線 內連線 左外連線,全外連線

students表和advisors表 一 內連線 按照advistor id進行表的合併,合併後的資料只有兩個表中advistor id都有的值,對應的行 二 左外連線 按照advistor id進行的左外連線合併,保證表students中advistor id的每一列都在合併後的新錶中,對於ad...

資料庫的內連線 外連線

sql資料庫的連線 內連線 和外連線 左外連線 右外連線 和全連線 本次實驗在mysql資料庫中進行,資料庫初始表如下 一 內連線 結果僅包含符合連線條件的兩表中的行。如下 二 外連線 結果包含符合條件的行,同時包含不符合條件的行 分為左外連線 右外連線和全外連線 1 左外連線 左表全部行 右表匹配...