情境四公司管理數(shù)據(jù)庫(kù)系統(tǒng)的查詢_第1頁(yè)
情境四公司管理數(shù)據(jù)庫(kù)系統(tǒng)的查詢_第2頁(yè)
情境四公司管理數(shù)據(jù)庫(kù)系統(tǒng)的查詢_第3頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、情境四公司管理數(shù)據(jù)庫(kù)系統(tǒng)的查詢模塊1公司管理數(shù)據(jù)庫(kù)系統(tǒng)的簡(jiǎn)單查詢一、教學(xué)目標(biāo)1 .準(zhǔn)確理解Transact-SQL查詢語(yǔ)句的根本構(gòu)造2 .能根據(jù)需要靈活使用查詢語(yǔ)句的各子句二、工作任務(wù)公司所有雇員的信息都存儲(chǔ)在 companyinfo數(shù)據(jù)庫(kù)的employee表中,該表中包含了雇 員的雇員ID、姓名、性別、出生年月、雇傭日期、特長(zhǎng)、薪水7個(gè)字段和相應(yīng)的記錄,請(qǐng)利用Transact-SQL的SELECT語(yǔ)句實(shí)現(xiàn)以下查詢操作。1. 查詢所有雇員的信息,要求輸出的結(jié)果格式如表4-1所示。表4-1雇員的信息表姓名性別出生年月雇傭日期特長(zhǎng)薪水2. 查詢所有男'雇員的信息。3. 按照如表4-2所示的

2、格式,列出所有雇員的姓名和薪水。 表4-2雇員的姓名和薪水表雇員的姓名雇員的酬金4. 查詢所有薪水超過(guò) 3000元的雇員的信息。5. 查詢所有薪水在2000元至3000元之間的雇員的姓名和雇傭日期,并按雇傭日期的 先后排列。6. 統(tǒng)計(jì)各種特長(zhǎng)的雇員人數(shù)。7. 查詢所有姓'章'的雇員的信息。三、相關(guān)實(shí)踐知識(shí)一按照任務(wù)1的要求查詢公司所有雇員的信息。操作步驟如下:1. 連接companyinfo數(shù)據(jù)庫(kù),有以下兩種方法:從"查詢分析器"窗口的工具欄的下拉列表中選中公司管理數(shù)據(jù)庫(kù)companyinfo。在查詢分析器窗口中輸入如下命令,并運(yùn)行。USE compa ny

3、info在查詢分析器窗口中輸入以下查詢語(yǔ)句SELECT姓名,性別,出生年月,雇傭日期,特長(zhǎng),薪水FROM employeeGO2。執(zhí)行查詢語(yǔ)句方法。二按照任務(wù)2查詢所有'男'雇員的信息。查詢語(yǔ)句如下:SELECT *FROM employeeWHER駐另U ='男'三按照任務(wù)3規(guī)定的格式,列出所有雇員的姓名和薪水。為了使查詢的結(jié)果更加友好,可以改變列的標(biāo)題,即指定列的別名。在employee表中有雇員的“姓名和“薪水字段,但任務(wù)要求顯示構(gòu)造為“雇員的姓名和“雇員的 酎金,可以用 AS引導(dǎo)給出列的別名。查詢語(yǔ)句如下:SELECT姓名AS雇員的姓名,薪水AS雇員的酬

4、金FROM employee四按照任務(wù) 4列出所有薪水超過(guò)的 3000元的雇員的信息。查詢語(yǔ)句如下:SELECT *FROM employeeWHERE水 >=3000五按照任務(wù)5列出所有薪水在 2000元至3000元之間的雇員的姓名、雇傭日期和薪水, 并按雇傭日期的先后排列。查詢語(yǔ)句如下:SELECT姓名,雇傭日期,薪水FROM employeeWHERE 水 betwee n 2000 and 3000ORDER BY雇傭日期六按照任務(wù)6統(tǒng)計(jì)各種特長(zhǎng)的雇員人數(shù)。查詢語(yǔ)句如下:SELECT 特長(zhǎng),cou nt(*)人數(shù)FROM employee GROUP BY特長(zhǎng)執(zhí)行結(jié)果如下:特長(zhǎng)人

