第 數(shù)據(jù)查詢PPT課件_第1頁(yè)
第 數(shù)據(jù)查詢PPT課件_第2頁(yè)
第 數(shù)據(jù)查詢PPT課件_第3頁(yè)
第 數(shù)據(jù)查詢PPT課件_第4頁(yè)
第 數(shù)據(jù)查詢PPT課件_第5頁(yè)
已閱讀5頁(yè),還剩31頁(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、16.1 基本查詢SQL數(shù)據(jù)查詢語(yǔ)句是SELECT語(yǔ)句。該語(yǔ)句的基本框架是SELECT-FROM-WHERE,它包含輸出字段、數(shù)據(jù)來(lái)源和查詢條件等基本子句。在這種固定格式中,可以不要WHERE,但是SELECT和FROM是必備的。SELECT語(yǔ)句的子句很多,理解了這條語(yǔ)句各項(xiàng)的含義,就能從數(shù)據(jù)庫(kù)中查詢出各種數(shù)據(jù)。 第1頁(yè)/共36頁(yè)26.1 基本查詢簡(jiǎn)單查詢 語(yǔ)法格式:SELECT ALL|DISTINCT TOP n PERCENT select_list FROM table_name(1) ALL:表示輸出所有記錄,包括重復(fù)記錄。(2)select_list:所要查詢的選項(xiàng)的集合,多個(gè)選項(xiàng)

2、之間用逗號(hào)分開。 (3)table_name:要查詢的表。第2頁(yè)/共36頁(yè)36.1 基本查詢 例6-1 分別顯示Sales數(shù)據(jù)庫(kù)中的員工表employee、商品表goods、銷售表sell_order表和部門表department中的所有記錄。SELECT * FROM employeeSELECT * FROM goodsSELECT * FROM sell_orderSELECT * FROM department第3頁(yè)/共36頁(yè)46.1 基本查詢例6-2 顯示employee表中全部員工的姓名和年齡,去掉重名。SELECT DISTINCT employee_name AS 姓名,YEA

3、R(GETDATE()-YEAR(birth_date) AS 年齡FROM employee第4頁(yè)/共36頁(yè)56.1 基本查詢例6-3 對(duì)employee表,分別查詢公司的員工總數(shù)和公司員工的平均收入。 SELECT COUNT(*) AS 總數(shù) FROM employee SELECT AVG(wages) AS 平均收入 FROM employee第5頁(yè)/共36頁(yè)66.1 基本查詢帶條件查詢 語(yǔ)法格式:WHERE search_condition例6-4 對(duì)employee表,列出月工資在2000以上的員工記錄。SELECT * FROM employee WHERE wages2000

4、 第6頁(yè)/共36頁(yè)76.1 基本查詢例6-5 對(duì)employee表,求出男員工的平均工資。 SELECT AVG(wages) as 平均工資 FROM employee WHERE sex=男例6-6 對(duì)employee表,列出市場(chǎng)部和銷售部的員工名單。SELECT d.department_name, e.employee_name FROM employee e INNER JOIN department d ON e.department_id = d.department_idWHERE d.department_name IN (市場(chǎng)部, 銷售部) 語(yǔ)句中的WHERE子句還有等價(jià)的

5、形式: WHERE (d.department_name = 市場(chǎng)部) OR (d.department_name = 銷售部)第7頁(yè)/共36頁(yè)86.1 基本查詢例6-7 對(duì)employee表,列出月工資在2000到3000之間的員工名單。 SELECT * FROM employee WHERE wages BETWEEN 2000 AND 3000 語(yǔ)句中的WHERE子句還有等價(jià)的形式: WHERE wages=2000 AND wages=3000第8頁(yè)/共36頁(yè)96.1 基本查詢例6-8 對(duì)employee表,列出所有的姓“張”的員工名單。 SELECT * FROM employee

6、 WHERE employee_name LIKE 張% 語(yǔ)句中的WHERE子句還有等價(jià)的形式: WHERE LEFT(employee_name,1)= 張例6-9 對(duì)employee表,列出所有工資為空值的員工編號(hào)和姓名。SELECT employee_id,employee_name FROM employee WHERE wages IS NULL第9頁(yè)/共36頁(yè)106.1 基本查詢查詢結(jié)果處理 1. 排序輸出(ORDER BY)語(yǔ)法格式:ORDER BY order_by_expression1ASC|DESC,order_by_expression2ASC|DESC ,第10頁(yè)/共

7、36頁(yè)116.1 基本查詢例6-10 對(duì)employee表,按性別順序列出員工的編號(hào)、姓名、性別、部門編號(hào)及工資,性別相同的再先按部門后按工資由高到低排序。SELECT employee_id,employee_name,sex,department_id,wages FROM employee ORDER BY sex,department_id,wages DESC第11頁(yè)/共36頁(yè)126.1 基本查詢2. 重定向輸出(INTO)語(yǔ)法格式:INTO new_table 例6-11 對(duì)部門表department和員工表employee,查詢出“市場(chǎng)部”所有員工的信息,并將結(jié)果存入testta

8、ble表中。SELECT employee.* INTO testtableFROM employee INNER JOIN department ON employee.department_id = department.dapartment_idWHERE department.department_name = 市場(chǎng)部第12頁(yè)/共36頁(yè)136.1 基本查詢3. 輸出合并(UNION)語(yǔ)法格式: UNION ALL 合并的規(guī)則是: (1)不能合并子查詢的結(jié)果。 (2)兩個(gè)SELECT語(yǔ)句必須輸出同樣的列數(shù)。 (3)兩個(gè)表各相應(yīng)列的數(shù)據(jù)類型必須相同,數(shù)字和字符不能合并。 (4)僅最后一個(gè)S

9、ELECT語(yǔ)句中可以用ORDER BY子句,且排序選項(xiàng)必須依據(jù)第一個(gè)SELECT列表中的列。第13頁(yè)/共36頁(yè)146.1 基本查詢 例6-12 對(duì)employee表,列出部門編號(hào)為“D001”或“D002”的所有員工姓名。 SELECT employee_name,department_id FROM employee WHERE department_id=D001 UNIONSELECT employee_name,department_id FROM employee WHERE department_id=D002第14頁(yè)/共36頁(yè)156.1 基本查詢4. 分組統(tǒng)計(jì)(GROUP BY)

10、與篩選(HAVING)語(yǔ)法格式:GROUP BY group_by_expression1 ,group_by_expression2, 例6-13 對(duì)employee表,分別統(tǒng)計(jì)男女員工人數(shù)。 SELECT sex,COUNT(sex) as 人數(shù) FROM employee GROUP BY sex第15頁(yè)/共36頁(yè)166.1 基本查詢例6-14 對(duì)employee表,分別統(tǒng)計(jì)各部門男女員工的人數(shù)。 SELECT department_id, sex,COUNT(*) as 人數(shù) FROM employeeGROUP BY department_id,sex例6-15 對(duì)employee表

11、,列出部門平均工資大于2000的部門編號(hào)。SELECT department_id,AVG(wages) AS 平均工資 FROM employeeGROUP BY department_id HAVING AVG(wages)=2000第16頁(yè)/共36頁(yè)176.1 基本查詢5. 使用COMPUTE和COMPUTE BY子句匯總語(yǔ)法格式:COMPUTE row_aggregate(column_name),row_aggregate(colornn_name).BY column_name, column_name. . . 例6-16 對(duì)employee表中部門編號(hào)為“D001”的員工工資,

12、按照其部門編號(hào)生成匯總行和明細(xì)行。 SELECT department_id, wages FROM employeeWHERE department_id = D001 ORDER BY department_id COMPUTE sum(wages)第17頁(yè)/共36頁(yè)186.1 基本查詢例6-17 對(duì)employee表中部門編號(hào)為“D001”或“D002”的員工工資,按照其部門編號(hào)生成分組匯總行和明細(xì)行。 SELECT department_id, wages FROM employeeWHERE department_id = D001 OR department_id = D002OR

13、DER BY department_idCOMPUTE sum(wages) BY department_id第18頁(yè)/共36頁(yè)196.2 嵌套查詢SQL Server允許多層嵌套查詢。嵌套查詢一般的查詢方法是由里向外進(jìn)行處理,即每個(gè)子查詢?cè)谏弦患?jí)查詢處理之前處理,子查詢的結(jié)果用于建立其父查詢的查找條件。子查詢中所存取的表可以是父查詢沒有存取的表,子查詢選出的記錄不顯示。 第19頁(yè)/共36頁(yè)206.2 嵌套查詢單值嵌套查詢 1. 返回單值的子查詢子查詢的返回結(jié)果是一個(gè)值的嵌套查詢稱為單值嵌套查詢。 例6-18 對(duì)Sales數(shù)據(jù)庫(kù),列出“市場(chǎng)部”的所有員工的編號(hào)。 SELECT employee

