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

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

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

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

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

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

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

SQL-92標(biāo)準(zhǔn)所定義的FROM子句的連接語法格式為:

FROM join_table join_type join_table 

[ON (join_condition)] 

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

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

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

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

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

(一)內(nèi)連接

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

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

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

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

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

SELECT * 

FROM authors AS a INNER JOIN publishers AS p 

ON a.city=p.city 

又如使用自然連接,在選擇列表中刪除authors 和publishers 表中重復(fù)列(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

(二)外連接

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

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

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

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

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

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

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

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

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ù)行的笛卡爾積,返回到結(jié)果集合中的數(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ū)交流討論,希望通過本文能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • 基于mysql樂觀鎖實(shí)現(xiàn)秒殺的示例代碼

    基于mysql樂觀鎖實(shí)現(xiàn)秒殺的示例代碼

    本文主要介紹了基于mysql樂觀鎖實(shí)現(xiàn)秒殺,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • mysql如何導(dǎo)出服務(wù)器內(nèi)所有的數(shù)據(jù)庫

    mysql如何導(dǎo)出服務(wù)器內(nèi)所有的數(shù)據(jù)庫

    這篇文章主要介紹了mysql如何導(dǎo)出服務(wù)器內(nèi)所有的數(shù)據(jù)庫問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • MySQL分區(qū)之HASH分區(qū)詳解

    MySQL分區(qū)之HASH分區(qū)詳解

    hash分區(qū)的目的是將數(shù)據(jù)按照某列進(jìn)行hash計(jì)算后更加均勻的分散到各個分區(qū),下面這篇文章主要給大家介紹了關(guān)于MySQL分區(qū)之HASH分區(qū)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • mysql 如何動態(tài)修改復(fù)制過濾器

    mysql 如何動態(tài)修改復(fù)制過濾器

    這篇文章主要介紹了mysql 如何動態(tài)修改復(fù)制過濾器,幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下
    2020-11-11
  • mysql如何為大表新增字段或索引

    mysql如何為大表新增字段或索引

    解決MySQL大表增加或增加索引操作超時的問題,可以通過建新表、加字段或索引、導(dǎo)數(shù)據(jù)到新表、改表名等步驟來實(shí)現(xiàn),可以分批導(dǎo)入數(shù)據(jù)以防止超時,同時,還介紹了如何查詢表中的所有字段以及在IDEA中設(shè)置執(zhí)行超時時間的方法
    2025-03-03
  • MySQL 主從同步,事務(wù)回滾的實(shí)現(xiàn)原理

    MySQL 主從同步,事務(wù)回滾的實(shí)現(xiàn)原理

    這篇文章主要介紹了MySQL 主從同步,事務(wù)回滾的實(shí)現(xiàn)原理,幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下
    2020-12-12
  • MySQL語句整理及匯總介紹

    MySQL語句整理及匯總介紹

    今天小編就為大家分享一篇關(guān)于MySQL語句整理及匯總介紹,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • MySQL子查詢的幾種常見形式介紹

    MySQL子查詢的幾種常見形式介紹

    mysql從4.1版開始支持子查詢功能,在此版本前,可以用join寫連表查詢來進(jìn)行替代,但不推薦這么寫,相當(dāng)?shù)穆闊?/div> 2014-04-04
  • Centos中安裝多個mysql數(shù)據(jù)的配置實(shí)例

    Centos中安裝多個mysql數(shù)據(jù)的配置實(shí)例

    最近因?yàn)閱挝豁?xiàng)目擴(kuò)充,需要在原線上數(shù)據(jù)庫服務(wù)器上加裝一個mysql實(shí)例(實(shí)際上就是從新編譯安裝一個非3306的自定義端口,不同目錄的mysql),研究了一天,終于順利搞定,這里把配置步驟發(fā)給大家,供大家學(xué)習(xí)使用
    2014-04-04
  • mysql中數(shù)據(jù)庫覆蓋導(dǎo)入的幾種方式總結(jié)

    mysql中數(shù)據(jù)庫覆蓋導(dǎo)入的幾種方式總結(jié)

    這篇文章主要介紹了mysql中數(shù)據(jù)庫覆蓋導(dǎo)入的幾種方式總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評論

廊坊市| 宁强县| 铅山县| 体育| 明星| 平陆县| 石首市| 聂拉木县| 河西区| 淮阳县| 贵港市| 紫阳县| 尼勒克县| 盐源县| 镇坪县| 通河县| 石台县| 通河县| 慈溪市| 平乡县| 那曲县| 德昌县| 遂溪县| 佳木斯市| 肥乡县| 鄂托克前旗| 金昌市| 华容县| 漳州市| 顺义区| 永仁县| 温州市| 安康市| 林西县| 秭归县| 仁寿县| 阿图什市| 辉县市| 灵山县| 三原县| 甘南县|