5、數(shù)唱歌2二胡2鋼琴2古箏2會(huì)計(jì)1計(jì)算機(jī)8書法4跳舞2武術(shù)1演講1音樂(lè)2游泳1所影響的行數(shù)為12行七列出所有姓'章的雇員的信息。查詢語(yǔ)句如下:SELECT *FROM employeeWHERE 姓名 LIKE ' 章 %'四、相關(guān)知識(shí)使用數(shù)據(jù)庫(kù)和數(shù)據(jù)表的主要目的是存儲(chǔ)數(shù)據(jù),以便在需要時(shí)進(jìn)展檢索、統(tǒng)計(jì)或組織輸出,通過(guò)Transact-SQL的SELECT語(yǔ)句可以從表或視圖中迅速、方便地檢索數(shù)據(jù)。在眾多的 Transact-SQL語(yǔ)句中,SELECT語(yǔ)句是使用頻率最高的一個(gè)。查詢的最根本方式是使用 SELECTS句,按照用戶給定的條件從SQL Server 2000數(shù)據(jù)庫(kù)中

6、取出數(shù)據(jù),并將數(shù)據(jù)通過(guò)一個(gè)或多個(gè)結(jié)果集返回給用戶。一SELECT語(yǔ)句構(gòu)造SELECT語(yǔ)句的主要的子句可歸納如下:SELECT ALL| DISTINCT < 目標(biāo)表達(dá)式>,<目標(biāo)表達(dá)式 >INTO <新表名>FROM <表名或視圖名 >, < 表名或視圖名 >WHERE <條件表達(dá)式> GROUP BY <列名 1> HAVING < 表達(dá)式 > ORDER BY < 列名 2> ASC | DESC 其中,包含子句 SELECT, INTO, FROM WHERE GROUP BY H

7、AVING ORDER BY等每個(gè)子句都有各自的用法和功能。SELECT子句:指定由查詢返回的列。INTO子句:將檢索結(jié)果存儲(chǔ)到新表或視圖中。FROMF句:用于指定引用的列所在的表和視圖。WHER子句:指定用于限制返回的行的搜索條件。GROUP B子句:指定用來(lái)放置輸出行的組,并且如果SELECT子句SELECT LIST中包含聚合函數(shù),那么計(jì)算每組的匯總值。HAVING子句:指定組或聚合的搜索條件。HAVING通常與GROUPBY子句一起使用。如果不使用 GROUP BY子句,HAVING的行為與 WHERE子句一樣。ORDER BYF句:指定結(jié)果集的排序。二SELECT子 句SELECT子

8、句的功能,用于返回指定列的數(shù)據(jù)集。SELECT語(yǔ)句的常規(guī)使用格式:SELECT ALL | DISTINCT TOP N PERCENT 列名 1,列名 2,列名NFROM表名或視圖名其中參數(shù)的含義如下:ALL:指定在結(jié)果集中可以顯示重復(fù)行。ALL是默認(rèn)設(shè)置。DISTINCT:指定在結(jié)果集中只能顯示惟一行,即表示輸出無(wú)重復(fù)的所有記。TOPN PERCENT:指定只從查詢結(jié)果集中輸出前N行。如果還指定了 PERCENT那么只從結(jié)果集中輸出前百分之N行。1. 查詢所有的列在SELECT子句中,通配符“ * "表示輸出指定的表或視圖中所有的列?!纠?.1】從companyinfo數(shù)據(jù)庫(kù)的客

9、戶表(customer)中檢索所有客戶的所有信息。USE compa nyinfoGOSELECT *FROM customerGO2. 查詢特定的列【例4.2】從companyinfo數(shù)據(jù)庫(kù)的客戶表(customer)中檢索所有客戶的公司名稱、聯(lián) 系人姓名、地址。USE compa nyinfoGOSELECT公司名稱,聯(lián)系人姓名,地址FROM customerGO【例4.3】從companyinfo數(shù)據(jù)庫(kù)的雇員表employee中檢索所有的雇員的姓名和特 長(zhǎng)。USE compa nyinfoGOSELECT姓名,特長(zhǎng)FROM employeeGO3. 指定特定列的列名【例4.4】查詢每個(gè)人

