第05章銷售管理數(shù)據(jù)庫(kù)的數(shù)據(jù)查詢_第1頁(yè)
第05章銷售管理數(shù)據(jù)庫(kù)的數(shù)據(jù)查詢_第2頁(yè)
第05章銷售管理數(shù)據(jù)庫(kù)的數(shù)據(jù)查詢_第3頁(yè)
第05章銷售管理數(shù)據(jù)庫(kù)的數(shù)據(jù)查詢_第4頁(yè)
第05章銷售管理數(shù)據(jù)庫(kù)的數(shù)據(jù)查詢_第5頁(yè)
已閱讀5頁(yè),還剩68頁(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、 SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)數(shù)據(jù)庫(kù)應(yīng)用技術(shù) 清華大學(xué)出版社清華大學(xué)出版社第五章第五章 銷售管理數(shù)據(jù)庫(kù)的數(shù)銷售管理數(shù)據(jù)庫(kù)的數(shù)據(jù)查詢據(jù)查詢.技能目標(biāo)技能目標(biāo) 在銷售管理系統(tǒng)數(shù)據(jù)庫(kù)中能根據(jù)按照指定的要求在銷售管理系統(tǒng)數(shù)據(jù)庫(kù)中能根據(jù)按照指定的要求靈活、快速地查詢相關(guān)信息。靈活、快速地查詢相關(guān)信息。 .數(shù)據(jù)查詢數(shù)據(jù)查詢u在數(shù)據(jù)庫(kù)應(yīng)用中,最常用的操作是查詢,它是在數(shù)據(jù)庫(kù)應(yīng)用中,最常用的操作是查詢,它是其他操作的基礎(chǔ),是數(shù)據(jù)庫(kù)最基本也是最重要其他操作的基礎(chǔ),是數(shù)據(jù)庫(kù)最基本也是最重要的功能。的功能。u查詢:在查詢:在SQL ServerSQL Server中找出滿足特定條件的記中找出滿足特定

2、條件的記錄,以及對(duì)這些記錄作匯總、統(tǒng)計(jì)和排序,這錄,以及對(duì)這些記錄作匯總、統(tǒng)計(jì)和排序,這些操作統(tǒng)稱為些操作統(tǒng)稱為“查詢查詢”,由,由SELECTSELECT語(yǔ)句實(shí)現(xiàn)。語(yǔ)句實(shí)現(xiàn)。.SELECT SELECT 語(yǔ)句的執(zhí)行方式語(yǔ)句的執(zhí)行方式: :u1)1)在查詢?cè)O(shè)計(jì)器執(zhí)行查詢?cè)诓樵冊(cè)O(shè)計(jì)器執(zhí)行查詢u2)2)在新建查詢窗口執(zhí)行查詢?cè)谛陆ú樵兇翱趫?zhí)行查詢.在在查詢?cè)O(shè)計(jì)器查詢?cè)O(shè)計(jì)器中執(zhí)行中執(zhí)行SELECTSELECT語(yǔ)句語(yǔ)句u在在SQL Server 2005SQL Server 2005中,可以使用查詢?cè)O(shè)計(jì)器來(lái)編寫、中,可以使用查詢?cè)O(shè)計(jì)器來(lái)編寫、修改和執(zhí)行一個(gè)修改和執(zhí)行一個(gè)SELECTSELECT語(yǔ)句。語(yǔ)

3、句。u通過(guò)打開表,然后單擊工具欄上的有關(guān)按鈕,可以在通過(guò)打開表,然后單擊工具欄上的有關(guān)按鈕,可以在查詢?cè)O(shè)計(jì)窗口打開四個(gè)窗格,分別是:查詢?cè)O(shè)計(jì)窗口打開四個(gè)窗格,分別是:u1 1)關(guān)系圖窗格:用于向查詢中添加表或視圖對(duì)象以)關(guān)系圖窗格:用于向查詢中添加表或視圖對(duì)象以及選擇輸出字段,并允許將相關(guān)的表連接起來(lái)。及選擇輸出字段,并允許將相關(guān)的表連接起來(lái)。u2 2)條件窗格:用于設(shè)置顯示字段、排序結(jié)果、搜索)條件窗格:用于設(shè)置顯示字段、排序結(jié)果、搜索和分組結(jié)果的選項(xiàng)。和分組結(jié)果的選項(xiàng)。u3 3)SQLSQL窗格:用于輸入和編輯所有的窗格:用于輸入和編輯所有的SELECTSELECT語(yǔ)句。語(yǔ)句。u4 4)結(jié)

4、果窗格:用于顯示)結(jié)果窗格:用于顯示SELECTSELECT語(yǔ)句執(zhí)行的結(jié)果,并語(yǔ)句執(zhí)行的結(jié)果,并允許添加、修改和刪除記錄。允許添加、修改和刪除記錄。.SELECTSELECT語(yǔ)句的語(yǔ)法格式語(yǔ)句的語(yǔ)法格式 SELECT SELECT INTO INTO FROM FROM 數(shù)據(jù)源列表數(shù)據(jù)源列表 WHERE WHERE GROUP BY GROUP BY HAVING HAVING ORDER BY ORDER BY ASC | DESC ASC | DESC .用于指定將要查詢輸出的列名稱或統(tǒng)計(jì)函用于指定將要查詢輸出的列名稱或統(tǒng)計(jì)函數(shù)或有關(guān)計(jì)算表達(dá)式數(shù)或有關(guān)計(jì)算表達(dá)式uINTO子句用于將查詢結(jié)果

5、存儲(chǔ)到一個(gè)新的數(shù)據(jù)表中;用于將查詢結(jié)果存儲(chǔ)到一個(gè)新的數(shù)據(jù)表中;指定查詢要用到的對(duì)象(包括查詢條件和查指定查詢要用到的對(duì)象(包括查詢條件和查詢結(jié)果中涉及的表或視圖)詢結(jié)果中涉及的表或視圖), ,以及各表之間的邏輯關(guān)以及各表之間的邏輯關(guān)系;系;指定查詢應(yīng)該滿足的條件指定查詢應(yīng)該滿足的條件u一般情況下,一般情況下,SELECTSELECT子句和子句和FROMFROM子句是必不可少的,子句是必不可少的,WHEREWHERE子句是可選的。如果沒有使用子句是可選的。如果沒有使用WHEREWHERE子句,那么子句,那么表示無(wú)條件地查詢所有的數(shù)據(jù)。表示無(wú)條件地查詢所有的數(shù)據(jù)。.u如果如果SELECTSELEC

6、T語(yǔ)句中有語(yǔ)句中有,則將查詢結(jié),則將查詢結(jié)果按照果按照 的值進(jìn)行分組的值進(jìn)行分組, ,將該屬性列將該屬性列值相等的記錄作為一個(gè)組值相等的記錄作為一個(gè)組, ,每一組產(chǎn)生結(jié)果集每一組產(chǎn)生結(jié)果集中的一條記錄,通常會(huì)在每組中使用聚合函中的一條記錄,通常會(huì)在每組中使用聚合函數(shù)。數(shù)。u如果如果GROUPGROUP子句帶有子句帶有, HAVINGHAVING子子句用于指定分組統(tǒng)計(jì)條件,則只有滿足指定句用于指定分組統(tǒng)計(jì)條件,則只有滿足指定條件的組才會(huì)輸出。要與條件的組才會(huì)輸出。要與GROUP BYGROUP BY子句一起子句一起使用。使用。uORDER BYORDER BY子句用于對(duì)查詢到的記錄進(jìn)行排序子句用

