sql多表連接查詢

初始表環境如下:

表1:student


表2:course


1.外鏈接:

    又分爲:左連接、右連接、完全外連接

    左連接:select * from student left join course on student.ID=course.ID

    查詢結果爲:

                        

    右連接:select * from student right join course on student.ID=course.ID

    查詢結果爲:

                        

    完全外連接:select * from student full join course on student.ID=course.ID

    查詢結果爲:

                        

2.內連接:

    sql語句爲:select * from student inner join course on student.ID=course.ID

        相當於:select * from student,course where student.ID=course.ID

    查詢結果爲:

                        

3.交叉連接:

    交叉連接語句分爲兩種:

    (1)交叉連接語句中沒有where子句,結果爲所涉及表的笛卡爾積(結果集的行數=第一張表的行數*第二張表的行數)

    sql語句:select * from student cross join course

    查詢結果爲:

                        

    (2)交叉連接語句中有where子句,此時結果與inner join相同

4.兩表關係爲一對多,多對一或多對多時的連接

    表A:

                         

    表B:

                        

    表C:

                        

由上3張表結構可知,一個學生可以選多門課程,一門課程可被多名學生選擇,因此學生表student和課程表course之間是多對多的關係。當兩張表爲多對多關係的時候,我們需要建立一箇中間表student_course,中間表至少要有兩表的主鍵,當然還可以有別的內容。

如果我們想查詢所有學生的選課情況:

sql語句:select s.Name,c.Cname from student_course as sc left join student as s on s.Sno = sc.Sno left join course as c on c.Cno = sc.Cno

查詢結果爲:

                        


參考鏈接:https://blog.csdn.net/mr_tim/article/details/51135377

(微笑臉)

發佈了25 篇原創文章 · 獲贊 23 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章