10、的姓名和薪水降低30%后的信息。有三種方法:1采用符合ANSI規(guī)那么的標(biāo)準(zhǔn)方法,在列表達(dá)式后面給出列名。相應(yīng)的命令如下:USE compa nyinfoGOSELECT姓名,薪水原薪水, 薪水-薪水*0.3 '現(xiàn)薪水FROM employeeGO2用“=''來(lái)連接列表達(dá)式。相應(yīng)的命令如下:USE compa nyinfoGOSELECT姓名,原薪水'=薪水,'現(xiàn)薪水'=薪水-薪水FROM employeeGO3用AS關(guān)鍵字來(lái)連接列表達(dá)式和指定的列名。相應(yīng)的命令如下:USE compa nyinfoGOSELECT姓名,薪水a(chǎn)s '原薪水&

11、#39;, 薪水-薪水*0.3 as ' 現(xiàn)薪水'FROM employeeGO4. 刪除重復(fù)的列【例4.5】從companyinfo數(shù)據(jù)庫(kù)的訂單表(p_order)中,檢索已經(jīng)被訂購(gòu)的產(chǎn)品的產(chǎn) 品名。USE compa nyinfoGOSELECT DISTINCT 產(chǎn)品名FROM p_orderGO5. 使用TOP關(guān)鍵字SELECT TOP N | TOP N PERCENT列名 1,列名 2,列名 NFROM表名其中參數(shù)如下;TOP N表示返回最前面的N行,N表示返回的行數(shù)。TOP N PERCENT表示返回的前面的 N%亍?!纠?.6】查詢companyinfo數(shù)據(jù)庫(kù)的

12、訂單表(p_order)中最前面的10行紀(jì)錄。USE compa nyinfoGOSELECT top 10 *FROM p_orderGO【例4.7】查詢companyinfo數(shù)據(jù)庫(kù)的訂單表(p_order)中的前面的10%己錄。USE compa nyinfoGOSELECT top 10 perce nt *FROM p_order6. 使用計(jì)算列【例4.8】顯示每種產(chǎn)品的價(jià)格降低30%勺產(chǎn)品信息。USE compa nyinfoGOSELECT產(chǎn)品名,庫(kù)存量,單價(jià),單價(jià)-單價(jià)FROM productGO(二)INTO 子句INTO子句用于創(chuàng)立新表并將查詢的結(jié)果插入新表中,其語(yǔ)法如下:I

13、NTO 新表名【例4.9】使用INTO子句創(chuàng)立一個(gè)包含 employee表中姓名和薪水字段,且名為new_employee 的新表。USE compa nyinfoGOSELECT姓名,薪水INTO n ew_employeeFROM employeeGO(三)WHERE子句使用WHER子句的目的是為了從表格的數(shù)據(jù)集中過(guò)濾出符合條件的行。使用WHER子句可以限制查詢的范圍,提高查詢效率。語(yǔ)法格式如下:SELECT 列名1 , 列名2,列名NFROM 表名WHERE 搜索條件1.使用算術(shù)表達(dá)式【例4.10】 查詢companyinfo數(shù)據(jù)庫(kù)的雇員表employee丨中,特長(zhǎng)是'計(jì)算機(jī)&#

14、39; 的雇員的信息。USE compa nyinfoGOSELECT *FROM employeeWHERE特長(zhǎng)='計(jì)算機(jī)'GO【例4.11】 在companyinfo數(shù)據(jù)庫(kù)的雇員表employee丨中,查詢薪水超過(guò) 3000元 的雇員的姓名和薪水。USE compa nyinfoGOSELECT姓名,薪水FROM employeeWHERE 薪水 >=3000GO2使用邏輯表達(dá)式在Transact-SQL語(yǔ)句中,常用的邏輯運(yùn)算符分別是:NOT非運(yùn)算,對(duì)表達(dá)式的否認(rèn)。AND與運(yùn)算,連接多個(gè)條件,所有的條件都成立時(shí)為真。OR 或運(yùn)算,連接多個(gè)條件,只要有一個(gè)條件成立就為真

