欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SQL?多表聯合查詢的幾種方式詳解

 更新時間:2023年02月15日 10:30:19   作者:魚找水需要時間  
這篇文章主要介紹了SQL?多表聯合查詢的幾種方式,連接查詢是關系型數據庫中的一個重要標志,這次和大家一起復習多表查詢的幾種操作,結合實例代碼講解的非常詳細,需要的朋友可以參考下

前言

連接查詢是關系數據中最主要的查詢,包括內連接、外連接等。通過連接運算符可以實現多個表查詢。

正文

連接查詢主要分為三種:內連接、外連接、交叉連接。

內連接

使用比較運算符(包括=>、<、<>、>=、<=、!>!<)進行表間的比較操作,查詢與連接條件相匹配的數據。根據所使用的比較方式不同,內連接分為等值連接、自然連接和自連接三種。

關鍵字 INNER JOIN

在這里插入圖片描述

等值連接/相等連接

使用”=”關系將表連接起來的查詢,其查詢結果中列出被連接表中的所有列,包括其中的重復列

SELECT
    PM_ACT_JOB_RLS.*, PM_ACT_RLS.*
FROM
    PM_ACT_JOB_RLS
INNER JOIN PM_ACT_RLS ON PM_ACT_JOB_RLS.RlsPK = PM_ACT_RLS.RlsPK

在這里插入圖片描述

自然連接

等值連接中去掉重復的列,形成的連接

SELECT
    PM_ACT_JOB_RLS.JobPK,
    PM_ACT_RLS.RlsPK,
    RlsName
FROM
    PM_ACT_JOB_RLS
INNER JOIN PM_ACT_RLS ON PM_ACT_JOB_RLS.RlsPK = PM_ACT_RLS.RlsPK

在這里插入圖片描述

自連接

如果在一個連接查詢中,設計到的兩個表都是同一個表,這種查詢稱為自連接查詢。

--c1、c2邏輯上是兩張表,物理上是一張表
SELECT
    c1.CategoryID,
    c1.CategoryName
FROM
    [dbo].[Category] c1
INNER JOIN [dbo].[Category] c2 ON c1.[CategoryID] = c2.[ParentID]

外連接

內連接只返回滿足連接條件的數據行,外連接不只列出與連接條件相匹配的行,而是列出左表(左外連接時)、右表(右外連接時)或兩個表(全外連接時)中所有符合搜索條件的數據行。外連接分為左外連接、右外鏈接、全外連接三種。

左外連接

返回左表中的所有行,如果左表中行在右表中沒有匹配行,則在相關聯的結果集中右表的所選擇字段均為NULL。

關鍵字 LEFT [OUTER] JOIN

在這里插入圖片描述

--左外連接  --1679條數據
SELECT
    me.*,
    mo.*
FROM
    MM_LOTS_EXT AS me
LEFT OUTER JOIN MM_LOT_OPERATIONS AS mo ON me.LotID = mo.SerialNumber

在這里插入圖片描述

注意:

left join中關于where和on條件的幾個知識點:

  • 多表left join是會生成一張臨時表,并返回給用戶
  • where條件是針對最后生成的這張臨時表進行過濾,過濾掉不符合where條件的記錄
  • on條件是對left join的右表進行條件過濾,但依然返回左表的所有行,右表中沒有的補為NULL
  • on條件中如果有對左表的限制條件,無論條件真假,依然返回左表的所有行,但是會影響右表的匹配值。也就是說on中左表的限制條件只影響右表的匹配內容,不影響返回行數。

實例:

SELECT g.*,f.* FROM groups g LEFT JOIN factor f ON f.groupId = g.id and f.isDel=0 where g.isDel=0

結論:

1.對左表添加條件限制需在where條件中添加,不能放到on后面
2.對右表添加條件限制需放到on后面,在where條件中添加會有數據行數差異出現問題。

右外連接

返回右表中的所有行,如果右表中行在左表中沒有匹配行,則在左表中相關字段返回NULL值。

關鍵字 RIGHT [OUTER] JOIN

--右外連接  --209條數據
SELECT
    me.*,
    mo.*
FROM
    MM_LOTS_EXT AS me
RIGHT OUTER JOIN MM_LOT_OPERATIONS AS mo ON me.LotID = mo.SerialNumber

在這里插入圖片描述

