SQL鏈接

本章的內容為SQL的鏈接:

        1.內連接
        2.外連接
        3.交叉鏈接

案例表:Students表和Class表

Students:

Class:

內連接:

說明:內連接為典型的鏈接運算,使用=或<>之類的比較運算符,包括相等鏈接和自然鏈接。將多表共有的列匹配相同的行。

其中,內連接分為:隱式内連接和顯示內連接。

隱式內連接:使用逗號將兩個表鏈接起來,在where中指定鏈接條件。

SELECT * FROM dbo.Student s, dbo.Class c WHERE s.ClassId=c.ClassId

顯示內連接:使用inner join或join的方式鏈接表,在on中指定鏈接條件。

SELECT * FROM dbo.Student s JOIN dbo.Class c ON c.ClassId = s.ClassId
SELECT * FROM dbo.Student s INNER JOIN dbo.Class c ON c.ClassId = s.ClassId

隱式鏈接和顯式鏈接的區別:

        1.在語法上有區別,在結果上沒有區別。

        2.顯式鏈接更加直觀和易於理解。

        3.顯式鏈接明確指定鏈接關係,使得鏈接關係更加明確清晰。隱式鏈接沒有。

        4.簡單的表連接隱式鏈接更爲方便,複雜的表連接使用顯式鏈接邏輯更爲清晰。

隱式鏈接和顯式鏈接的區別:

        沒有區別,inner join等同於join等同於where。

外連接:

說明:外連接包括左連接、右連接和全連接,其中左連接返回左表行右連接返回右表行全連接返回左右表的所有行

左鏈接:將兩表或多表關聯起來,返回左表所有行和右表條件匹配的行。

SELECT * FROM dbo.Students s LEFT JOIN dbo.Class c  on s.ClassId=c.ClassId

結果:返回左表所有的行和對應的右表匹配的行,右表沒有匹配的行,則為null值。

右鏈接:將兩表或多表關聯起來,返回右表所有行和左表條件匹配的行。

SELECT * FROM dbo.Students s RIGHT JOIN dbo.Class c  on s.ClassId=c.ClassId

結果:返回右表的所有行和對應的左表匹配行,左表沒有匹配的行,則為null值。

全連接:將兩表或多表關聯起來,返回左表和右表所有行。

SELECT * FROM dbo.Students s FULL JOIN dbo.Class c ON c.ClassId = s.ClassId

結果:返回左右表所有匹配的行,沒有匹配的行則為null值。

交叉鏈接(迪卡爾積查詢):

說明:

        1.不依賴任何條件來匹配行,而是返回所有可能的組合行。

        2.不接where條件,返回的行數為A表的所有行*B表的所有行(A*B行)。

        3.如果接where條件,則會選擇所選取的表匹配的行*另一個表的所有行。

和全連接一樣,分為隱式和顯式的區別。

隱式交叉鏈接:使用逗號將兩個表鏈接起來,不帶on子句。

SELECT * FROM dbo.Students s, dbo.Class c WHERE s.Name='熊大'

顯式交叉鏈接:使用cross join的方式鏈接表,後面不能帶on子句。

SELECT * FROM dbo.Students s CROSS JOIN dbo.Class c WHERE s.Name='熊大'

結果:class表一共有四條數據,students查詢一條數據,最終結果出現四條數據。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值