7、于對(duì)查詢到的記錄進(jìn)行排序處理。處理。.5.2 SELECT5.2 SELECT子句查詢子句查詢u在很多情況下,用戶可能只對(duì)表中在很多情況下,用戶可能只對(duì)表中的值的值感興趣,這時(shí)可以在感興趣,這時(shí)可以在中中指定要查詢的屬性列。指定要查詢的屬性列。u SELECT子句的格式為: SELECT ALL | DISTINCT SELECT ALL | DISTINCT TOP n PERCENT WITH TIES TOP n PERCENT WITH TIES select_list FROM FROM , , 圖5.2 查詢指定數(shù)據(jù)列示例.簡(jiǎn)單查詢簡(jiǎn)單查詢-SELECT -SELECT 子句子句

8、1 1、查詢所有的列(使用、查詢所有的列(使用* *)【例】從商品表中查詢所有商品的信息【例】從商品表中查詢所有商品的信息 。 select select * * from from 商品商品.2 2、查詢指定的列、查詢指定的列 u【例】從客戶表中檢索所有客戶的公司名稱、聯(lián)系人【例】從客戶表中檢索所有客戶的公司名稱、聯(lián)系人姓名和地址。姓名和地址。 select select 公司名稱公司名稱, ,聯(lián)系人姓名聯(lián)系人姓名, ,地址地址 from from 客戶客戶.3.3.簡(jiǎn)單查詢簡(jiǎn)單查詢- ORDER BY- ORDER BY子句子句 語(yǔ)法格式:語(yǔ)法格式: ORDER BY ORDER BY 排

9、序項(xiàng)排序項(xiàng) ASC | DESC ASC | DESC , ,排序項(xiàng)排序項(xiàng) ASC | DESC,n ASC | DESC,n Asc指定字段的值按照升序排列,指定字段的值按照升序排列,DESC指定字段按照降序排指定字段按照降序排列,默認(rèn)排序?yàn)樯?。列,默認(rèn)排序?yàn)樯颉ULL值將被處理為最小值。如果排序值將被處理為最小值。如果排序字段值有中文又有英文,英文看作比中文小,各類別再分別字段值有中文又有英文,英文看作比中文小,各類別再分別按英文字母順序排列。按英文字母順序排列。 當(dāng)基于多個(gè)屬性對(duì)數(shù)據(jù)進(jìn)行排序時(shí),因?yàn)橄到y(tǒng)是按照排序列當(dāng)基于多個(gè)屬性對(duì)數(shù)據(jù)進(jìn)行排序時(shí),因?yàn)橄到y(tǒng)是按照排序列的先后進(jìn)行排序的

10、。先按第一個(gè)屬性進(jìn)行排序,如果第一個(gè)的先后進(jìn)行排序的。先按第一個(gè)屬性進(jìn)行排序,如果第一個(gè)屬性相同,則依據(jù)第二個(gè)屬性排序,如果第二個(gè)屬性相同,屬性相同,則依據(jù)第二個(gè)屬性排序,如果第二個(gè)屬性相同,則依據(jù)第三個(gè)屬性排序,依此類推。另外,在執(zhí)行多列排序則依據(jù)第三個(gè)屬性排序,依此類推。另外,在執(zhí)行多列排序時(shí),每一個(gè)列都可以指定是升序還是降序時(shí),每一個(gè)列都可以指定是升序還是降序.【例】按工資降序顯示員工的姓名和工資,工【例】按工資降序顯示員工的姓名和工資,工資相同時(shí)按姓名升序排序資相同時(shí)按姓名升序排序 Select 姓名姓名,工資工資From 員工員工Order by 工資工資 desc,姓名姓名.4 4

11、、使用、使用TOP TOP 關(guān)鍵字關(guān)鍵字u如果在使用如果在使用TOPTOP關(guān)鍵字的關(guān)鍵字的SELECTSELECT語(yǔ)句中沒有使用排序子語(yǔ)句中沒有使用排序子句,則只是顯示表中的前句,則只是顯示表中的前n n條記錄。當(dāng)在查詢語(yǔ)句中使條記錄。當(dāng)在查詢語(yǔ)句中使用了用了ORDER BYORDER BY子句時(shí),子句時(shí),TOPTOP關(guān)鍵字表示排序后顯示從大關(guān)鍵字表示排序后顯示從大到小或從小到大的前到小或從小到大的前n n條記錄。條記錄。u如果有多條記錄排序字段值與輸出的最后一條記錄相同,如果有多條記錄排序字段值與輸出的最后一條記錄相同,則只顯示位置在前面的一條記錄;如果需要將排序字段則只顯示位置在前面的一條

12、記錄;如果需要將排序字段值相等的那些記錄一并顯示出來(lái),則在值相等的那些記錄一并顯示出來(lái),則在SELECTSELECT語(yǔ)句中語(yǔ)句中TOPTOP后面添加后面添加WITH TIESWITH TIES即可。即可。uWITH TIESWITH TIES必須與必須與TOPTOP一起使用,而且只能與一起使用,而且只能與ORDER BYORDER BY語(yǔ)語(yǔ)句一起使用。句一起使用。.4 4、使用、使用TOP TOP 關(guān)鍵字關(guān)鍵字 【例】檢索客戶表中前【例】檢索客戶表中前5 5位客戶的公司名稱、聯(lián)系人姓名和地址。位客戶的公司名稱、聯(lián)系人姓名和地址。 select top 5 select top 5 公司名稱公司

13、名稱, ,聯(lián)系人姓名聯(lián)系人姓名, ,地址地址 from from 客戶客戶 【例】檢索員工工資最高的【例】檢索員工工資最高的3 3名員工信息。名員工信息。 select top 3 select top 3 * * from from 員工員工 order by order by 工資工資descdesc 如果想將跟輸出的最后一條記錄值相同的記錄也一并輸出,就加如果想將跟輸出的最后一條記錄值相同的記錄也一并輸出,就加上上with tieswith ties語(yǔ)句。語(yǔ)句。 select top 3 with ties select top 3 with ties * * from from 員工員

14、工 order by order by 工資工資descdesc.5 5、使用、使用DISTINCT DISTINCT 關(guān)鍵字關(guān)鍵字【例】從員工表中查詢所有員工的部門信息,并消去重復(fù)記錄?!纠繌膯T工表中查詢所有員工的部門信息,并消去重復(fù)記錄。 select distinct 部門編號(hào)部門編號(hào)From 員工員工【例】從銷售訂單表查詢所有員工銷售的商品信息?!纠繌匿N售訂單表查詢所有員工銷售的商品信息。Select distinct 員工編號(hào)員工編號(hào),商品編號(hào)商品編號(hào)From 員工員工.簡(jiǎn)單查詢簡(jiǎn)單查詢-SELECT -SELECT 子句(續(xù))子句(續(xù))6 6、更改列標(biāo)題、更改列標(biāo)題方法:方法:

