程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> SQL多表銜接查詢實例剖析(具體圖文)

SQL多表銜接查詢實例剖析(具體圖文)

編輯:MSSQL

SQL多表銜接查詢實例剖析(具體圖文)。本站提示廣大學習愛好者:(SQL多表銜接查詢實例剖析(具體圖文))文章只能為提供參考,不一定能成為您想要的結果。以下是SQL多表銜接查詢實例剖析(具體圖文)正文


新建兩張表:

表1:student  截圖以下:

SQL多表連接查詢

表2:course  截圖以下:

SQL多表連接查詢

(此時如許建表只是為了演示銜接SQL語句,固然現實開辟中我們不會如許建表,現實開辟中這兩個表會有本身分歧的主鍵。)

1、外銜接

外銜接可分為:左銜接、右銜接、完整外銜接。

1、左銜接  left join 或 left outer join

SQL語句:select * from student left join course on student.ID=course.ID
履行成果:

SQL多表連接查詢

左外銜接包括left join左表一切行,假如左表中某行在右表沒有婚配,則成果中對應行右表的部門全體為空(NULL).

注:此時我們不克不及說成果的行數等於左表數據的行數。固然此處查詢成果的行數等於左表數據的行數,由於閣下兩表此時為一對一關系。

2、右銜接  right join 或 right outer join
SQL語句:select * from student right join course on student.ID=course.ID
履行成果:

SQL多表連接查詢

右外銜接包括right join右表一切行,假如左表中某行在右表沒有婚配,則成果中對應左表的部門全體為空(NULL)。

注:異樣此時我們不克不及說成果的行數等於右表的行數。固然此處查詢成果的行數等於左表數據的行數,由於閣下兩表此時為一對一關系。

3、完整外銜接  full join 或 full outer join

SQL語句:select * from student full join course on student.ID=course.ID
履行成果:

SQL多表連接查詢

完整外銜接包括full join閣下兩表中一切的行,假如右表中某行在左表中沒有婚配,則成果中對應行右表的部門全體為空(NULL),假如左表中某行在右表中沒有婚配,則成果中對應行左表的部門全體為空(NULL)。

2、內銜接  join 或 inner join

SQL語句:select * from student inner join course on student.ID=course.ID
履行成果:

SQL多表連接查詢

inner join 是比擬運算符,只前往相符前提的行。

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

3、穿插銜接 cross join

1.概念:沒有 WHERE 子句的穿插聯接將發生銜接所觸及的表的笛卡爾積。第一個表的行數乘以第二個表的行數等於笛卡爾積成果集的年夜小。

SQL語句:select * from student cross join course
履行成果:

SQL多表連接查詢

假如我們在此時給這條SQL加上WHERE子句的時刻好比SQL:select * from student cross join course where student.ID=course.ID

此時將前往相符前提的成果集,成果和inner join所示履行成果一樣。

4、兩表關系為一對多,多對一或多對多時的銜接語句

固然下面兩表為一對一關系,那末假如表A和表B為一對多、多對一或多對多的時刻,我們又該若何寫銜接SQL語句呢?

其實兩表一對多的SQL語句和一對一的SQL語句的寫法都差不多,只是查詢的成果紛歧樣,固然兩表也要略有修改。

好比表1的列可以改成:
Sno Name Cno
表2的列可以改成:
Cno CName
如許兩表便可以寫一對多和多對一的SQL語句了,寫法和下面的一對一SQL語句一樣。

上面引見一下當兩表為多對多的時刻我們該若何建表和些SQL語句。

新建三表:

表A:  student 截圖以下:

SQL多表連接查詢

表B:  course 截圖以下:

SQL多表連接查詢

表C:  student_course 截圖以下:

SQL多表連接查詢

一個先生可以選擇多門課程,一門課程可以被多個先生選擇,是以先生表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

履行成果:

SQL多表連接查詢

此條SQL履行的成果是先生選課的情形。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved