久久久久无码精品,四川省少妇一级毛片,老老熟妇xxxxhd,人妻无码少妇一区二区

SQL語(yǔ)言查詢基礎(chǔ):連接查詢和聯(lián)合查詢

時(shí)間:2024-07-13 01:13:03 SQL 我要投稿
  • 相關(guān)推薦

SQL語(yǔ)言查詢基礎(chǔ):連接查詢和聯(lián)合查詢

  SQL語(yǔ)言查詢基礎(chǔ):連接查詢

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

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

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

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

  FROMjoin_tablejoin_typejoin_table

  [ON(join_condition)]

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

  join_type指出連接類型,可分為三種:

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

  外連接:分為左外連接(LEFTOUTERJOIN或LEFTJOIN)、右外連接(RIGHTOUTERJOIN或RIGHTJOIN)和全外連接(FULLOUTERJOIN或FULLJOIN)三種。與內(nèi)連接不同的是,外連接不只列出與連接條件相匹配的行,而是列出左表(左外連接時(shí))、右表(右外連接時(shí))或兩個(gè)表(全外連接時(shí))中所有符合搜索條件的數(shù)據(jù)行。

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

  連接操作中的ON(join_condition)子句指出連接條件,它由被連接表中的列和比較運(yùn)算符、邏輯運(yùn)算符等構(gòu)成。

  無論哪種連接都不能對(duì)text、ntext和image數(shù)據(jù)類型列進(jìn)行直接連接,但可以對(duì)這三種列進(jìn)行間接連接。例如:

  Selectp1.pub_id,p2.pub_id,p1.pr_info

  FROMpub_infoASp1INNERJOINpub_infoASp2

  ONDATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info)

  (一)內(nèi)連接

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

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

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

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

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

  Select*

  FROMauthorsASaINNERJOINpublishersASp

  ONa.city=p.city

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

  Selecta.*,p.pub_id,p.pub_name,p.country

  FROMauthorsASaINNERJOINpublishersASp

  ONa.city=p.city

  (二)外連接

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

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

  Selecta.*,b.*FROMluntanLEFTJOINusertableasb

  ONa.username=b.username

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

  Selecta.*,b.*

  FROMcityasaFULLOUTERJOINuserasb

  ONa.username=b.username

  (三)交叉連接

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

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

  于6*8=48行。

  Selecttype,pub_name

  FROMtitlesCROSSJOINpublishers

  orDERBYtype

  SQL語(yǔ)言查詢基礎(chǔ):聯(lián)合查詢

  UNION運(yùn)算符可以將兩個(gè)或兩個(gè)以上上Select語(yǔ)句的查詢結(jié)果集合合并成一個(gè)結(jié)果集合顯示,即執(zhí)行聯(lián)合查詢。UNION的語(yǔ)法格式為:

  select_statement

  UNION[ALL]selectstatement

  [UNION[ALL]selectstatement][…n]

  其中selectstatement為待聯(lián)合的Select查詢語(yǔ)句。

  ALL選項(xiàng)表示將所有行合并到結(jié)果集合中。不指定該項(xiàng)時(shí),被聯(lián)合查詢結(jié)果集合中的重復(fù)行將只保留一行。

  聯(lián)合查詢時(shí),查詢結(jié)果的列標(biāo)題為第一個(gè)查詢語(yǔ)句的列標(biāo)題。因此,要定義列標(biāo)題必須在第一個(gè)查詢語(yǔ)句中定義。要對(duì)聯(lián)合查詢結(jié)果排序時(shí),也必須使用第一查詢語(yǔ)句中的列名、列標(biāo)題或者列序號(hào)。

  在使用UNION運(yùn)算符時(shí),應(yīng)保證每個(gè)聯(lián)合查詢語(yǔ)句的選擇列表中有相同數(shù)量的表達(dá)式,并且每個(gè)查詢選擇表達(dá)式應(yīng)具有相同的數(shù)據(jù)類型,或是可以自動(dòng)將它們轉(zhuǎn)換為相同的數(shù)據(jù)類型。在自動(dòng)轉(zhuǎn)換時(shí),對(duì)于數(shù)值類型,系統(tǒng)將低精度的數(shù)據(jù)類型轉(zhuǎn)換為高精度的數(shù)據(jù)類型。

  在包括多個(gè)查詢的UNION語(yǔ)句中,其執(zhí)行順序是自左至右,使用括號(hào)可以改變這一執(zhí)行順序。例如:

  查詢1UNION(查詢2UNION查詢3)

【SQL語(yǔ)言查詢基礎(chǔ):連接查詢和聯(lián)合查詢】相關(guān)文章:

SQL查詢語(yǔ)句大全10-24

sql語(yǔ)句的各種模糊查詢08-25

用SQLSERVER查詢正在實(shí)行的SQL的方法08-31

用SQL實(shí)現(xiàn)查詢數(shù)據(jù)不顯示錯(cuò)誤數(shù)據(jù)的方法08-19

Oracle查詢?cè)恚篠elect語(yǔ)句09-17

CAD查詢功能的使用技巧06-06

考生如何查詢自考成績(jī)09-28

Sun國(guó)際認(rèn)證考試證書查詢04-26

澳洲留學(xué)簽證的查詢方式05-28

Java如何實(shí)現(xiàn)簡(jiǎn)單的whois查詢09-21