• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      用關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL實(shí)現(xiàn)數(shù)據(jù)查詢(多表查詢)的應(yīng)用研究

      2014-04-29 00:00:00王勇

      摘 要:關(guān)系數(shù)據(jù)庫語言的國際標(biāo)準(zhǔn)在1987年被確定,到目前為止,版本由SQL—89標(biāo)準(zhǔn)、SQL—92標(biāo)準(zhǔn)升級到SQL—99標(biāo)準(zhǔn),這些版本全稱為SQL3。SQL現(xiàn)在已成為數(shù)據(jù)庫領(lǐng)域中使用最為廣泛的一個主流語言。它主要由數(shù)據(jù)查詢(Data Query)、數(shù)據(jù)操縱(Data Manipulation)、數(shù)據(jù)定義(Data Definition)和數(shù)據(jù)控制(Data Control)四個功能組成。其中數(shù)據(jù)查詢是SQL的核心功能,這其中多表查詢也是最為復(fù)雜的查詢,本文正是立足于SQL的多表查詢在實(shí)際應(yīng)用中的應(yīng)用研究。

      關(guān)鍵詞:關(guān)系數(shù)據(jù)庫;關(guān)系模型;數(shù)據(jù)查詢;多表查詢

      中圖分類號:TP311.52

      關(guān)系數(shù)據(jù)庫是基于關(guān)系模型作為數(shù)據(jù)的組織方式的,它借助于集合代數(shù)等數(shù)學(xué)概念和方法來處理數(shù)據(jù)庫中的數(shù)據(jù)?,F(xiàn)實(shí)世界中的各種實(shí)體以及實(shí)體之間的各種聯(lián)系均用關(guān)系模型來表示。它是由埃德加·科德于1970年首先提出的,并配合“科德十二定律”?,F(xiàn)如今雖然對此模型有一些批評意見,但它還是數(shù)據(jù)存儲的傳統(tǒng)標(biāo)準(zhǔn)。標(biāo)準(zhǔn)數(shù)據(jù)查詢語言SQL就是一種基于關(guān)系數(shù)據(jù)庫的語言,這種語言執(zhí)行對關(guān)系數(shù)據(jù)庫中數(shù)據(jù)的檢索和操作。

      1 數(shù)據(jù)查詢

      所謂數(shù)據(jù)查詢(數(shù)據(jù)檢索)就是從關(guān)系數(shù)據(jù)庫的數(shù)據(jù)表中找出用戶所需的數(shù)據(jù),只要表(關(guān)系)中存在,則可以通過各種各樣的方式將它找出來,SQL的查詢功能就是實(shí)現(xiàn)這一功能的。本文主要研究討論多表查詢。

      在實(shí)際應(yīng)用中,由于一個關(guān)系數(shù)據(jù)庫根據(jù)需求分析后得到很多表,而且表與表之間互相存在一對一,一對多或是多對多的表間關(guān)系,這些表中的數(shù)據(jù)往往互相有較為緊密的復(fù)雜聯(lián)系,在這種情況下,要查找用戶所需的數(shù)據(jù)時就得用多表查詢才能實(shí)現(xiàn)用戶的查詢目的和要求,比如在倉庫數(shù)據(jù)庫中分別有四張表,倉庫表,職工表,訂單表和供應(yīng)商表,這四個表兩兩存在一對多的表間關(guān)系,一個倉庫可以有多名職工,一名職工只能屬于一個倉庫;一名職工可以經(jīng)手多筆訂單,一筆訂單只能由一名職工經(jīng)手;一家供應(yīng)商可以完成多表訂單,一筆訂單只能由一家供應(yīng)商完成,在實(shí)際應(yīng)用中,如果要根據(jù)倉庫表中的數(shù)據(jù)作為條件查詢檢索供應(yīng)商表中的數(shù)據(jù)時,必須得用基于多表的連接查詢才能完成。

      1.1 簡單連接查詢。簡單連接查詢的SQL語句格式可總結(jié)如下。Select <查找數(shù)據(jù)所在的字段名,字段間用逗號隔開,如果是一個表的所有字段,則用*號表示,但必須通過“表名.*”的方式做限定是哪個表的所有字段,如果不做限定,直接一個*,則表示要查找的是from后面跟的所有表的所有字段> from <至少兩張或兩張以上的表名,這些表之間往往存在著一對一或是一對多,或是多對多的表間關(guān)系的> > 注:連接條件是兩個表的主外鍵相等,主表表名.主鍵=子表表名.外鍵 如:倉庫表.倉庫號=職工表.倉庫號。

      如果from后面跟兩張表,則是兩個表的簡單連接查詢,有一個連接條件,如果from后面跟三張表,則有兩個連接條件,如果from 后面跟四張表,則有三個連接條件,依此類推。而且查找數(shù)據(jù)的條件和連接條件必須用and連接,連接條件之間也用and連接。

      示例:在倉庫管理數(shù)據(jù)庫的四張表中檢索出回民所在倉庫的倉庫信息。對應(yīng)的SQL語句為:select 倉庫表.* from 倉庫表,職工表 where 民族=’回’ and 倉庫表.倉庫號=職工表.倉庫號。

      從這個簡單連接查詢實(shí)例來看。在基于多表的簡單連接查詢中,第一先確定最終要查詢的數(shù)據(jù)所在的字段來自于幾張表的幾個字段,查找數(shù)據(jù)的條件涉及到幾個表的幾個字段,其次根據(jù)表間關(guān)系確定查詢涉及到幾張表,然后確定連接條件。且where是必選項(xiàng)。

      1.2 嵌套查詢。嵌套查詢的意思是,一個查詢語句(select-from-where)塊可以嵌套在另外一個查詢塊的where子句中,稱為嵌套查詢。其中外層查詢也稱為父查詢或主查詢。內(nèi)層查詢也稱子查詢或從查詢。嵌套查詢的工作方式是:先處理內(nèi)查詢,由內(nèi)向外處理,外層查詢需要內(nèi)層查詢的結(jié)果來支持,但內(nèi)層查詢不需要外層查詢的支持。示例:Select城市from倉庫表where倉庫號in(select倉庫號from職工表where工資=4532)。

      在這類嵌套查詢中,帶有IN或ONT IN謂詞的嵌套查詢在實(shí)際應(yīng)用中用的最多,這里的IN相當(dāng)于集合運(yùn)算符∈。本文在闡述嵌套查詢中就以帶有IN或NOT IN謂詞的嵌套查詢進(jìn)行闡述,帶有比較運(yùn)算符的子查詢、帶有ANY或ALL謂詞的子查詢、帶有EXISTS謂詞的子查詢就再不做詳細(xì)闡述了。

      1.3 超連接查詢。超連接查詢分為內(nèi)連接和外連接,外連接又分為左外連接,右外連接和全外連接。如果表中不匹配的數(shù)據(jù)不需要出現(xiàn)在查詢結(jié)果中,則用內(nèi)連接。如果在查詢結(jié)果中兩個表中不匹配的數(shù)據(jù)都要出現(xiàn)在查詢結(jié)果中的話,則用全外連接,其對應(yīng)表中對應(yīng)字段用NULL表示。其SQL語句格式為(以基于兩張表的超連接為主):Select<跟簡單連接查詢的要求一樣>from<主表表名> on <連接條件> [where 查找數(shù)據(jù)的條件]。示例(以全外連接為例):select倉庫.倉庫號,城市,面積,職工號,工資 from 倉庫表 full join職工表 on 倉庫表.倉庫號=職工表.倉庫號JOIN連接格式在連接多個表時的書寫方法要特別注意,在這種格式中JOIN的順序和ON的順序正好是相反的。

      2 三種多表查詢的特點(diǎn)及規(guī)律

      在以上研究的三種多表查詢中,基于多表的簡單連接查詢中,要查詢的數(shù)據(jù)所在的字段可以是來自于一張表的字段,也可以是來自于多張表的字段,而查找數(shù)據(jù)的條件可以來自于一張表的字段,也可以來自于多張表的字段,即使沒有查找數(shù)據(jù)的條件,但連接條件必須得有,在其SQL語句格式中,where是必選項(xiàng)。

      在嵌套查詢中,通過實(shí)際應(yīng)用可以得出,嵌套查詢不管由幾個查詢語句塊組成,它們都是基于單表的簡單查詢構(gòu)成的,而且最內(nèi)層的查詢結(jié)果就是其外層查詢的條件,沒有內(nèi)層查詢的結(jié)果,就不可能得到外層查詢的結(jié)果,執(zhí)行順序都是由內(nèi)往外執(zhí)行的。

      在超連接查詢中,這種查詢往往是在有關(guān)系的表中出現(xiàn)了所謂的不匹配數(shù)據(jù)時,根據(jù)用戶的不同需要而使用的查詢,到底選用哪一種主要取決于查詢結(jié)果中要不要出現(xiàn)不匹配的數(shù)據(jù)和出現(xiàn)哪個表中的不匹配數(shù)據(jù)而定。

      如果要查找的數(shù)據(jù)來自于多張表的多個字段,則可用連接查詢和內(nèi)連接查詢,查詢結(jié)果相同。如果要查找的數(shù)據(jù)來自于一張表的字段,而條件發(fā)生在不同的表中,則可用連接查詢,嵌套查詢和內(nèi)連接查詢,查詢結(jié)果相同。

      3 結(jié)束語

      SQL的查詢功能,尤其是多表查詢有很大的靈活性,在實(shí)際應(yīng)用中要視具體情況來決定用哪一類,這需要在實(shí)踐中摸索總結(jié),只有這樣才能對SQL語句的查詢功能運(yùn)用的得心應(yīng)手。

      參考文獻(xiàn):

      [1]薩師煊.王珊.數(shù)據(jù)庫系統(tǒng)概論(第三版)[M].北京:高等教育出版社,2000.

      [2]賀桂英.數(shù)據(jù)庫原理及應(yīng)用—SQL Server 2008[M].北京:中國人民大學(xué)出版社,2013.

      作者簡介:王勇(1978.02-),男,助教,研究方向:數(shù)據(jù)庫。

      作者單位:蘭州外語職業(yè)學(xué)院信息技術(shù)系,蘭州 730101

      东丰县| 濮阳县| 德兴市| 台安县| 西充县| 桦甸市| 建水县| 和林格尔县| 定安县| 长海县| 轮台县| 晋中市| 忻州市| 交城县| 北安市| 连江县| 长泰县| 安义县| 定陶县| 马尔康县| 云浮市| 家居| 会泽县| 西峡县| 筠连县| 菏泽市| 达尔| 甘德县| 兴文县| 林西县| 昆明市| 阳信县| 开化县| 昌江| 利川市| 嘉峪关市| 游戏| 乌拉特中旗| 霍林郭勒市| 将乐县| 会理县|