15、?!纠?.12】在companyinfo數(shù)據(jù)庫(kù)的雇員表employee丨中,查詢特長(zhǎng)為'書法'或' 鋼琴的所有雇員的雇員ID、姓名和特長(zhǎng)。USE compa nyinfoGOSELECT雇員ID,姓名,特長(zhǎng)FROM employeeWHERE特長(zhǎng)='書法'or特長(zhǎng)='鋼琴GO查詢結(jié)果如下:雇員ID姓名特長(zhǎng)2李立三書法10姜玲娜書法12金林皎書法15劉啟芬鋼琴22錢其娜書法26歐陽(yáng)天民鋼琴3.使用范圍表達(dá)式使用BETWEE關(guān)鍵字可以更方便地表示查詢數(shù)據(jù)的范圍。語(yǔ)法格式為:表達(dá)式NOT BETWEEN 表達(dá)式1 AND 表達(dá)式2【例4.13】 在co

16、mpanyinfo數(shù)據(jù)庫(kù)的雇員表employee丨中,查詢薪水在 3000元至 4000元的雇員的姓名和薪水。SELECT姓名,薪水FROM employeeWHERE 薪水 between 3000 and 4000【例4.14】查詢庫(kù)存量大于 200或小于100的產(chǎn)品的產(chǎn)品名、庫(kù)存量和單價(jià)。SELECT 產(chǎn)品名,庫(kù)存量,單價(jià)FROM productWHERE 庫(kù)存量 not between 200 and 1004.使用IN關(guān)鍵字同BETWEE關(guān)鍵字一樣,IN的引入也是為了更方便地限制檢索數(shù)據(jù)的范圍,靈活使用IN關(guān)鍵字,可以用簡(jiǎn)潔的語(yǔ)句實(shí)現(xiàn)構(gòu)造復(fù)雜的查詢。語(yǔ)法格式為:表達(dá)式NOT IN (

17、 表達(dá)式1 ,表達(dá)式2 ,表達(dá)式 N)【例4.15】在雇員表employee丨中,查詢所有特長(zhǎng)為計(jì)算機(jī)、鋼琴、書法 的雇員的雇員ID、姓名、特長(zhǎng)。USE compa nyinfoGOSELECT雇員ID,姓名,特長(zhǎng)FROM employeeWHERE寺長(zhǎng)in (' 計(jì)算機(jī)','鋼琴','書法')GO5 通配符的使用LIKE子句在大多數(shù)情況下會(huì)與通配符配合使用。通配符的含義見教材表4-4?!纠?.16】在雇員表employee丨中,查詢所有姓名中含有“利'字的雇員的雇員ID和姓名。SELECT雇員ID,姓名FROM employeeWHER

18、E 姓名 LIKE % 利 %'GO【例4.17】查詢雇員表employee丨中所有雇員ID滿足第2個(gè)字符為“ T的雇員的 姓名和出生年月。SELECT雇員ID,姓名,出生年月FROM employeeWHERE 雇員 ID LIKE '_1%'GO6.使用NULL關(guān)鍵字在WHER子句中不能使用比擬運(yùn)算符對(duì)空值進(jìn)展判斷,只能使用空值表達(dá)式來(lái)判斷某個(gè)表達(dá)式是否為空值。如下所示:表達(dá)式IS NULL或表達(dá)式IS NOT NULL(四)ORDER BY子句應(yīng)用程序中經(jīng)常需要對(duì)檢索得到的數(shù)據(jù)集進(jìn)展排序??梢岳肙RDEBY子句實(shí)現(xiàn)。語(yǔ)法格式為:ORDER BY表達(dá)式 1 ASC

19、 | DESC,表達(dá)式 2 ASC | DESC,N【例4.18】在companyinfo數(shù)據(jù)庫(kù)的訂單表(p_order)中,查詢產(chǎn)品名,數(shù)量和訂貨日 期,并按的訂貨日期的降序顯示。USE compa nyinfoGOSELECT產(chǎn)品名,數(shù)量,訂貨日期FROM p_orderORDER BY 訂貨日期/DESCGO說(shuō)明:1如果在SELECT中同時(shí)指定了 TOP那么ORDEBY無(wú)效。2空值被視為最 低的值。(五)GROUP BY子句使用GROUP BYF句可以對(duì)數(shù)據(jù)按照某列進(jìn)展分組。GROUP B子句的作用是把 FROM子句中的關(guān)系按分組屬性劃分為假設(shè)干組,同一組內(nèi)所有的記錄在分組屬性上是一樣的

