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