15、u采用采用“列標(biāo)題列標(biāo)題=列名列名”的格式的格式u采用采用“列名列名 列標(biāo)題列標(biāo)題”的格式的格式u采用采用“列名列名 as 列標(biāo)題列標(biāo)題”的格式的格式【例】查詢每個(gè)員工的姓名和性別,并在每人的姓名標(biāo)題上顯示【例】查詢每個(gè)員工的姓名和性別,并在每人的姓名標(biāo)題上顯示“員工姓名員工姓名”。 select select 姓名姓名 as as 員工姓名員工姓名, ,性別性別 from from 員工員工 u【練習(xí)】使用其他兩種方法:【練習(xí)】使用其他兩種方法: select select 員工姓名員工姓名= =姓名姓名, ,性別性別 select select 姓名姓名 員工姓名員工姓名, ,性別性別 f

16、rom from 員工員工 from from 員工員工 .簡(jiǎn)單查詢簡(jiǎn)單查詢-SELECT -SELECT 子句(續(xù))子句(續(xù))7 7、使用計(jì)算列、使用計(jì)算列【例】查詢所有員工的工資在提高【例】查詢所有員工的工資在提高10%后信息,將提高后的工資列后信息,將提高后的工資列標(biāo)題為標(biāo)題為“提高后工資提高后工資”。 select 姓名姓名,工資工資,工資工資*1.1 as 提高后工資提高后工資 from 員工員工8 8、使用系統(tǒng)函數(shù)、使用系統(tǒng)函數(shù)【例】統(tǒng)計(jì)公司員工的入職年數(shù)?!纠拷y(tǒng)計(jì)公司員工的入職年數(shù)。Select 姓名姓名, year(getdate() -year(聘任日期聘任日期) as 入

17、職年數(shù)入職年數(shù) from 員工員工.9. INTO 9. INTO 子句子句 INTO INTO 子句用于將查詢的結(jié)果插入新表中,其語(yǔ)法子句用于將查詢的結(jié)果插入新表中,其語(yǔ)法格式如下。格式如下。 INTO INTO 新表名新表名【例】使用【例】使用INTO子句創(chuàng)建一個(gè)包含員工姓名和工資,并命名為子句創(chuàng)建一個(gè)包含員工姓名和工資,并命名為new_employee的新表。的新表。Select 姓名姓名,工資工資Into new_employeeFrom 員工員工.條件查詢條件查詢- WHERE- WHERE子句子句 u實(shí)際工作中往往不需要得到表中所有記錄,只實(shí)際工作中往往不需要得到表中所有記錄,只需

18、要得到滿足給定條件的部分記錄,這就需要需要得到滿足給定條件的部分記錄,這就需要對(duì)表中的記錄進(jìn)行過(guò)濾。對(duì)表中的記錄進(jìn)行過(guò)濾。u通過(guò)在通過(guò)在SELECTSELECT語(yǔ)句中使用語(yǔ)句中使用WHEREWHERE子句,可以設(shè)子句,可以設(shè)置對(duì)記錄的檢索條件。置對(duì)記錄的檢索條件。其語(yǔ)法格式如下。其語(yǔ)法格式如下。SELECT FROM WHERE .u在在WHERE WHERE 子句中經(jīng)常使用比較運(yùn)算符和邏輯運(yùn)算符,子句中經(jīng)常使用比較運(yùn)算符和邏輯運(yùn)算符,比較運(yùn)算符如下表:比較運(yùn)算符如下表:u比較運(yùn)算符用于測(cè)試兩個(gè)表達(dá)式的值之間的關(guān)系,其比較運(yùn)算符用于測(cè)試兩個(gè)表達(dá)式的值之間的關(guān)系,其運(yùn)算結(jié)果為邏輯值,通常為運(yùn)算結(jié)

19、果為邏輯值,通常為TRUETRUE或或FALSEFALSE。運(yùn)算符運(yùn)算符含義含義運(yùn)算符運(yùn)算符含義含義運(yùn)算符運(yùn)算符含義含義 大于大于=小于或等于小于或等于不等于不等于=大于或等于大于或等于= =等于等于!不大于不大于 小于小于!=!=不等于不等于!不小于不小于.邏輯運(yùn)算符運(yùn)算符含義 AND AND若兩個(gè)操作數(shù)都為若兩個(gè)操作數(shù)都為TRUE,TRUE,運(yùn)算結(jié)果為運(yùn)算結(jié)果為TRUETRUE ALL ALL若每個(gè)操作數(shù)都為若每個(gè)操作數(shù)都為TRUE,TRUE,運(yùn)算結(jié)果為運(yùn)算結(jié)果為TRUETRUE ANY ANY在一系列操作數(shù)中只要有一個(gè)為在一系列操作數(shù)中只要有一個(gè)為TRUE, TRUE, 運(yùn)算結(jié)果為運(yùn)算結(jié)

20、果為TRUETRUE BETWEEN BETWEEN若操作數(shù)在指定的范圍內(nèi)若操作數(shù)在指定的范圍內(nèi), ,運(yùn)算結(jié)果為運(yùn)算結(jié)果為TRUETRUE EXISTS EXISTS若子查詢包含一些行,運(yùn)算結(jié)果為若子查詢包含一些行,運(yùn)算結(jié)果為TRUETRUE IN IN若操作數(shù)與一種模式相匹配若操作數(shù)與一種模式相匹配, ,運(yùn)算結(jié)果為運(yùn)算結(jié)果為TRUETRUE LIKE LIKE若操作數(shù)與一種模式相匹配若操作數(shù)與一種模式相匹配, ,運(yùn)算結(jié)果為運(yùn)算結(jié)果為TRUETRUE NOT NOT若操作數(shù)為若操作數(shù)為TRUE,TRUE,運(yùn)算結(jié)果為運(yùn)算結(jié)果為FALSE,FALSE,否則為否則為TRUETRUE OR OR若兩個(gè)

21、操作數(shù)中有一個(gè)為若兩個(gè)操作數(shù)中有一個(gè)為TRUE,TRUE,運(yùn)算結(jié)果為運(yùn)算結(jié)果為TRUETRUE SOME SOME在一系列操作數(shù)中只要有一個(gè)為在一系列操作數(shù)中只要有一個(gè)為TRUE, TRUE, 運(yùn)算結(jié)果為運(yùn)算結(jié)果為TRUETRUE.條件查詢條件查詢- WHERE- WHERE子句(續(xù))子句(續(xù))1 1、使用算術(shù)表達(dá)式、使用算術(shù)表達(dá)式【例】查詢員工【例】查詢員工“蔡慧敏蔡慧敏”的工資。的工資?!纠俊纠?在銷售管理數(shù)據(jù)庫(kù)的員工表中,查詢工資大于在銷售管理數(shù)據(jù)庫(kù)的員工表中,查詢工資大于3000元的員元的員工信息工信息 2 2、使用邏輯表達(dá)式、使用邏輯表達(dá)式【例】在銷售管理數(shù)據(jù)庫(kù)的員工表中,查詢工

22、資在【例】在銷售管理數(shù)據(jù)庫(kù)的員工表中,查詢工資在3400元以下的女元以下的女性員工姓名和工資信息。性員工姓名和工資信息。 3 3、使用搜索范圍、使用搜索范圍使用關(guān)鍵字使用關(guān)鍵字Betweenand,即查詢介于兩個(gè)值之間的記錄信息。,即查詢介于兩個(gè)值之間的記錄信息。語(yǔ)法格式如下。語(yǔ)法格式如下。 NOT BETWEEN AND .上例查詢語(yǔ)句上例查詢語(yǔ)句u1. select 1. select 工資工資 select select * *from from 員工員工 from from 員工員工 where where 姓名姓名=蔡慧敏蔡慧敏 where where 工資工資30003000u2.

23、 select 2. select 姓名姓名, ,工資工資 from from 員工員工 where where 工資工資3400 and 3400 and 性別性別=女女u3. select 3. select * *from from 員工員工where where 工資工資 between 5000 and 7000between 5000 and 7000.條件查詢條件查詢- WHERE- WHERE子句(續(xù))子句(續(xù))4 4、使用、使用ININ關(guān)鍵字關(guān)鍵字 IN關(guān)鍵字給出表達(dá)式的取值范圍。語(yǔ)法:關(guān)鍵字給出表達(dá)式的取值范圍。語(yǔ)法: 表達(dá)式表達(dá)式 NOT IN (值值1 , 值值2 ,值

24、值n)【例】在銷售管理數(shù)據(jù)庫(kù)的銷售訂單表中,查【例】在銷售管理數(shù)據(jù)庫(kù)的銷售訂單表中,查詢員工編號(hào)為詢員工編號(hào)為1、5和和7的員工接受訂單信息。的員工接受訂單信息。 .上例查詢語(yǔ)句上例查詢語(yǔ)句u.select .select * *from from 銷售訂單銷售訂單where where 員工編號(hào)員工編號(hào)in(1,5,7)in(1,5,7).5 5、使用模糊匹配、使用模糊匹配LIKE子句格式如下。子句格式如下。 NOT LIKE u有效有效SQL ServerSQL Server通配符:通配符:u% %:可匹配任意類型和長(zhǎng)度的字符串。:可匹配任意類型和長(zhǎng)度的字符串。u_ _(下劃線):可匹配任

25、何單個(gè)字符(下劃線):可匹配任何單個(gè)字符( (一個(gè)漢字一個(gè)漢字或一個(gè)全角字符也算一個(gè)字符或一個(gè)全角字符也算一個(gè)字符) )。u :指定范圍或集合中的任何單個(gè)字符。:指定范圍或集合中的任何單個(gè)字符。u:不屬于指定范圍或集合的任何單個(gè)字符:不屬于指定范圍或集合的任何單個(gè)字符.5 5、使用模糊匹配、使用模糊匹配【例】找出所有姓【例】找出所有姓“章章”的員工信息。的員工信息。【例】找出所有姓【例】找出所有姓“章章”和姓和姓“李李”的員工的員工信息。信息?!纠空页鏊行铡纠空页鏊行铡袄罾睢钡拿麨橐粋€(gè)漢字的的名為一個(gè)漢字的員工信息。員工信息。【例】找出所有姓名里包含【例】找出所有姓名里包含“李李”的員

26、工信的員工信息。息?!纠空页鏊胁恍铡纠空页鏊胁恍铡袄罾睢钡膯T工信息。的員工信息。.上例查詢語(yǔ)句上例查詢語(yǔ)句例例1:select 1:select * * from from 員工員工 where where 姓名姓名 like like 章章%例例2:select 2:select * * from from 員工員工 where where 姓名姓名 like like 章李章李%例例3:select 3:select * * from from 員工員工 where where 姓名姓名 like like 李李_ _.上例查詢語(yǔ)句上例查詢語(yǔ)句例例4:select 4:select

27、 * * from from 員工員工 where where 姓名姓名 like %like %李李% %例例5:select 5:select * * from from 員工員工 where where 姓名姓名 like like 李李%或或select select * * from from 員工員工 where where 姓名姓名 not not like like 李李% %.模糊匹配模糊匹配u例例6 6:查詢員工編號(hào)第一位字符為:查詢員工編號(hào)第一位字符為2 2到到4 4的員工信息的員工信息 select select * * from from 員工員工 where whe

28、re 員工編號(hào)員工編號(hào)like 2-4%like 2-4%.u當(dāng)要查詢的字段值正好包含當(dāng)要查詢的字段值正好包含_ _、% %、 和和時(shí),可以使用時(shí),可以使用escapeescape子句來(lái)告訴系統(tǒng)子句來(lái)告訴系統(tǒng)_ _、 % %、 和和只是一個(gè)普通字符,而不是一個(gè)通只是一個(gè)普通字符,而不是一個(gè)通配符。配符。u具體做法是在具體做法是在“模式模式”串中要作為普通字符串中要作為普通字符出現(xiàn)的通配符之前加上一個(gè)字符(用!、出現(xiàn)的通配符之前加上一個(gè)字符(用!、 或或其它任何不包含在要匹配字符串中的字符),其它任何不包含在要匹配字符串中的字符),然后在然后在ESCAPEESCAPE的后面指明。的后面指明。.例

29、例7 7:查詢:查詢DB_DesignDB_Design課程的課程號(hào)和學(xué)分。課程的課程號(hào)和學(xué)分。 ESCAPE ESCAPE 表示表示“”為轉(zhuǎn)義字符,這樣為轉(zhuǎn)義字符,這樣匹配字符串中緊跟在匹配字符串中緊跟在“”后面的字符后面的字符“_”_”就不再具有通配符的含義,而是轉(zhuǎn)義為普通就不再具有通配符的含義,而是轉(zhuǎn)義為普通的的“_”_”字符處理。字符處理。.條件查詢條件查詢- WHERE- WHERE子句(續(xù))子句(續(xù))6 6、空或非空性、空或非空性 空和非空的判斷準(zhǔn)則是空和非空的判斷準(zhǔn)則是IS NULLIS NULL和和IS NOT NULLIS NOT NULL?!纠吭阡N售管理數(shù)據(jù)庫(kù)中,查找目前

30、有哪些主管【例】在銷售管理數(shù)據(jù)庫(kù)中,查找目前有哪些主管位置是為不空。位置是為不空。 select *from 部門部門where 部門主管部門主管is not null.統(tǒng)計(jì)查詢統(tǒng)計(jì)查詢u統(tǒng)計(jì)函數(shù)也稱為字段函數(shù)或集合函數(shù)或聚合函數(shù)。統(tǒng)計(jì)函數(shù)也稱為字段函數(shù)或集合函數(shù)或聚合函數(shù)。u在在Microsoft SQL SERVER 2005Microsoft SQL SERVER 2005中主要包括中主要包括5 5類統(tǒng)計(jì)函類統(tǒng)計(jì)函數(shù):數(shù):u計(jì)算總和計(jì)算總和uSUM ( DISTINCT | ALL expression)SUM ( DISTINCT | ALL expression)u計(jì)算平均值計(jì)算平均

31、值uAVG ( DISTINCT | ALL expression)AVG ( DISTINCT | ALL expression)u求最大值求最大值uMAX ( DISTINCT | ALL expression )MAX ( DISTINCT | ALL expression ).統(tǒng)計(jì)查詢統(tǒng)計(jì)查詢u求最小值求最小值uMIN ( DISTINCT | ALL expression)MIN ( DISTINCT | ALL expression)u計(jì)數(shù)計(jì)數(shù)uCOUNT ( DISTINCT | ALL COUNT ( DISTINCT | ALL * * ) ) uCOUNT ( DISTIN

32、CT | ALL expression)COUNT ( DISTINCT | ALL expression)u其中,其中,DISTINCTDISTINCT短語(yǔ)指明在計(jì)算時(shí)取消指定列中的短語(yǔ)指明在計(jì)算時(shí)取消指定列中的重復(fù)值,只處理惟一值;而重復(fù)值,只處理惟一值;而ALLALL短語(yǔ)則指明不取消短語(yǔ)則指明不取消重復(fù)值。缺省情況下為重復(fù)值。缺省情況下為ALLALL。另外統(tǒng)計(jì)運(yùn)算都是忽。另外統(tǒng)計(jì)運(yùn)算都是忽略空值字段,不統(tǒng)計(jì)略空值字段,不統(tǒng)計(jì)nullnull在內(nèi)的。在內(nèi)的。.統(tǒng)計(jì)查詢例題統(tǒng)計(jì)查詢例題u例例1 1:統(tǒng)計(jì)員工的人數(shù):統(tǒng)計(jì)員工的人數(shù)u例例2 2:統(tǒng)計(jì)所有員工的平均工資、最高工資、最低工資:統(tǒng)計(jì)所

33、有員工的平均工資、最高工資、最低工資和工資總和和工資總和u例例3 3:統(tǒng)計(jì)部門編號(hào)為:統(tǒng)計(jì)部門編號(hào)為1 1的員工人數(shù)的員工人數(shù)u例例4 4:在員工表里統(tǒng)計(jì)員工的部門數(shù):在員工表里統(tǒng)計(jì)員工的部門數(shù).上例查詢語(yǔ)句上例查詢語(yǔ)句u例例1 1:select count(select count(* *) as ) as 員工人數(shù)員工人數(shù) from from 員工員工u例例2 2:select avg(select avg(工資工資),max(),max(工資工資),min(),min(工資工資),sum(),sum(工資工資) ) from from 員工員工u例例3 3:select count(se

34、lect count(* *) as ) as 員工人數(shù)員工人數(shù) from from 員工員工 where where 部門編號(hào)部門編號(hào)=1=1u例例4 4:select count(distinct select count(distinct 部門編號(hào)部門編號(hào)) as ) as 部門數(shù)部門數(shù) from from 員工員工.分組統(tǒng)計(jì)查詢分組統(tǒng)計(jì)查詢u如果需要按某一字段數(shù)據(jù)的值進(jìn)行分類,在如果需要按某一字段數(shù)據(jù)的值進(jìn)行分類,在分類的基礎(chǔ)上再進(jìn)行統(tǒng)計(jì)計(jì)算,就需要使用分類的基礎(chǔ)上再進(jìn)行統(tǒng)計(jì)計(jì)算,就需要使用GROUP BYGROUP BY子句了。子句了。u數(shù)據(jù)分組是指通過(guò)數(shù)據(jù)分組是指通過(guò)GROUP B

35、YGROUP BY子句按一定的條子句按一定的條件對(duì)查詢到的結(jié)果進(jìn)行分組,再對(duì)每一組數(shù)件對(duì)查詢到的結(jié)果進(jìn)行分組,再對(duì)每一組數(shù)據(jù)統(tǒng)計(jì)計(jì)算。據(jù)統(tǒng)計(jì)計(jì)算。u當(dāng)完成數(shù)據(jù)結(jié)果的查詢和統(tǒng)計(jì)后,可以使用當(dāng)完成數(shù)據(jù)結(jié)果的查詢和統(tǒng)計(jì)后,可以使用HAVINGHAVING子句來(lái)對(duì)查詢和統(tǒng)計(jì)的結(jié)果進(jìn)行進(jìn)一子句來(lái)對(duì)查詢和統(tǒng)計(jì)的結(jié)果進(jìn)行進(jìn)一步的篩選。步的篩選。.GROUP BYGROUP BY子句子句 【例】查詢男女員工的平均工資?!纠坎樵兡信畣T工的平均工資。 select select 性別性別,avg(,avg(工資工資) as ) as 平均工資平均工資 from from 員工員工 group by group

36、by 性別性別【例】在銷售訂單表中,統(tǒng)計(jì)目前各種商品的訂購(gòu)【例】在銷售訂單表中,統(tǒng)計(jì)目前各種商品的訂購(gòu)總數(shù)。總數(shù)。 select 商品編號(hào)商品編號(hào),sum(訂購(gòu)數(shù)量訂購(gòu)數(shù)量) as 訂購(gòu)總數(shù)訂購(gòu)總數(shù) from 銷售訂單銷售訂單 group by 商品編號(hào)商品編號(hào). HAVING HAVING子句子句 HAVING HAVING子句指定組或聚合函數(shù)統(tǒng)計(jì)結(jié)果的篩選條子句指定組或聚合函數(shù)統(tǒng)計(jì)結(jié)果的篩選條件。件。HAVING HAVING 只能與只能與GROUP BYGROUP BY語(yǔ)句一起使用。如果不語(yǔ)句一起使用。如果不使用使用GROUP BY GROUP BY 子句,則子句,則 HAVINGHAV

37、ING的行為與的行為與WHERE WHERE 子句子句一樣,它的語(yǔ)法格式如下。一樣,它的語(yǔ)法格式如下。 HAVING 篩選條件篩選條件 【例】在銷售訂單表中,查詢目前訂單總數(shù)超過(guò)【例】在銷售訂單表中,查詢目前訂單總數(shù)超過(guò)1000的商品訂單的商品訂單信息。信息。 select 商品編號(hào)商品編號(hào),sum(訂購(gòu)數(shù)量訂購(gòu)數(shù)量) as 訂購(gòu)總數(shù)訂購(gòu)總數(shù) from 銷售訂單銷售訂單 group by 商品編號(hào)商品編號(hào) having sum(訂購(gòu)數(shù)量訂購(gòu)數(shù)量)1000. HAVING HAVING子句子句 u例:查詢銷售過(guò)三次以上商品的員工編號(hào)和銷售次數(shù)例:查詢銷售過(guò)三次以上商品的員工編號(hào)和銷售次數(shù)sele

38、ct select 員工編號(hào)員工編號(hào),count(,count(* *) as ) as 銷售次數(shù)銷售次數(shù)from from 銷售訂單銷售訂單 group by group by 員工編號(hào)員工編號(hào) having count(having count(* *)3)3例:在銷售訂單表中,查詢訂購(gòu)兩種以上商品的客戶編號(hào)例:在銷售訂單表中,查詢訂購(gòu)兩種以上商品的客戶編號(hào)select select 客戶編號(hào)客戶編號(hào),count(distinct ,count(distinct 商品編號(hào)商品編號(hào)) as ) as 訂購(gòu)商品種類訂購(gòu)商品種類 from from 銷售訂單銷售訂單 group by group

39、 by 客戶編號(hào)客戶編號(hào) having count(distinct having count(distinct 商品編號(hào)商品編號(hào))2)2.COMPUTE COMPUTE 子句子句 COMPUTE COMPUTE子句可以用于子句可以用于SELECT SELECT 語(yǔ)句既查看明細(xì)語(yǔ)句既查看明細(xì)行,又查看匯總行??梢杂?jì)算分組的匯總值,也可以行,又查看匯總行??梢杂?jì)算分組的匯總值,也可以計(jì)算整個(gè)結(jié)果集的匯總值。語(yǔ)法格式如下。計(jì)算整個(gè)結(jié)果集的匯總值。語(yǔ)法格式如下。 COMPUTE 聚合函數(shù)名聚合函數(shù)名 (列名列名) , N BY 表達(dá)表達(dá)式式, N 在在SELECT語(yǔ)句中使用語(yǔ)句中使用COMPUTE