14、_id FROM employeeWHERE department_id=(SELECT department_idFROM departmentWHERE department_name=市場(chǎng)部)第20頁(yè)/共36頁(yè)216.2 嵌套查詢多值嵌套查詢子查詢的返回結(jié)果是一列值的嵌套查詢稱為多值嵌套查詢。(1)ANY運(yùn)算符的用法 例6-19 對(duì)Sales數(shù)據(jù)庫(kù),列出D001號(hào)部門中工資比D002號(hào)部門的員工最低工資高的員工編號(hào)和工資。 SELECT employee_id,wages FROM employeeWHERE department_id=D001 AND wagesANY(SELECT

15、wages FROM employeeWHERE department_id=D002)第21頁(yè)/共36頁(yè)226.2 嵌套查詢(2)ALL運(yùn)算符的用法 例6-20 對(duì)Sales數(shù)據(jù)庫(kù),列出部門編號(hào)為“D001”的員工,這些員工的工資比部門為“D002”的員工的最高工資還要高的員工的編號(hào)和工資。 SELECT employee_id,wages FROM employeeWHERE department_id=D001 AND wagesALL (SELECT wages FROM employeeWHERE department_id=D002)第22頁(yè)/共36頁(yè)236.2 嵌套查詢 (3)I

16、N運(yùn)算符的用法 例6-21 對(duì)Sales數(shù)據(jù)庫(kù),列出部門為“市場(chǎng)部”或“銷售部”的所有員工的編號(hào)。 SELECT employee_id FROM employeeWHERE department_id IN (SELECT department_id FROM departmentWHERE department_name=市場(chǎng)部 OR department_name=銷售部)第23頁(yè)/共36頁(yè)246.3 連接查詢連接概述通過(guò)連接運(yùn)算符可以實(shí)現(xiàn)多個(gè)表查詢。連接是關(guān)系數(shù)據(jù)庫(kù)模型的主要特點(diǎn),也是它區(qū)別于其他類型數(shù)據(jù)庫(kù)管理系統(tǒng)的一個(gè)標(biāo)志。連接可以在SELECT語(yǔ)句的WHERE子句中建立。第24頁(yè)/

