内连接
內連接也叫連接,是最早的一種連接,最早被稱為普通連接或自然連接。內連接是從結果中刪除其他被連接表中沒有匹配行的所有行,所以內連接可能會丟失信息。
內連接的語法:
SELECT fieldlist FROM table1 [INNER] join table2 ON table1.column=table2.column一個表中的行和與另外一個表中的行匹配連接。表中的數據決定了如何對這些行進行組合。從每一個表中選取一行,根據這些列的值是否相同,組合方式分為一對一、多對一和多對多的關系。
1.一對一關系
當連接的兩個表,兩個連接列的值完全相同,則兩個表連接相當于一對一的關系。
下面在“pubs”數據庫中“titles”和“titleauthor”兩個表中,根據相同列“title_id”進行內連接。在查詢分析器中輸入的SQL語句如下:
use pubs select * from titles inner join titleauthor on titles.title_id=titleauthor.title_id實現的過程如圖1所示。
圖1內連接時一對一的關系
說明:表“titles”和“titleauthor”都是SQL Server自帶的數據庫“pubs”的表。由于兩個表中的title_id列都是具有惟一值的索引,所以兩個表的內連接屬于一對一的關系。
2.多對一關系
當連接的兩個表,其中一個表要連接的列出現重復值,另外一個表的值是惟一的。這時連接的兩個表之間的出現了多對一的關系。
下面“student”表中的“學號”具有惟一值,而“grade”成績表中的“學號”有重復值。現在實現這兩個表的內連接。在查詢分析器中輸入的SQL語句如下:
use student select * from grade join student on student.學號=grade.學號?實現的過程如圖2所示。
圖2內連接時多對一的關系
3.多對多關系
當連接的兩個表,要連接的列都出現重復值,這時連接的兩個表之間出現多對多的關系。
本例是SQL Server自帶的數據庫“pubs”,其中的兩個表“titles”和“roysched”中的“royalty”列都有重復值,現在實現這兩個表的內連接。在查詢分析器中輸入的SQL語句如下:
use pubs select * from titles inner join roysched on titles.royalty=roysched.royalty實現的過程如圖3所示。
圖3內連接時多對多的關系
轉載于:https://www.cnblogs.com/Setme/archive/2012/06/05/2536598.html
總結
- 上一篇: 变长参数列表函数
- 下一篇: EditorGridPanel的网格样式