20、。其語(yǔ)法格式如下:GROUP BY分組表達(dá)式【例4.19】統(tǒng)計(jì)訂單表(p_order)中所有產(chǎn)品的已訂購(gòu)總額。USE compa nyinfoGOSELECT sum (數(shù)量)FROM p_order【例4.20】 在訂單表(p_order)中,查詢每類產(chǎn)品按產(chǎn)品ID分類的訂購(gòu)總和。USE compam yinfoSELECT產(chǎn)品ID , 產(chǎn)品名,sum(數(shù)量)as 總數(shù)量FROM p_orderGROUP BY 產(chǎn)品 ID【例4.21】在訂單表(p_order)中,按“產(chǎn)品ID "分類,求出各類產(chǎn)品的價(jià)格總和、 平均價(jià)格及各類產(chǎn)品的數(shù)量。USE compam yinfoGOSELE

21、CT產(chǎn)品ID, sum(單價(jià))'價(jià)格總和',avg( 單價(jià))'平均單價(jià)',count(*)FROM p_orderGROUP BY 產(chǎn)品 IDGO(六)HAVING子句HAVING通常與GROUP BY子句一起使用,用于指定組或聚合的搜索條件。語(yǔ)法格式如下:HAVING搜索條件當(dāng)HAVING與GROUP BY ALL 起使用時(shí),HAVING子句替代 ALL。在HAVING子句中 不能使用 TEXT、IMAGE和NTEXT數(shù)據(jù)類型。【例4.22】查詢平均價(jià)格超過(guò) 10元的產(chǎn)品的種類。USE compa nyinfoGOSELECT 類別ID , avg( 單價(jià))平

22、均價(jià)格FROM ProductGROUP By l 類別 IDHAVING avg(單價(jià))10GO(七)COMPUT子句在SELECT語(yǔ)句中,使用COMPUT子句,表示既顯示查看結(jié)果的明細(xì)行, 又顯示匯總行, 即使用COMPUT子句將產(chǎn)生額外的匯總行,可以計(jì)算分組的匯總值,也可以計(jì)算整個(gè)結(jié)果集 的匯總值。語(yǔ)法格式:COMPUTE 聚合函數(shù)名(列名),N BY expression ,N其中,聚合函數(shù)見表 4-5?!纠?.23】查找雇員表empoyee中各雇員的姓名、出生年月和特長(zhǎng),并產(chǎn)生一個(gè)雇 員總?cè)藬?shù)行。USE compa nyinfoGOSELECT姓名,出生年月,特長(zhǎng)FROM emplo

23、yeeCOMPUTE count雇員 ID模塊2公司管理數(shù)據(jù)庫(kù)系統(tǒng)的多表查詢一、教學(xué)目標(biāo)使用聯(lián)接查詢和嵌套查詢的方法實(shí)現(xiàn)companyinfo數(shù)據(jù)庫(kù)系統(tǒng)的多表查詢。二、工作任務(wù)公司將與產(chǎn)品訂單有關(guān)的數(shù)據(jù)保存在訂單表p_order丨中,此表中共包含了 6個(gè)字段,分別是:訂單ID、產(chǎn)品ID、數(shù)量、雇員ID、客戶ID和訂貨日期;在產(chǎn)品表product丨中 包含了產(chǎn)品ID、產(chǎn)品名、類別ID、單價(jià)、庫(kù)存量5個(gè)字段;在顧客表customer中包含 了客戶ID、公司名稱、聯(lián)系人姓名、聯(lián)系方式、地址和 6個(gè)字段;在類別表category 中包含了類別ID、類別名和說(shuō)明3個(gè),且每個(gè)表中都包含了相應(yīng)的記錄。請(qǐng)利用