17、共36頁(yè)256.3 連接查詢 例6-22 對(duì)Sales數(shù)據(jù)庫(kù)輸出所有員工的銷售單,要求給出員工編號(hào)、姓名、商品編號(hào)、商品名和銷售數(shù)量。 SELECT employee.employee_id, employee.employee_name, goods.goods_id, goods.goods_name, sell_order.order_numFROM employee,sell_order,goodsWHERE employee.employee_id = sell_order.employee_id andsell_order.goods_id = goods.goods_id第25頁(yè)

18、/共36頁(yè)266.3 連接查詢連接也可以在FROM子句中建立,而且在FROM子句中指出連接時(shí)有助于將連接操作與WHERE子句中的搜索條件區(qū)分開來(lái)。所以,在Transact-SQL中推薦使用這種方法。FROM子句建立連接的語(yǔ)法格式是: FROM join_table join_type JOIN join_table ON join_condition連接種類:內(nèi)連接、外連接和交叉連接。第26頁(yè)/共36頁(yè)276.3 連接查詢內(nèi)連接內(nèi)連接分3種:等值連接、不等值連接和自然連接。1等值連接在連接條件中使用等號(hào)(=)運(yùn)算符比較被連接列的列值,按對(duì)應(yīng)列的共同值將一個(gè)表中的記錄與另一個(gè)表中的記錄相連接,包