40、BY子句時(shí),必須與子句時(shí),必須與ORDER BY子句聯(lián)合使用。子句聯(lián)合使用。COMPUTE BY子句中的統(tǒng)計(jì)字段名列表必須與子句中的統(tǒng)計(jì)字段名列表必須與ORDER BY子句子句中的相同或?yàn)槠渥蛹叶邚淖蟮接业捻樞虮仨氁恢?。中的相同或?yàn)槠渥蛹?,而且二者從左到右的順序必須一致。使用使用COMPUTE BY子句會(huì)將整個(gè)結(jié)果集分成組,并針對(duì)每個(gè)組子句會(huì)將整個(gè)結(jié)果集分成組,并針對(duì)每個(gè)組產(chǎn)生兩個(gè)結(jié)果集產(chǎn)生兩個(gè)結(jié)果集.COMPUTE COMPUTE 子句子句【例【例 】查詢員工表中部門編號(hào)為】查詢員工表中部門編號(hào)為1的各員工工資信息,并計(jì)算平均的各員工工資信息,并計(jì)算平均工資。工資。 select 姓

41、名姓名, 工資工資 from 員工員工 where 部門編號(hào)部門編號(hào)=1 compute avg(工資工資)【例】【例】 對(duì)員工表中部門編號(hào)為對(duì)員工表中部門編號(hào)為1或或2的員工工資,按照其部門編的員工工資,按照其部門編號(hào)生成平均工資和明細(xì)行號(hào)生成平均工資和明細(xì)行 select 姓名姓名, 工資工資,部門編號(hào)部門編號(hào) from 員工員工 where 部門編號(hào)部門編號(hào)in(1,2) order by 部門編號(hào)部門編號(hào) compute avg(工資工資) by 部門編號(hào)部門編號(hào).【例】【例】 在員工表中查詢部門編號(hào)為在員工表中查詢部門編號(hào)為1或或2的員工工的員工工資,并統(tǒng)計(jì)各部門男女員工的平均工資資

