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

詳解數(shù)據(jù)庫多表連接查詢的實現(xiàn)方法

 更新時間:2017年09月11日 14:30:31   作者:lxgwm2008  
這篇文章主要介紹了詳解數(shù)據(jù)庫多表連接查詢的實現(xiàn)方法的相關資料,希望通過本文大家能夠掌握數(shù)據(jù)庫多表查詢的方法,需要的朋友可以參考下

詳解數(shù)據(jù)庫多表連接查詢的實現(xiàn)方法

通過連接運算符可以實現(xiàn)多個表查詢。連接是關系數(shù)據(jù)庫模型的主要特點,也是它區(qū)別于其它類型數(shù)據(jù)庫管理系統(tǒng)的一個標志。

在關系數(shù)據(jù)庫管理系統(tǒng)中,表建立時各數(shù)據(jù)之間的關系不必確定,常把一個實體的所有信息存放在一個表中。當檢索數(shù)據(jù)時,通過連接操作查詢出存放在多個表中的不同實體的信息。連接操作給用戶帶來很大的靈活性,他們可以在任何時候增加新的數(shù)據(jù)類型。為不同實體創(chuàng)建新的表,爾后通過連接進行查詢。

連接可以在SELECT 語句的FROM子句或WHERE子句中建立,似是而非在FROM子句中指出連接時有助于將連接操作與WHERE子句中的搜索條件區(qū)分開來。所以,在Transact-SQL中推薦使用這種方法。

SQL-92標準所定義的FROM子句的連接語法格式為:

FROM join_table join_type join_table 

[ON (join_condition)] 

其中join_table指出參與連接操作的表名,連接可以對同一個表操作,也可以對多表操作,對同一個表操作的連接又稱做自連接。

join_type 指出連接類型,可分為三種:內連接、外連接和交叉連接。內連接(INNER JOIN)使用比較運算符進行表間某(些)列數(shù)據(jù)的比較操作,并列出這些表中與連接條件相匹配的數(shù)據(jù)行。根據(jù)所使用的比較方式不同,內連接又分為等值連接、自然連接和不等連接三種。

外連接分為左外連接(LEFT OUTER JOIN或LEFT JOIN)、右外連接(RIGHT OUTER JOIN或RIGHT JOIN)和全外連接(FULL OUTER JOIN或FULL JOIN)三種。與內連接不同的是,外連接不只列出與連接條件相匹配的行,而是列出左表(左外連接時)、右表(右外連接時)或兩個表(全外連接時)中所有符合搜索條件的數(shù)據(jù)行。

交叉連接(CROSS JOIN)沒有WHERE 子句,它返回連接表中所有數(shù)據(jù)行的笛卡爾積,其結果集合中的數(shù)據(jù)行數(shù)等于第一個表中符合查詢條件的數(shù)據(jù)行數(shù)乘以第二個表中符合查詢條件的數(shù)據(jù)行數(shù)。

連接操作中的ON (join_condition) 子句指出連接條件,它由被連接表中的列和比較運算符、邏輯運算符等構成。
無論哪種連接都不能對text、ntext和image數(shù)據(jù)類型列進行直接連接,但可以對這三種列進行間接連接。

(一)內連接

內連接查詢操作列出與連接條件匹配的數(shù)據(jù)行,它使用比較運算符比較被連接列的列值。內連接分三種:

1、等值連接:在連接條件中使用等于號(=)運算符比較被連接列的列值,其查詢結果中列出被連接表中的所有列,包括其中的重復列。

2、不等連接: 在連接條件使用除等于運算符以外的其它比較運算符比較被連接的列的列值。這些運算符包括>、>=、<=、<、!>、!<和<>。

3、自然連接:在連接條件中使用等于(=)運算符比較被連接列的列值,但它使用選擇列表指出查詢結果集合中所包括的列,并刪除連接表中的重復列。

例,下面使用等值連接列出authors和publishers表中位于同一城市的作者和出版社:

SELECT * 

FROM authors AS a INNER JOIN publishers AS p 

ON a.city=p.city 

又如使用自然連接,在選擇列表中刪除authors 和publishers 表中重復列(city和state):

SELECT a.*,p.pub_id,p.pub_name,p.country 

FROM authors AS a INNER JOIN publishers AS p 

ON a.city=p.city

(二)外連接

內連接時,返回查詢結果集合中的僅是符合查詢條件( WHERE 搜索條件或 HAVING 條件)和連接條件的行。而采用外連接時,它返回到查詢結果集合中的不僅包含符合連接條件的行,而且還包括左表(左外連接時)、右表(右外連接時)或兩個邊接表(全外連接)中的所有數(shù)據(jù)行。

外聯(lián)接可以是左向外聯(lián)接、右向外聯(lián)接或完整外部聯(lián)接。

在 FROM 子句中指定外聯(lián)接時,可以由下列幾組關鍵字中的一組指定:LEFT JOIN 或 LEFT OUTER JOIN;RIGHT JOIN 或 RIGHT OUTER JOIN;FULL JOIN 或 FULL OUTER JOIN。

 (1)左向外聯(lián)接:左向外聯(lián)接的結果集包括 LEFT OUTER 子句中指定的左表的所有行,而不僅僅是聯(lián)接列所匹配的行。如果左表的某行在右表中沒有匹配行,則在相關聯(lián)的結果集行中右表的所有選擇列表列均為空值。