19、括其中的重復(fù)列。例6-23 Sales數(shù)據(jù)庫(kù)中部門表department和員工表employee的等值連接。SELECT * FROM department INNER JOIN employee ON employee.department_id = department.department_id第27頁(yè)/共36頁(yè)286.3 連接查詢2不等值連接在連接條件中使用除等于(=)運(yùn)算符以外的其他比較運(yùn)算符比較被連接的列的列值。這些運(yùn)算符包括、=、=、!和。 例6-24 對(duì)Sales數(shù)據(jù)庫(kù),列出銷售“G00001”產(chǎn)品的員工中,銷售數(shù)量大于編號(hào)為“E001”的員工銷售該類產(chǎn)品銷售數(shù)量的那些員工的編

20、號(hào)和銷售數(shù)量。SELECT a.employee_id, a.order_numFROM sell_order a INNER JOIN sell_order b ON a.order_num b.order_num AND a.goods_id = b.goods_idWHERE (b.goods_id = G00001) AND (b.employee_id = E001)第28頁(yè)/共36頁(yè)296.3 連接查詢3自然連接在連接條件中使用等于(=)運(yùn)算符比較被連接列的列值,它使用選擇列表方式來(lái)指出查詢結(jié)果集合中所包括的列,并刪除連接表中的重復(fù)列。例6-25 Sales數(shù)據(jù)庫(kù)中部門表depar

21、tment和員工表employee的自然連接。SELECT a.department_name, b.*FROM department a INNER JOIN employee b ON b.department_id = a.department_id第29頁(yè)/共36頁(yè)306.3 連接查詢外連接在內(nèi)連接查詢時(shí),返回查詢結(jié)果集合中的僅是符合查詢條件(WHERE搜索條件或 HAVING條件)和連接條件的行。而采用外連接時(shí),它返回到查詢結(jié)果集合中的不僅包含符合連接條件的行,而且還包括左表(左外連接時(shí))、右表(右外連接時(shí))或兩個(gè)連接表(全外連接)中的所有數(shù)據(jù)行。第30頁(yè)/共36頁(yè)316.3 連接查

22、詢1使用左外連接左外連接通過(guò)左向外連接引用左表的所有行。例6-26 員工信息表employee左外連接銷售信息表sell_order。SELECT a.employee_id, a.employee_name, b.goods_id, b.order_num, b.send_dateFROM employee a LEFT OUTER JOIN sell_order b ON a.employee_id = b.employee_id第31頁(yè)/共36頁(yè)326.3 連接查詢2使用右外連接右外連接通過(guò)右向外連接引用右表的所有行。例6-27 員工信息表employee右外連接銷售信息表sell_or

23、der。為了說(shuō)明方便,先在sell_order表中插入一條銷售信息。INSERT INTO sell_order (order_id1, goods_id, employee_id, customer_id, transporter_id, order_num, discount, order_date, send_date, arrival_date, cost)VALUES (S00006, G00005, , C0006, T002, 21, 0.5, GETDATE(), GETDATE(), GETDATE(),100)SELECT a.employee_id, a.employee_name, b.goods_id, b.order_num, b.send_date, b.order_id1FROM employee a RIGHT OUTER JOIN sell_order b ON a.employee_id = b.employee_id第32頁(yè)/共36頁(yè)336.3 連接查詢3使用全外連接全外連接返回兩個(gè)表的所有行。不管兩個(gè)表的行是否滿足連接條件,均返回查詢結(jié)果集。對(duì)不滿足連接條件的記錄,另一個(gè)表相對(duì)應(yīng)字段用NULL代替。例6-28 員工信息表employee全外連接銷售信息表sell_order。SELECT a.emplo

溫馨提示

  • 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)論