42、,并統(tǒng)計(jì)各部門男女員工的平均工資 select 姓名姓名,性別性別,工資工資,部門編號(hào)部門編號(hào) from 員工員工 where 部門編號(hào)部門編號(hào)in(1,2) order by 部門編號(hào)部門編號(hào),性別性別,員工編號(hào)員工編號(hào) compute avg(工資工資) by 部門編號(hào)部門編號(hào),性別性別.5.3 5.3 連接查詢連接查詢 . . 連接的類型分為內(nèi)連接、外連接和交叉連接。連接的連接的類型分為內(nèi)連接、外連接和交叉連接。連接的格式有兩種如下。格式有兩種如下。格式一:適用于所有連接格式一:適用于所有連接SELECT FROM ON ( )格式二:只適用于內(nèi)連接格式二:只適用于內(nèi)連接 SELECT

43、FROM , WHERE . . .5.3.2 5.3.2 交叉連接查詢交叉連接查詢 u交叉連接也稱為笛卡兒乘積,它返回兩個(gè)表中所有數(shù)交叉連接也稱為笛卡兒乘積,它返回兩個(gè)表中所有數(shù)據(jù)行的全部組合,即交叉連接結(jié)果集中的數(shù)據(jù)行數(shù)等據(jù)行的全部組合,即交叉連接結(jié)果集中的數(shù)據(jù)行數(shù)等于第一個(gè)表中的數(shù)據(jù)行數(shù)乘以第二個(gè)表中的數(shù)據(jù)行數(shù)。于第一個(gè)表中的數(shù)據(jù)行數(shù)乘以第二個(gè)表中的數(shù)據(jù)行數(shù)。u交叉連接使用關(guān)鍵字交叉連接使用關(guān)鍵字CROSS JOINCROSS JOIN來(lái)創(chuàng)建,并且不帶連來(lái)創(chuàng)建,并且不帶連接條件。接條件。 u在實(shí)際的應(yīng)用中,交叉連接的使用是比較少的,但是在實(shí)際的應(yīng)用中,交叉連接的使用是比較少的,但是它是理