全外連接/完全外連接

返回兩個連接中所有的記錄數據,是左外連接和右外連接的并集。

關鍵字 FULL [OUTER] JOIN

--全外連接  --1816條數據 
SELECT
    me.*,
    mo.*
FROM
    MM_LOTS_EXT AS me
FULL OUTER JOIN MM_LOT_OPERATIONS AS mo ON me.LotID = mo.SerialNumber

交叉連接/笛卡爾積

兩個表做笛卡爾積,得到的結果集的行數是兩個表的行數的乘積。

關鍵字 CROSS JOIN

--笛卡爾積 (cross join后加條件只能用where,不能用on)  --45條數據(9*5)
SELECT
    *
FROM
    PM_ACT_JOB_RLS
CROSS JOIN PM_ACT_RLS

注意:帶有where條件的子句,往往會先生成兩個表行數乘積的數據表,然后從根據where條件從中選擇。

當數據量比價大的時候,笛卡爾積操作會很消耗數據庫的性能

總結

連接查詢是關系型數據庫中的一個重要標志,這次和大家一起復習多表查詢的幾種操作,希望給您帶來幫助!

到此這篇關于SQL 多表聯合查詢的幾種方式的文章就介紹到這了,更多相關SQL 多表聯合查詢內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 如何在SQL Server中使用隨機記錄集

    如何在SQL Server中使用隨機記錄集

    這篇文章介紹了如何在SQL Server里使用隨機記錄集,需要的朋友可以參考下
    2015-07-07
  • SQLServer導出數據庫字典的詳細圖文教程

    SQLServer導出數據庫字典的詳細圖文教程

    查詢sqlserver的數據庫的數據結構,返回數據字典結果,可手動將查詢的結果導出成excel等格式保存,下面這篇文章主要給大家介紹了關于SQLServer導出數據庫字典的相關資料,需要的朋友可以參考下
    2022-11-11
  • sql 語句練習與答案

    sql 語句練習與答案

    一些對初學者非常有用的練習,及練習的答案。希望可以給初學者一些幫助
    2013-06-06
  • MySQL 數據庫 source 命令詳解及實例

    MySQL 數據庫 source 命令詳解及實例

    這篇文章主要介紹了MySQL 數據庫 source 命令詳解及實例的相關資料,需要的朋友可以參考下
    2017-06-06
  • 異步的SQL數據庫封裝詳解

    異步的SQL數據庫封裝詳解

    一直在尋找一種簡單有效的庫,它能在簡化數據庫相關的編程的同時提供一種異步的方法來預防死鎖。使用這個庫,你可以輕松地連接到任何SQL-Server數據庫,執(zhí)行任何存儲過程或 T-SQL 查詢,并異步地接收查詢結果。這個庫采用C#開發(fā),沒有其他外部依賴。
    2015-09-09
  • SQL Server 高性能寫入的一些經驗總結

    SQL Server 高性能寫入的一些經驗總結

    本篇博文將針對一些常用的數據庫性能調休方法進行介紹,而且,為了編寫高效的SQL代碼,我們需要掌握一些基本代碼優(yōu)化的技巧,所以,我們將從一些基本優(yōu)化技巧進行介紹
    2012-08-08
  • 詳解SQL中的DQL查詢語言

    詳解SQL中的DQL查詢語言

    這篇文章主要介紹了SQL中的DQL查詢語言,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • SQL Server誤區(qū)30日談 第17天 有關頁校驗和的誤區(qū)

    SQL Server誤區(qū)30日談 第17天 有關頁校驗和的誤區(qū)

    從舊的實例升級上來的數據庫不會自動開啟頁校驗和,除非你顯式使用ALTER DATABASE databasename SET PAGE_VERIFY CHECKSUM進行開啟。而在SQL Server 2005或2008新建的數據庫頁校驗和是默認開啟的
    2013-01-01
  • SQL?Server的觸發(fā)器詳解

    SQL?Server的觸發(fā)器詳解

    本文詳細講解了SQL?Server的觸發(fā)器,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • Sql Server里刪除數據表中重復記錄的例子

    Sql Server里刪除數據表中重復記錄的例子

    這篇文章主要介紹了Sql Server里刪除數據表中重復記錄的例子,本文給出了3種操作方法,需要的朋友可以參考下
    2014-08-08

最新評論