最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

sql表連接查詢使用方法(sql多表連接查詢)

 更新時間:2014年01月06日 14:44:26   作者:  
表連接就是通過關聯多張表,從而檢索出需要的數據的方法,下面我們通過代碼示例來學習一下sql的表連接使用方法

實際的項目,存在多張表的關聯關系。不可能在一張表里面就能檢索出所有數據。如果沒有表連接的話,那么我們就需要非常多的操作。比如需要從A表找出限制性的條件來從B表中檢索數據。不但需要分多表來操作,而且效率也不高。比如書中的例子:

復制代碼 代碼如下:

SELECT FId
FROM T_Customer
WHERE FName='MIKE'

這個SQL語句返回2,也就是姓名為MIKE 的客戶的FId值為2,這樣就可以到T_Order中檢索FCustomerId等于2 的記錄:

復制代碼 代碼如下:

SELECT FNumber,FPrice
FROM T_Order
WHERE FCustomerId=2

下面我們詳細來看看表連接。表連接有多種不同的類型,有交叉連接(CROSS JOIN)、內連接(INNER JOIN)、外連接(OUTTER JOIN)。

(1)內連接(INNER JOIN):內連接組合兩張表,并且只獲取滿足兩表連接條件的數據。

復制代碼 代碼如下:

SELECT o.FId,o.FNumber,o.FPrice,
c.FId,c.FName,c .FAge
FROM T_Order o JOIN T_Customer c
ON o.FCustomerId= c.FId

注:在大多數數據庫系統(tǒng)中,INNER JOIN中的INNER是可選的,INNER JOIN 是默認的連接方式。

在使用表連接的時候可以不局限于只連接兩張表,因為有很多情況下需要聯系許多表。例如,T_Order表同時還需要連接T_Customer和T_OrderType兩張表才能檢索到所需要的信息,編寫如下SQL語句即可:

復制代碼 代碼如下:

SELECT o.FId,o.FNumber,o.FPrice,
c.FId,c.FName,c .FAge
FROM T_Order o JOIN T_Customer c
ON o.FCustomerId= c.FId
INNER JOIN T_OrderType
ON T_Order.FTypeId= T_OrderType.FId

(2)交叉連接(CROSS JOIN):交叉連接所有涉及的表中的所有記錄都包含在結果集中。可以采用兩種方式來定義交叉連接,分別是隱式和顯式的連接。

下面看看隱式的例子:

復制代碼 代碼如下:

SELECT T_Customer.FId, T_Customer.FName, T_Customer.FAge,
T_Order.FId, T_Order.FNumber, T_Order.FPrice
FROM T_Customer, T_Order

使用顯式的連接則需要使用CROSS JOIN,例子如下:

復制代碼 代碼如下:

SELECT T_Customer.FId, T_Customer.FName, T_Customer.FAge,
T_Order.FId, T_Order.FNumber, T_Order.FPrice
FROM T_Customer
CROSS JOIN T_Order

(3)外連接(OUTTER JOIN):內部連接只獲取滿足連接條件的數據,而對于外部連接來說,主要是解決這樣的一種場景。滿足條件的數據檢索出來,這個沒有疑問,外部連接還會檢索另一部分數據,那就是將不滿足條件的數據以NULL來填充。先來看一下外連接的分類:左外部連接(LEFT OUTER JOIN)、右外部連接(RIGHT OUTER JOIN)和全外部連接(FULLOUTER JOIN)。

I、左外部連接(LEFT OUTER JOIN):前頭也說了,將不滿足條件的數據以NULL來填充。那么具體是哪些需要以NULL來填充呢,對于左外連接來說的話,連接條件當中,如果出現滿足條件的左表的數據在右表中沒有相應匹配時,需要把相應的右表字段填充NULL值。也就是說左外部連接的主體是左表,右表來配合。

復制代碼 代碼如下:

SELECT o.FNumber,o.FPrice,o.FCustomerId,
c.FName,c.FAge
FROM T_Order o
LEFT OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId

注:如果使用左外部連接的話,通過where語句能過濾其中不符合的數據

復制代碼 代碼如下:

SELECT o.FNumber,o.FPrice,o.FCustomerId,
c.FName,c.FAge
FROM T_Order o
LEFT OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId
WHERE o.FPrice>=150

II、右外部連接(RIGHT OUTER JOIN):右外部連接與左外連部接相反,將會被填充NULL值的是左表的字段。也就是說右外部連接的主體是右表,左表來配合。

復制代碼 代碼如下:

SELECT o.FNumber,o.FPrice,o.FCustomerId,
c.FName,c.FAge
FROM T_Order o
RIGHT OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId

注:同左外連接一樣,可以使用where語句進行過濾

III、全外部連接(FULLOUTER JOIN):全外部連接是左外部連接和右外部連接的合集。也就是既包括左外部連接的結果集,也包括右外部連接的結果集。

復制代碼 代碼如下:

SELECT o.FNumber,o.FPrice,o.FCustomerId,
c.FName,c.FAge
FROM T_Order o
FULL OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId

其結果相當于:

復制代碼 代碼如下:

SELECT o.FNumber,o.FPrice,o.FCustomerId,
c.FName,c.FAge
FROM T_Order o
LEFT OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId
UNION
SELECT o.FNumber,o.FPrice,o.FCustomerId,
c.FName,c.FAge
FROM T_Order o
RIGHT OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId

相關文章

  • sql server2016里面的json功能淺析

    sql server2016里面的json功能淺析

    這篇文章主要介紹了sql server2016里面的json功能,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-02-02
  • SQLServer清理日志文件方法案例詳解

    SQLServer清理日志文件方法案例詳解

    這篇文章主要介紹了SQLServer清理日志文件方法案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-09-09
  • SQL Server 觸發(fā)器 表的特定字段更新時,觸發(fā)Update觸發(fā)器

    SQL Server 觸發(fā)器 表的特定字段更新時,觸發(fā)Update觸發(fā)器

    另外再補充一句:insert和update的數據都會保存在臨時表中,所以使用inserted可以取出這些數據,刪除時使用deleted可以取出被刪除的數據
    2009-08-08
  • SqlServer開發(fā)神器'SQLPrompt'插件的使用詳解

    SqlServer開發(fā)神器'SQLPrompt'插件的使用詳解

    SQLPrompt是Sql?Server?開發(fā)智能提示插件,方便查詢表結果,避免了開發(fā)人員一個個敲查詢語句、執(zhí)行語句等,這篇文章主要介紹了SqlServer數據庫開發(fā)神器'SQLPrompt插件'的使用說明,需要的朋友可以參考下
    2023-03-03
  • SQL Server索引碎片的原因和修復

    SQL Server索引碎片的原因和修復

    索引碎片會影響數據庫性能,主要有邏輯碎片和物理碎片兩種類型,邏輯碎片導致數據頁順序不連續(xù),而物理碎片影響磁盤讀取性能,解決方法包括重建或重組索引,以及定期維護,下面就一起來看一下
    2024-09-09
  • sql server2008調試存儲過程的完整步驟

    sql server2008調試存儲過程的完整步驟

    這篇文章主要給大家分享介紹了關于sql server2008調試存儲過程的完整步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-11-11
  • SQL查詢服務器下所有數據庫及數據庫的全部表

    SQL查詢服務器下所有數據庫及數據庫的全部表

    這篇文章主要介紹了SQL查詢服務器下所有數據庫,數據庫的全部表,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • SQL Server表分區(qū)刪除詳情

    SQL Server表分區(qū)刪除詳情

    這篇文章主要介紹了SQL Server表分區(qū)刪除,刪除分區(qū)又稱為合并分區(qū),簡單地講就是將多個分區(qū)的數據進行合并?,F以表Sales.SalesOrderHeader作為示例,演示如何進行表分區(qū)刪除。下面就和小編一起進入文章學習該內容吧
    2021-10-10
  • 配置 SQL Server 2005 以允許遠程連接的方法

    配置 SQL Server 2005 以允許遠程連接的方法

    在嘗試從遠程計算機連接到 Microsoft SQL Server 2005 實例時,可能會接收到錯誤消息。在使用任何程序連接到 SQL Server 時都可能會發(fā)生此問題。
    2011-01-01
  • 深入理解Sql Server中的表掃描

    深入理解Sql Server中的表掃描

    這篇文章主要介紹了深入理解Sql Server中的表掃描,本文講解了表掃描的相關知識、表掃描的運行原理等內容,需要的朋友可以參考下
    2015-02-02

最新評論

光泽县| 景宁| 宝兴县| 南宫市| 文化| 高邮市| 湖南省| 云梦县| 乳山市| 和政县| 湘西| 石河子市| 墨脱县| 安国市| 治多县| 电白县| 郎溪县| 遵化市| 龙山县| 海林市| 聂荣县| 运城市| 巴中市| 平乐县| 稷山县| 会同县| 永清县| 汨罗市| 龙胜| 隆回县| 泾源县| 五家渠市| 东阳市| 临夏县| 始兴县| 静宁县| 云梦县| 武山县| 泗洪县| 宁阳县| 名山县|