44、解外連接和內(nèi)連接的基礎(chǔ)。它是理解外連接和內(nèi)連接的基礎(chǔ)。.u例:查詢員工表與部門表的所有組合例:查詢員工表與部門表的所有組合 select select 員工員工. .* *, ,部門部門. .* * from from 員工員工 cross join cross join 部門部門.內(nèi)連接內(nèi)連接 內(nèi)連接把兩個(gè)表中的數(shù)據(jù),通過(guò)連接條件,連接內(nèi)連接把兩個(gè)表中的數(shù)據(jù),通過(guò)連接條件,連接生成第生成第3 3個(gè)表,僅包含那些滿足連接條件的數(shù)據(jù)行。個(gè)表,僅包含那些滿足連接條件的數(shù)據(jù)行。內(nèi)連接分為等值連接、非等值連接和自然連接。內(nèi)連接分為等值連接、非等值連接和自然連接。【例【例1】查詢已訂購(gòu)了商品客戶的公司名

45、稱,聯(lián)系人】查詢已訂購(gòu)了商品客戶的公司名稱,聯(lián)系人姓名和所訂商品編號(hào)和訂購(gòu)數(shù)量。姓名和所訂商品編號(hào)和訂購(gòu)數(shù)量。【例【例2】查詢】查詢“國(guó)皓科技有限公司國(guó)皓科技有限公司”的訂單信息的訂單信息 .上例查詢語(yǔ)句上例查詢語(yǔ)句u【例【例1 1】查詢已訂購(gòu)了商品客戶的公司名稱,】查詢已訂購(gòu)了商品客戶的公司名稱,聯(lián)系人姓名和所訂商品編號(hào)和訂購(gòu)數(shù)量。聯(lián)系人姓名和所訂商品編號(hào)和訂購(gòu)數(shù)量。 select select 公司名稱公司名稱, ,聯(lián)系人姓名聯(lián)系人姓名, ,商品編號(hào)商品編號(hào), ,訂購(gòu)數(shù)量訂購(gòu)數(shù)量 from from 客戶客戶 inner join inner join 銷售訂單銷售訂單 on on 客戶客

46、戶. .客戶編號(hào)客戶編號(hào)= =銷售訂單銷售訂單. .客戶編號(hào)客戶編號(hào)或或 select select 公司名稱公司名稱, ,聯(lián)系人姓名聯(lián)系人姓名, ,商品編號(hào)商品編號(hào), ,訂購(gòu)數(shù)量訂購(gòu)數(shù)量 from from 客戶客戶, ,銷售訂單銷售訂單 where where 客戶客戶. .客戶編號(hào)客戶編號(hào)= =銷售訂單銷售訂單. .客戶編號(hào)客戶編號(hào).上例查詢語(yǔ)句上例查詢語(yǔ)句【例【例2】查詢】查詢“國(guó)皓科技有限公司國(guó)皓科技有限公司”的訂單信息的訂單信息select 客戶客戶.公司名稱公司名稱,銷售訂單銷售訂單.*from 客戶客戶 join 銷售訂單銷售訂單on 客戶客戶.客戶編號(hào)客戶編號(hào)=銷售訂單銷售訂

