初始表環境如下:
表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
(微笑臉)