(2)右向外聯(lián)接:右向外聯(lián)接是左向外聯(lián)接的反向聯(lián)接。將返回右表的所有行。如果右表的某行在左表中沒有匹配行,則將為左表返回空值。

(3)完整外部聯(lián)接:完整外部聯(lián)接返回左表和右表中的所有行。當某行在另一個表中沒有匹配行時,則另一個表的選擇列表列包含空值。如果表之間有匹配行,則整個結果集行包含基表的數(shù)據(jù)值。

僅當至少有一個同屬于兩表的行符合聯(lián)接條件時,內聯(lián)接才返回行。內聯(lián)接消除與另一個表中的任何行不匹配的行。而外聯(lián)接會返回 FROM 子句中提到的至少一個表或視圖的所有行,只要這些行符合任何 WHERE 或 HAVING 搜索條件。將檢索通過左向外聯(lián)接引用的左表的所有行,以及通過右向外聯(lián)接引用的右表的所有行。完整外部聯(lián)接中兩個表的所有行都將返回。

如下面使用左外連接將論壇內容和作者信息連接起來:

SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b 

ON a.username=b.username 

下面使用全外連接將city表中的所有作者以及user表中的所有作者,以及他們所在的城市:

SELECT a.*,b.* 

FROM city as a FULL OUTER JOIN user as b 

ON a.username=b.username

(三)交叉連接

交叉連接不帶WHERE 子句,它返回被連接的兩個表所有數(shù)據(jù)行的笛卡爾積,返回到結果集合中的數(shù)據(jù)行數(shù)等于第一個表中符合查詢條件的數(shù)據(jù)行數(shù)乘以第二個表中符合查詢條件的數(shù)據(jù)行數(shù)。

例,titles表中有6類圖書,而publishers表中有8家出版社,則下列交叉連接檢索到的記錄數(shù)將等于6*8=48行。

SELECT type,pub_name 

FROM titles CROSS JOIN publishers 

ORDER BY type


如有疑問請留言或者到本站社區(qū)交流討論,希望通過本文能幫助到大家,謝謝大家對本站的支持!

相關文章

  • mysql 安全管理詳情

    mysql 安全管理詳情

    這篇文章主要介紹了mysql 安全管理,MySQL服務器的安全基礎是用戶應該對他們需要的數(shù)據(jù)具有適當?shù)脑L問權,既不能多也不能少,換句話說,用戶不能對過多的數(shù)據(jù)具有過多的訪問權,下面?zhèn)z看看文章詳細內容吧
    2021-10-10
  • 解決MySQL8.0報錯Client does not support authentication protocol requested by server...問題

    解決MySQL8.0報錯Client does not support auth

    本文主要介紹了解決MySQL8.0報錯Client does not support authentication protocol requested by server...問題,文中通過代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-05-05
  • MySQL5.7 JSON類型使用詳解

    MySQL5.7 JSON類型使用詳解

    MySQL5.7發(fā)布后,專門設計了JSON數(shù)據(jù)類型以及關于這種類型的檢索以及其他函數(shù)解析。 我們先看看MySQL老版本的JSON存取方式,具體內容詳情大家參考下本文吧
    2017-10-10
  • MySQL數(shù)據(jù)庫卸載以及刪除所有有關信息詳細步驟

    MySQL數(shù)據(jù)庫卸載以及刪除所有有關信息詳細步驟

    在MySQL中數(shù)據(jù)刪除操作不僅僅是簡單地將某一個或多個行刪除,下面這篇文章主要給大家介紹了關于MySQL數(shù)據(jù)庫卸載以及刪除所有有關信息的詳細步驟,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-06-06
  • 一篇文章講解清楚MySQL索引

    一篇文章講解清楚MySQL索引

    這篇文章主要用一篇文章講解清楚MySQL索引的相關資料,十分的細致全面,推薦給大家,需要的朋友可以參考下
    2022-10-10
  • 查詢優(yōu)化之EXPLAIN的使用分析

    查詢優(yōu)化之EXPLAIN的使用分析

    本篇文章是對EXPLAIN的使用進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • mysql添加備注信息的實現(xiàn)

    mysql添加備注信息的實現(xiàn)

    這篇文章主要介紹了mysql添加備注信息的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • 實例驗證MySQL|update字段為相同的值是否會記錄binlog

    實例驗證MySQL|update字段為相同的值是否會記錄binlog

    這篇文章主要介紹了實例驗證MySQL|update字段為相同的值是否會記錄binlog,幫助大家更好的理解和學習MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-10-10
  • 淺析MySQL的注入安全問題

    淺析MySQL的注入安全問題

    這篇文章主要介紹了淺析MySQL的注入安全問題,文中簡單說道了如何避免SQL注入敞開問題的方法,需要的朋友可以參考下
    2015-05-05
  • MySQL開啟Slow慢查詢的方法示例

    MySQL開啟Slow慢查詢的方法示例

    這篇文章主要給大家介紹了關于MySQL開啟Slow慢查詢的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-02-02

最新評論