47、單.客戶編號(hào)客戶編號(hào)where 公司名稱公司名稱=國(guó)皓科技有限公司國(guó)皓科技有限公司或或:select 客戶客戶.公司名稱公司名稱,銷售訂單銷售訂單.*from 客戶客戶,銷售訂單銷售訂單where 客戶客戶.客戶編號(hào)客戶編號(hào)=銷售訂單銷售訂單.客戶編號(hào)客戶編號(hào)and 公司名稱公司名稱=國(guó)皓科技有限公司國(guó)皓科技有限公司.u【例【例3 3】查詢】查詢“國(guó)皓科技有限公司國(guó)皓科技有限公司”訂購(gòu)的商品信息,包括客戶訂購(gòu)的商品信息,包括客戶編號(hào),公司名稱,商品編號(hào),商品名稱,商品價(jià)格,訂購(gòu)數(shù)量。編號(hào),公司名稱,商品編號(hào),商品名稱,商品價(jià)格,訂購(gòu)數(shù)量。 select a. select a.客戶編號(hào)客戶編號(hào)

48、, ,公司名稱公司名稱,c.,c.商品編號(hào)商品編號(hào), ,商品名稱商品名稱, ,單價(jià)單價(jià), ,訂購(gòu)訂購(gòu)數(shù)量數(shù)量 from from 客戶客戶 a join a join 銷售訂單銷售訂單 as b on a.as b on a.客戶編號(hào)客戶編號(hào)=b.=b.客戶編號(hào)客戶編號(hào) join join 商品商品 as c on c.as c on c.商品編號(hào)商品編號(hào)=b.=b.商品編號(hào)商品編號(hào) where where 公司名稱公司名稱=國(guó)皓科技有限公司國(guó)皓科技有限公司或或 select a.select a.客戶編號(hào)客戶編號(hào), ,公司名稱公司名稱,c.,c.商品編號(hào)商品編號(hào), ,商品名稱商品名稱, ,單

49、價(jià)單價(jià), , 訂購(gòu)數(shù)量訂購(gòu)數(shù)量from from 客戶客戶a,a,銷售訂單銷售訂單as b,as b,商品商品as cas cwhere a.where a.客戶編號(hào)客戶編號(hào)=b.=b.客戶編號(hào)客戶編號(hào) and c.and c.商品編號(hào)商品編號(hào)=b.=b.商品編號(hào)商品編號(hào)and and 公司名稱公司名稱=國(guó)皓科技有限公司國(guó)皓科技有限公司 .自連接查詢自連接查詢u連接不僅可以在表之間進(jìn)行,也可以使連接不僅可以在表之間進(jìn)行,也可以使,這種連接稱為,這種連接稱為),相應(yīng)的查詢稱為),相應(yīng)的查詢稱為。.u 例例 查詢訂購(gòu)過(guò)查詢訂購(gòu)過(guò)1 1號(hào)和號(hào)和3 3號(hào)兩種商品的客戶編號(hào)號(hào)兩種商品的客戶編號(hào)selec

50、t distinct a.select distinct a.客戶編號(hào)客戶編號(hào)from from 銷售訂單銷售訂單as a join as a join 銷售訂單銷售訂單as bas bon a.on a.客戶編號(hào)客戶編號(hào)=b.=b.客戶編號(hào)客戶編號(hào)where a.where a.商品編號(hào)商品編號(hào)=1 and b.=1 and b.商品編號(hào)商品編號(hào)=3=3或或select distinct a.select distinct a.客戶編號(hào)客戶編號(hào)from from 銷售訂單銷售訂單as a ,as a ,銷售訂單銷售訂單as bas bwhere a.where a.客戶編號(hào)客戶編號(hào)=b.=b

51、.客戶編號(hào)客戶編號(hào)and a.and a.商品編號(hào)商品編號(hào)=1 and b.=1 and b.商品編號(hào)商品編號(hào)=3=3.外連接外連接 u分類:左外連接、右外連接和全外連接。分類:左外連接、右外連接和全外連接。u左向外連接:結(jié)果集中將包含兩個(gè)表中滿足連接條件的左向外連接:結(jié)果集中將包含兩個(gè)表中滿足連接條件的連接行和第一個(gè)連接表中不滿足條件的數(shù)據(jù)行(對(duì)應(yīng)第連接行和第一個(gè)連接表中不滿足條件的數(shù)據(jù)行(對(duì)應(yīng)第二個(gè)表中的數(shù)據(jù)為二個(gè)表中的數(shù)據(jù)為NULLNULL)。)。u右向外連接:結(jié)果集中將包含滿足連接條件的連接行和右向外連接:結(jié)果集中將包含滿足連接條件的連接行和第二個(gè)連接表中不滿足條件的數(shù)據(jù)行(對(duì)應(yīng)第一個(gè)

52、表中第二個(gè)連接表中不滿足條件的數(shù)據(jù)行(對(duì)應(yīng)第一個(gè)表中的數(shù)據(jù)為的數(shù)據(jù)為NULLNULL)。)。u完整外部連接:返回左外連接和右外連接結(jié)果的集合。完整外部連接:返回左外連接和右外連接結(jié)果的集合。.左外連接左外連接 語(yǔ)法如下:語(yǔ)法如下:SELECT FROM 左表名左表名 LEFT OUTER JOIN 右表名右表名ON 連接條件連接條件 【例】查詢是否所有的員工均接受了銷售訂單,包括員工的【例】查詢是否所有的員工均接受了銷售訂單,包括員工的姓名和訂單信息。姓名和訂單信息。 select 姓名,銷售訂單.* from 員工left join 銷售訂單on 員工.員工編號(hào)=銷售訂單.員工編號(hào)order

53、 by 銷售訂單號(hào) desc.右外連接右外連接右外連接的語(yǔ)法如下。右外連接的語(yǔ)法如下。SELECT FROM 左表名左表名 RIGHT OUTER JOIN 右表名右表名ON 連接條件連接條件 包括右表(出現(xiàn)在包括右表(出現(xiàn)在 JOIN JOIN 子句的最右邊)中的子句的最右邊)中的所有行。不包括左表中的不匹配行。所有行。不包括左表中的不匹配行。【例】查詢所有供應(yīng)商提供的商品情況?!纠坎樵兯泄?yīng)商提供的商品情況。select 采購(gòu)訂單采購(gòu)訂單.* ,供應(yīng)商名稱供應(yīng)商名稱from 采購(gòu)訂單采購(gòu)訂單 right join 供應(yīng)商供應(yīng)商on 采購(gòu)訂單采購(gòu)訂單.供應(yīng)商編號(hào)供應(yīng)商編號(hào)=供應(yīng)商供應(yīng)商.