24、Transact-SQL 的SELECT語(yǔ)句實(shí)現(xiàn)以下查詢操作。1. 查詢已訂購(gòu)了產(chǎn)品的公司的公司名稱,聯(lián)系人姓名和所訂產(chǎn)品的產(chǎn)品名稱和數(shù)量。2. 查詢所有訂購(gòu)了 鼠標(biāo)'產(chǎn)品的公司的公司名稱和聯(lián)系方式。3. 查詢客戶名為通恒機(jī)械的公司所訂購(gòu)產(chǎn)品的產(chǎn)品名和數(shù)量。4. 查詢鼠標(biāo)'所屬的類別名和相應(yīng)的說(shuō)明。三、相關(guān)實(shí)踐知識(shí)點(diǎn)(一)按照任務(wù)1查詢已訂購(gòu)了產(chǎn)品的公司的公司名稱,聯(lián)系人姓名和所訂產(chǎn)品的產(chǎn)品名稱和數(shù)量。操作步驟與簡(jiǎn)單查詢一樣,首先連接效勞器,然后連接companyinfo數(shù)據(jù)庫(kù),接著在查詢分析器輸入查詢語(yǔ)句,最后執(zhí)行語(yǔ)句。在此模塊中,不再詳細(xì)介紹。此任務(wù)的查詢語(yǔ)句如下:SELE

25、CT公司名稱,聯(lián)系人姓名,產(chǎn)品名,數(shù)量FROM customer INNER JOIN p_orderON customer.客戶 ID=p_order.客戶 ID通過(guò)客戶ID將客戶表customer與訂單表p_order進(jìn)展內(nèi)連接,這樣可以同時(shí)從兩個(gè)表 中獲取信息。表聯(lián)接條件經(jīng)常使用“主鍵=外鍵的形式。二按照任務(wù)2查詢所有訂購(gòu)了 鼠標(biāo)產(chǎn)品的公司的公司名稱和聯(lián)系方式。由于'鼠標(biāo)為產(chǎn)品的名稱,顧客的名稱與聯(lián)系方式分別屬于不同的表,因而需使用多張進(jìn)展查詢。查詢語(yǔ)句如下:SELECT公司名稱,聯(lián)系方式FROM customerWHERE戶 ID=(SELECT 客戶 IDFROM p_ord

26、erWHERE產(chǎn)品 ID=(SELECT 產(chǎn)品 IDFROM productWHERE產(chǎn)品名='鼠標(biāo)')首先在產(chǎn)品表中查詢鼠標(biāo)的產(chǎn)品ID號(hào),然后根據(jù)產(chǎn)品ID號(hào),在訂單表p_order表將訂購(gòu)'鼠標(biāo)的客戶ID查出,最后根據(jù)客戶ID在客戶表customer中將公司的名稱和聯(lián)系方式 查出。三任務(wù)3查詢客戶名為通恒機(jī)械的公司所訂購(gòu)產(chǎn)品的產(chǎn)品ID和數(shù)量。查詢語(yǔ)句如下:SELECT公司名稱,產(chǎn)品ID,數(shù)量FROM customer as A INNER JOIN p_order as BWHERE A公司名稱='通恒機(jī)械'為了便于操作,將客戶表customer丨定義

27、別名A,訂單表p_order丨定義別名B,所 以在ON子句和 WHER子句方便的書寫為 A.客戶ID和B.客戶ID。四任務(wù)4查詢'鼠標(biāo)'所屬的類別名和相應(yīng)的說(shuō)明。查詢語(yǔ)句如下:SELECT類別名,說(shuō)明FROM categoryWHERE類另U ID=(SELECT 類另U IDFROM productWHERE產(chǎn)品名='鼠標(biāo)')四、相關(guān)知識(shí)點(diǎn)一用聯(lián)接進(jìn)展多表查詢通過(guò)聯(lián)接,可以根據(jù)各個(gè)表之間的邏輯關(guān)系從兩個(gè)或多個(gè)表中檢索數(shù)據(jù)。聯(lián)接將定義SQL Server 2000如何使用一個(gè)表中的記錄來(lái)選擇相關(guān)聯(lián)數(shù)據(jù)表中的記錄。聯(lián)接條件通過(guò)以下方法定義兩個(gè)表在查詢中的關(guān)聯(lián)方式:

