左外連接包含left join左表所有行,如果左表中某行在右表沒有匹配,則結(jié)果中對應(yīng)行右表的部分全部為空(NULL).
注:此時我們不能說結(jié)果的行數(shù)等于左表數(shù)據(jù)的行數(shù)。當(dāng)然此處查詢結(jié)果的行數(shù)等于左表數(shù)據(jù)的行數(shù),因為左右兩表此時為一對一關(guān)系。
**********************************************************************************
注:此時我們不能說結(jié)果的行數(shù)等于左表數(shù)據(jù)的行數(shù)。當(dāng)然此處查詢結(jié)果的行數(shù)等于左表數(shù)據(jù)的行數(shù),因為左右兩表此時為一對一關(guān)系。
**********************************************************************************
下面介紹一下當(dāng)兩表為多對多的時候我們該如何建表以及些SQL語句。
新建三表:
表A: student 截圖如下:

表B: course 截圖如下:

表C: student_course 截圖如下:

一個學(xué)生可以選擇多門課程,一門課程可以被多個學(xué)生選擇,因此學(xué)生表student和課程表course之間是多對多的關(guān)系。
當(dāng)兩表為多對多關(guān)系的時候,我們需要建立一個中間表student_course,中間表至少要有兩表的主鍵,當(dāng)然還可以有別的內(nèi)容。
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
執(zhí)行結(jié)果:

此條SQL執(zhí)行的結(jié)果是學(xué)生選課的情況。
新建三表:
表A: student 截圖如下:

表B: course 截圖如下:

表C: student_course 截圖如下:

一個學(xué)生可以選擇多門課程,一門課程可以被多個學(xué)生選擇,因此學(xué)生表student和課程表course之間是多對多的關(guān)系。
當(dāng)兩表為多對多關(guān)系的時候,我們需要建立一個中間表student_course,中間表至少要有兩表的主鍵,當(dāng)然還可以有別的內(nèi)容。
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
執(zhí)行結(jié)果:

此條SQL執(zhí)行的結(jié)果是學(xué)生選課的情況。