無論是在學(xué)習(xí)耿老師視頻,還是自考數(shù)據(jù)庫原理,我們都接觸到聯(lián)合查詢這部分,但在實(shí)踐中并沒有過多的去應(yīng)用。現(xiàn)在做項(xiàng)目才真正認(rèn)識(shí)到理論運(yùn)用到實(shí)踐的重要性。 一、概念 聯(lián)合查詢是根據(jù)每個(gè)表之間的邏輯關(guān)系從兩個(gè)或多個(gè)表中檢索數(shù)據(jù) , 而這邏輯關(guān)系則是每個(gè)
無論是在學(xué)習(xí)耿老師視頻,還是自考數(shù)據(jù)庫原理,我們都接觸到聯(lián)合查詢這部分,但在實(shí)踐中并沒有過多的去應(yīng)用?,F(xiàn)在做項(xiàng)目才真正認(rèn)識(shí)到理論運(yùn)用到實(shí)踐的重要性。
聯(lián)合查詢是根據(jù)每個(gè)表之間的邏輯關(guān)系從兩個(gè)或多個(gè)表中檢索數(shù)據(jù),而這邏輯關(guān)系則是每個(gè)表之間共同的列的關(guān)聯(lián)性,這也是關(guān)系數(shù)據(jù)庫查詢的最主要的特征.
數(shù)據(jù)表的連接有:
1、內(nèi)連接
2、外連接
(1)左連接(左邊表不限制)
(2)右連接(右邊表不限制)
(3)全外連接(不受限制)
3、交叉連接
二、實(shí)踐
建立兩張表,一張學(xué)生管理表(T_ManageStudent)和學(xué)生信息表(T_StudentInfo)
表1:(學(xué)生管理表):
表2:(學(xué)生信息表)
1、內(nèi)連接
兩表進(jìn)行比較,滿足連接條件的組合起來作為結(jié)果
語句:
方1: select dbo.T_ManageStudent.編號(hào) as 編號(hào)1,dbo.T_ManageStudent.姓名, dbo.T_StudentInfo.編號(hào) as 編號(hào)2,dbo.T_StudentInfo.職務(wù) from T_ManageStudent inner join T_StudentInfo on T_ManageStudent.編號(hào)=T_StudentInfo.編號(hào)
方2: select a.編號(hào) as 編號(hào)1,a.姓名,b.編號(hào) as 編號(hào)2,b.職務(wù) from T_ManageStudent as a inner join T_StudentInfo as b on a.編號(hào)=b.編號(hào)
結(jié)果:
2、外連接
(1)左連接(左邊表不限制)
返回結(jié)果集包含T_ManageStudent中所有記錄,不僅僅是連接字段匹配的記錄。如果T_ManageStudent中某條記錄在T_StudentInfo中沒有匹配記錄,則結(jié)果集相應(yīng)記錄有關(guān)T_StudentInfo部分為NULL值
語句:
方1: select dbo.T_ManageStudent.編號(hào) as 編號(hào)1,dbo.T_ManageStudent.姓名, dbo.T_StudentInfo.編號(hào) as 編號(hào)2,dbo.T_StudentInfo.職務(wù) from T_ManageStudent left join T_StudentInfo on T_ManageStudent.編號(hào)=T_StudentInfo.編號(hào) 方2: select a.編號(hào) as 編號(hào)1,a.姓名,b.編號(hào) as 編號(hào)2,b.職務(wù) from T_ManageStudent as a left join T_StudentInfo as b on a.編號(hào)=b.編號(hào)
結(jié)果:
(2)右連接(右邊表不限制)
返回結(jié)果集包含T_StudentInfo中所有記錄,不僅僅是連接字段匹配的記錄。如果T_StudentInfot中某條記錄在T_ManageStudent中沒有匹配記錄,則結(jié)果集相應(yīng)記錄有關(guān)T_ManageStudent部分為NULL值
語句:
方1: select dbo.T_ManageStudent.編號(hào) as 編號(hào)1,dbo.T_ManageStudent.姓名, dbo.T_StudentInfo.編號(hào) as 編號(hào)2,dbo.T_StudentInfo.職務(wù) from T_ManageStudent right join T_StudentInfo on T_ManageStudent.編號(hào)=T_StudentInfo.編號(hào) 方2: select a.編號(hào) as 編號(hào)1,a.姓名,b.編號(hào) as 編號(hào)2,b.職務(wù) from T_ManageStudent as a right join T_StudentInfo as b on a.編號(hào)=b.編號(hào)
結(jié)果:
(3)全外連接(不受限制)
返回結(jié)果集包含T_ManageStudent和T_StudentInfo所有匹配和不匹配的記錄
語句:
方1: select dbo.T_ManageStudent.編號(hào) as 編號(hào)1,dbo.T_ManageStudent.姓名, dbo.T_StudentInfo.編號(hào) as 編號(hào)2,dbo.T_StudentInfo.職務(wù) from T_ManageStudent full join T_StudentInfo on T_ManageStudent.編號(hào)=T_StudentInfo.編號(hào)
方2: select a.編號(hào) as 編號(hào)1,a.姓名,b.編號(hào) as 編號(hào)2,b.職務(wù) from T_ManageStudent as a full join T_StudentInfo as b on a.編號(hào)=b.編號(hào)
結(jié)果:
3、交叉連接
情況1(無where):
交叉連接將差生連接涉及的表的笛卡兒積,第一個(gè)表的行乘以第二個(gè)表的行等于笛卡兒積結(jié)果集的大小
情況2(有where):
同內(nèi)連接一樣
語句:
select T_ManageStudent.編號(hào) as 編號(hào)1,T_ManageStudent.姓名, T_StudentInfo.編號(hào) as 編號(hào)2 from T_ManageStudent cross join T_StudentInfo
結(jié)果:
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com