28、指定每個(gè)表中要用于聯(lián)接的字段。典型的聯(lián)接條件在一個(gè)表中指定外鍵,在另一個(gè)表中指定與其關(guān)聯(lián)的鍵。指定比擬各字段的值時(shí)要使用邏輯運(yùn)算符=、 等。聯(lián)接查詢包括內(nèi)聯(lián)接、外聯(lián)接和穿插聯(lián)接。1.內(nèi)聯(lián)接內(nèi)聯(lián)接也叫自然聯(lián)接,它是聯(lián)接兩個(gè)表的常用方法。內(nèi)聯(lián)接通過(guò)使用比擬運(yùn)算符,根據(jù)需要聯(lián)接的數(shù)據(jù)表中公共的字段值來(lái)匹配兩個(gè)表中的記錄,將兩個(gè)表中滿足聯(lián)接條件的記錄組合起來(lái)作為結(jié)果。內(nèi)聯(lián)接有兩種形式的語(yǔ)法構(gòu)造:1SELECT 選擇列表FROM 表 1 inner JOIN 表 22SELECT 選擇列名FROM 表 1,表 22.外聯(lián)接而在外聯(lián)接中可在自然聯(lián)接中,只有在兩個(gè)表中匹配的記錄才能在結(jié)果集中出現(xiàn)。以只限制一

29、個(gè)表,而對(duì)另外一個(gè)表不加限制即所有的行都出現(xiàn)在結(jié)果集中外聯(lián)接分為左外聯(lián)接、右外聯(lián)接和全外聯(lián)接。左外聯(lián)接是對(duì)聯(lián)接條件中左邊的表不加限制;右外聯(lián)接是對(duì)聯(lián)接條件中右邊的表不加限制;表中的記錄都會(huì)包括在結(jié)果集中。全外聯(lián)接對(duì)兩個(gè)表都不加限制,所有兩個(gè)1左外聯(lián)接的語(yǔ)法為:SELECT 選擇列表FROM表 1 LEFT OUTER JOIN 表 2包括第一個(gè)命名表“左"表,出現(xiàn)在 JOIN子句的最左邊中的所有行。不包括右 表中的不匹配行。2右外聯(lián)接的語(yǔ)法為:SELECT 選擇列表FROM 表 1 RIGHT OUTER JOIN 表 2包括第二個(gè)命名表“右'表,出現(xiàn)在 JOIN子句的最右邊

30、中的所有行。不包括左表 中的不匹配行。3全外聯(lián)接的語(yǔ)法為:SELECT 選擇列表FROM 表 1 FULL OUTER JOIN 表 2包括所有聯(lián)接表中的所有記錄,不管它們是否匹配。二用嵌套查詢的方式實(shí)現(xiàn)多表查詢?cè)趯?shí)際應(yīng)用中,經(jīng)常要用到多層查詢。在SQL Server 2000中,將一條 SELECT語(yǔ)句作為另一條SELECT語(yǔ)句的一局部稱為嵌套查詢。 外層的SELECTS句被稱為外部查詢或父查詢, 內(nèi)層的SELECT語(yǔ)句成為內(nèi)部查詢或子查詢。Transact-SQL語(yǔ)言允許多層嵌套,但是子查詢語(yǔ)句中不允許出現(xiàn) ORDER B子句,ORDER BY子句永遠(yuǎn)只能對(duì)最終查詢結(jié)果排序。1.帶有比擬運(yùn)算符的子查詢?cè)谠摲绞较拢ㄟ^(guò)子查詢返回一個(gè)單一的數(shù)據(jù),該數(shù)據(jù)可以參加相關(guān)表達(dá)式的運(yùn)算。當(dāng)子查詢返回的是單值時(shí),可以使用,=,=,=,!=或等比擬運(yùn)算符。【例4.24】查詢東南實(shí)業(yè)所訂購(gòu)的產(chǎn)品的訂單號(hào)和訂購(gòu)數(shù)量。分析:查詢東南實(shí)業(yè)的訂單號(hào)和訂購(gòu)數(shù)量,可以首先由公司名稱=&#

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論