54、供應(yīng)商編號(hào)供應(yīng)商編號(hào).全外連接全外連接全外連接的語(yǔ)法如下。全外連接的語(yǔ)法如下。SELECT FROM 左表名左表名 FULL OUTER JOIN 右表名右表名ON 連接條件連接條件 包括所有連接表中的所有記錄,不論它們是否匹配。包括所有連接表中的所有記錄,不論它們是否匹配?!纠渴褂萌膺B接查詢客戶和商品的訂購(gòu)信息,包括客戶名稱、【例】使用全外連接查詢客戶和商品的訂購(gòu)信息,包括客戶名稱、聯(lián)系人姓名、訂購(gòu)的商品名稱、訂購(gòu)的數(shù)量和訂購(gòu)日期。聯(lián)系人姓名、訂購(gòu)的商品名稱、訂購(gòu)的數(shù)量和訂購(gòu)日期。 select 公司名稱公司名稱,聯(lián)系人姓名聯(lián)系人姓名,商品名稱商品名稱,訂購(gòu)數(shù)量訂購(gòu)數(shù)量,訂購(gòu)日期訂購(gòu)日期

55、 from 客戶客戶full join 銷售訂單銷售訂單 on 客戶客戶.客戶編號(hào)客戶編號(hào)=銷售訂單銷售訂單.客戶編號(hào)客戶編號(hào) full join 商品商品 on 商品商品.商品編號(hào)商品編號(hào)=銷售訂單銷售訂單.商品編號(hào)商品編號(hào).5.4 5.4 嵌套查詢嵌套查詢u嵌套查詢嵌套查詢 u在在Where或或select子句的表達(dá)式中出現(xiàn)另一個(gè)查詢的子句的表達(dá)式中出現(xiàn)另一個(gè)查詢的情況情況u子查詢子查詢 是指嵌套在其他是指嵌套在其他SQLSQL語(yǔ)句中的語(yǔ)句中的SELECTSELECT語(yǔ)句,如嵌套在語(yǔ)句,如嵌套在SELECTSELECT、INSERTINSERT、UPDATEUPDATE、DELETEDEL

56、ETE語(yǔ)句或其他子查詢中。語(yǔ)句或其他子查詢中。任何允許使用表達(dá)式的地方都可以使用子查詢。任何允許使用表達(dá)式的地方都可以使用子查詢。 子查詢也稱為內(nèi)部查詢或內(nèi)部選擇,而包含子查詢子查詢也稱為內(nèi)部查詢或內(nèi)部選擇,而包含子查詢的語(yǔ)句稱為外部查詢或外部選擇。通常,子查詢作為外的語(yǔ)句稱為外部查詢或外部選擇。通常,子查詢作為外部選擇的選取條件或數(shù)據(jù)來(lái)源。部選擇的選取條件或數(shù)據(jù)來(lái)源。 .嵌套查詢的嵌套查詢的用法用法u當(dāng)當(dāng)wherewhere或者或者selectselect子句中需使用集合函數(shù)時(shí)子句中需使用集合函數(shù)時(shí)可使用子查詢可使用子查詢u可用于解決多表查詢可用于解決多表查詢 ,主查詢和子查詢輸出,主查詢和

57、子查詢輸出的字段可以來(lái)自于一個(gè)表或多個(gè)表的字段可以來(lái)自于一個(gè)表或多個(gè)表.嵌套查詢的類型嵌套查詢的類型u1. 1. 非相關(guān)子查詢:不依賴于外部查詢的子查詢。這類非相關(guān)子查詢:不依賴于外部查詢的子查詢。這類子查詢的執(zhí)行過(guò)程是:首先執(zhí)行子查詢,子查詢的結(jié)果子查詢的執(zhí)行過(guò)程是:首先執(zhí)行子查詢,子查詢的結(jié)果不被顯示出來(lái),而是傳遞給外部查詢,作為外部查詢的不被顯示出來(lái),而是傳遞給外部查詢,作為外部查詢的條件來(lái)使用。然后執(zhí)行外部查詢,并顯示整個(gè)查詢結(jié)果條件來(lái)使用。然后執(zhí)行外部查詢,并顯示整個(gè)查詢結(jié)果u2.2.相關(guān)子查詢:在相關(guān)子查詢中,子查詢的執(zhí)行依賴于相關(guān)子查詢:在相關(guān)子查詢中,子查詢的執(zhí)行依賴于外部查詢

58、,多數(shù)情況下是在外部查詢,多數(shù)情況下是在WHEREWHERE子句中引用了外部查子句中引用了外部查詢的表。詢的表。u相關(guān)子查詢的執(zhí)行過(guò)程是:子查詢?yōu)橥獠坎樵兊拿恳恍袌?zhí)行一次,相關(guān)子查詢的執(zhí)行過(guò)程是:子查詢?yōu)橥獠坎樵兊拿恳恍袌?zhí)行一次,外部查詢將引用的外部字段的值傳給子查詢,進(jìn)行子查詢操作;外部查詢將引用的外部字段的值傳給子查詢,進(jìn)行子查詢操作;外部查詢根據(jù)子查詢得到的結(jié)果集返回滿足條件的結(jié)果行;外部外部查詢根據(jù)子查詢得到的結(jié)果集返回滿足條件的結(jié)果行;外部表的每一行都將作相同的處理。表的每一行都將作相同的處理。. 子查詢與子查詢與SELECTSELECT語(yǔ)句的使用語(yǔ)法完全相同,但在使用語(yǔ)句的使用語(yǔ)法

59、完全相同,但在使用時(shí)必須遵守以下原則。時(shí)必須遵守以下原則。u整個(gè)子查詢語(yǔ)句使用小括號(hào)()括起來(lái)。u在比較運(yùn)算中使用的子查詢的選擇列表只能包括一個(gè)表達(dá)式或列名稱。u如果外部查詢的WHERE子句包括某個(gè)列名,則該子句中使用的子查詢選擇列表中該列的數(shù)據(jù)類型必須兼容(在不同時(shí)可相互轉(zhuǎn)換)。u子查詢的選擇列表中不能使用ntext、text和image數(shù)據(jù)類型的列。 .u如果比較運(yùn)算符之后未接ANY(SOME)或ALL關(guān)鍵字,則子查詢不能使用GROUP BY和HAVING子句。u使用了GROUP BY的子查詢不能使用DISTINCT關(guān)鍵字。u子查詢中不能使用COMPUTE和INTO子句。u只有在子查詢中使

60、用了TOP關(guān)鍵字時(shí),才可以使用ORDER BY子句。u按約定,通過(guò)EXISTS表達(dá)式中使用的子查詢的選擇列表由星號(hào)(*)組成,而不使用單個(gè)列名。 . 子查詢的返回結(jié)果可分為3種:?jiǎn)我恢怠瘟械亩嘈袛?shù)單一值、單列的多行數(shù)據(jù)(多值)、多列的多行數(shù)據(jù)(記錄行)。這三種不據(jù)(多值)、多列的多行數(shù)據(jù)(記錄行)。這三種不同類型的返回結(jié)果對(duì)應(yīng)了不同的使用方法。同類型的返回結(jié)果對(duì)應(yīng)了不同的使用方法。u直接使用單一的返回結(jié)果。例如,使用在=、 , ,= =,=,!=!=或或等比較運(yùn)算符參加相關(guān)表達(dá)式的運(yùn)算。等比較運(yùn)算符參加相關(guān)表達(dá)式的運(yùn)算。【例【例 1】查找員工】查找員工“姚安娜姚安娜”所在的部門名稱。所在的部

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論