版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、16.1 基本查詢SQL數(shù)據(jù)查詢語句是SELECT語句。該語句的基本框架是SELECT-FROM-WHERE,它包含輸出字段、數(shù)據(jù)來源和查詢條件等基本子句。在這種固定格式中,可以不要WHERE,但是SELECT和FROM是必備的。SELECT語句的子句很多,理解了這條語句各項(xiàng)的含義,就能從數(shù)據(jù)庫中查詢出各種數(shù)據(jù)。 第1頁/共36頁26.1 基本查詢簡單查詢 語法格式:SELECT ALL|DISTINCT TOP n PERCENT select_list FROM table_name(1) ALL:表示輸出所有記錄,包括重復(fù)記錄。(2)select_list:所要查詢的選項(xiàng)的集合,多個(gè)選項(xiàng)
2、之間用逗號分開。 (3)table_name:要查詢的表。第2頁/共36頁36.1 基本查詢 例6-1 分別顯示Sales數(shù)據(jù)庫中的員工表employee、商品表goods、銷售表sell_order表和部門表department中的所有記錄。SELECT * FROM employeeSELECT * FROM goodsSELECT * FROM sell_orderSELECT * FROM department第3頁/共36頁46.1 基本查詢例6-2 顯示employee表中全部員工的姓名和年齡,去掉重名。SELECT DISTINCT employee_name AS 姓名,YEA
3、R(GETDATE()-YEAR(birth_date) AS 年齡FROM employee第4頁/共36頁56.1 基本查詢例6-3 對employee表,分別查詢公司的員工總數(shù)和公司員工的平均收入。 SELECT COUNT(*) AS 總數(shù) FROM employee SELECT AVG(wages) AS 平均收入 FROM employee第5頁/共36頁66.1 基本查詢帶條件查詢 語法格式:WHERE search_condition例6-4 對employee表,列出月工資在2000以上的員工記錄。SELECT * FROM employee WHERE wages2000
4、 第6頁/共36頁76.1 基本查詢例6-5 對employee表,求出男員工的平均工資。 SELECT AVG(wages) as 平均工資 FROM employee WHERE sex=男例6-6 對employee表,列出市場部和銷售部的員工名單。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 (市場部, 銷售部) 語句中的WHERE子句還有等價(jià)的
5、形式: WHERE (d.department_name = 市場部) OR (d.department_name = 銷售部)第7頁/共36頁86.1 基本查詢例6-7 對employee表,列出月工資在2000到3000之間的員工名單。 SELECT * FROM employee WHERE wages BETWEEN 2000 AND 3000 語句中的WHERE子句還有等價(jià)的形式: WHERE wages=2000 AND wages=3000第8頁/共36頁96.1 基本查詢例6-8 對employee表,列出所有的姓“張”的員工名單。 SELECT * FROM employee
6、 WHERE employee_name LIKE 張% 語句中的WHERE子句還有等價(jià)的形式: WHERE LEFT(employee_name,1)= 張例6-9 對employee表,列出所有工資為空值的員工編號和姓名。SELECT employee_id,employee_name FROM employee WHERE wages IS NULL第9頁/共36頁106.1 基本查詢查詢結(jié)果處理 1. 排序輸出(ORDER BY)語法格式:ORDER BY order_by_expression1ASC|DESC,order_by_expression2ASC|DESC ,第10頁/共
7、36頁116.1 基本查詢例6-10 對employee表,按性別順序列出員工的編號、姓名、性別、部門編號及工資,性別相同的再先按部門后按工資由高到低排序。SELECT employee_id,employee_name,sex,department_id,wages FROM employee ORDER BY sex,department_id,wages DESC第11頁/共36頁126.1 基本查詢2. 重定向輸出(INTO)語法格式:INTO new_table 例6-11 對部門表department和員工表employee,查詢出“市場部”所有員工的信息,并將結(jié)果存入testta
8、ble表中。SELECT employee.* INTO testtableFROM employee INNER JOIN department ON employee.department_id = department.dapartment_idWHERE department.department_name = 市場部第12頁/共36頁136.1 基本查詢3. 輸出合并(UNION)語法格式: UNION ALL 合并的規(guī)則是: (1)不能合并子查詢的結(jié)果。 (2)兩個(gè)SELECT語句必須輸出同樣的列數(shù)。 (3)兩個(gè)表各相應(yīng)列的數(shù)據(jù)類型必須相同,數(shù)字和字符不能合并。 (4)僅最后一個(gè)S
9、ELECT語句中可以用ORDER BY子句,且排序選項(xiàng)必須依據(jù)第一個(gè)SELECT列表中的列。第13頁/共36頁146.1 基本查詢 例6-12 對employee表,列出部門編號為“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頁/共36頁156.1 基本查詢4. 分組統(tǒng)計(jì)(GROUP BY)
10、與篩選(HAVING)語法格式:GROUP BY group_by_expression1 ,group_by_expression2, 例6-13 對employee表,分別統(tǒng)計(jì)男女員工人數(shù)。 SELECT sex,COUNT(sex) as 人數(shù) FROM employee GROUP BY sex第15頁/共36頁166.1 基本查詢例6-14 對employee表,分別統(tǒng)計(jì)各部門男女員工的人數(shù)。 SELECT department_id, sex,COUNT(*) as 人數(shù) FROM employeeGROUP BY department_id,sex例6-15 對employee表
11、,列出部門平均工資大于2000的部門編號。SELECT department_id,AVG(wages) AS 平均工資 FROM employeeGROUP BY department_id HAVING AVG(wages)=2000第16頁/共36頁176.1 基本查詢5. 使用COMPUTE和COMPUTE BY子句匯總語法格式:COMPUTE row_aggregate(column_name),row_aggregate(colornn_name).BY column_name, column_name. . . 例6-16 對employee表中部門編號為“D001”的員工工資,
12、按照其部門編號生成匯總行和明細(xì)行。 SELECT department_id, wages FROM employeeWHERE department_id = D001 ORDER BY department_id COMPUTE sum(wages)第17頁/共36頁186.1 基本查詢例6-17 對employee表中部門編號為“D001”或“D002”的員工工資,按照其部門編號生成分組匯總行和明細(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頁/共36頁196.2 嵌套查詢SQL Server允許多層嵌套查詢。嵌套查詢一般的查詢方法是由里向外進(jìn)行處理,即每個(gè)子查詢在上一級查詢處理之前處理,子查詢的結(jié)果用于建立其父查詢的查找條件。子查詢中所存取的表可以是父查詢沒有存取的表,子查詢選出的記錄不顯示。 第19頁/共36頁206.2 嵌套查詢單值嵌套查詢 1. 返回單值的子查詢子查詢的返回結(jié)果是一個(gè)值的嵌套查詢稱為單值嵌套查詢。 例6-18 對Sales數(shù)據(jù)庫,列出“市場部”的所有員工的編號。 SELECT employee
14、_id FROM employeeWHERE department_id=(SELECT department_idFROM departmentWHERE department_name=市場部)第20頁/共36頁216.2 嵌套查詢多值嵌套查詢子查詢的返回結(jié)果是一列值的嵌套查詢稱為多值嵌套查詢。(1)ANY運(yùn)算符的用法 例6-19 對Sales數(shù)據(jù)庫,列出D001號部門中工資比D002號部門的員工最低工資高的員工編號和工資。 SELECT employee_id,wages FROM employeeWHERE department_id=D001 AND wagesANY(SELECT
15、wages FROM employeeWHERE department_id=D002)第21頁/共36頁226.2 嵌套查詢(2)ALL運(yùn)算符的用法 例6-20 對Sales數(shù)據(jù)庫,列出部門編號為“D001”的員工,這些員工的工資比部門為“D002”的員工的最高工資還要高的員工的編號和工資。 SELECT employee_id,wages FROM employeeWHERE department_id=D001 AND wagesALL (SELECT wages FROM employeeWHERE department_id=D002)第22頁/共36頁236.2 嵌套查詢 (3)I
16、N運(yùn)算符的用法 例6-21 對Sales數(shù)據(jù)庫,列出部門為“市場部”或“銷售部”的所有員工的編號。 SELECT employee_id FROM employeeWHERE department_id IN (SELECT department_id FROM departmentWHERE department_name=市場部 OR department_name=銷售部)第23頁/共36頁246.3 連接查詢連接概述通過連接運(yùn)算符可以實(shí)現(xiàn)多個(gè)表查詢。連接是關(guān)系數(shù)據(jù)庫模型的主要特點(diǎn),也是它區(qū)別于其他類型數(shù)據(jù)庫管理系統(tǒng)的一個(gè)標(biāo)志。連接可以在SELECT語句的WHERE子句中建立。第24頁/
17、共36頁256.3 連接查詢 例6-22 對Sales數(shù)據(jù)庫輸出所有員工的銷售單,要求給出員工編號、姓名、商品編號、商品名和銷售數(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頁
18、/共36頁266.3 連接查詢連接也可以在FROM子句中建立,而且在FROM子句中指出連接時(shí)有助于將連接操作與WHERE子句中的搜索條件區(qū)分開來。所以,在Transact-SQL中推薦使用這種方法。FROM子句建立連接的語法格式是: FROM join_table join_type JOIN join_table ON join_condition連接種類:內(nèi)連接、外連接和交叉連接。第26頁/共36頁276.3 連接查詢內(nèi)連接內(nèi)連接分3種:等值連接、不等值連接和自然連接。1等值連接在連接條件中使用等號(=)運(yùn)算符比較被連接列的列值,按對應(yīng)列的共同值將一個(gè)表中的記錄與另一個(gè)表中的記錄相連接,包
19、括其中的重復(fù)列。例6-23 Sales數(shù)據(jù)庫中部門表department和員工表employee的等值連接。SELECT * FROM department INNER JOIN employee ON employee.department_id = department.department_id第27頁/共36頁286.3 連接查詢2不等值連接在連接條件中使用除等于(=)運(yùn)算符以外的其他比較運(yùn)算符比較被連接的列的列值。這些運(yùn)算符包括、=、=、!和。 例6-24 對Sales數(shù)據(jù)庫,列出銷售“G00001”產(chǎn)品的員工中,銷售數(shù)量大于編號為“E001”的員工銷售該類產(chǎn)品銷售數(shù)量的那些員工的編
20、號和銷售數(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頁/共36頁296.3 連接查詢3自然連接在連接條件中使用等于(=)運(yùn)算符比較被連接列的列值,它使用選擇列表方式來指出查詢結(jié)果集合中所包括的列,并刪除連接表中的重復(fù)列。例6-25 Sales數(shù)據(jù)庫中部門表depar
21、tment和員工表employee的自然連接。SELECT a.department_name, b.*FROM department a INNER JOIN employee b ON b.department_id = a.department_id第29頁/共36頁306.3 連接查詢外連接在內(nèi)連接查詢時(shí),返回查詢結(jié)果集合中的僅是符合查詢條件(WHERE搜索條件或 HAVING條件)和連接條件的行。而采用外連接時(shí),它返回到查詢結(jié)果集合中的不僅包含符合連接條件的行,而且還包括左表(左外連接時(shí))、右表(右外連接時(shí))或兩個(gè)連接表(全外連接)中的所有數(shù)據(jù)行。第30頁/共36頁316.3 連接查
22、詢1使用左外連接左外連接通過左向外連接引用左表的所有行。例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頁/共36頁326.3 連接查詢2使用右外連接右外連接通過右向外連接引用右表的所有行。例6-27 員工信息表employee右外連接銷售信息表sell_or
23、der。為了說明方便,先在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頁/共36頁336.3 連接查詢3使用全外連接全外連接返回兩個(gè)表的所有行。不管兩個(gè)表的行是否滿足連接條件,均返回查詢結(jié)果集。對不滿足連接條件的記錄,另一個(gè)表相對應(yīng)字段用NULL代替。例6-28 員工信息表employee全外連接銷售信息表sell_order。SELECT a.emplo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 七大方言語音的特點(diǎn)
- 《常見豬病及其防治》課件
- 幼兒園課件垃圾分類
- 湖南省長沙市雨花區(qū)2024-2025學(xué)年高一上學(xué)期期末考試政治試題(含答案)
- 《面向世界的眼光》課件
- 飲用水源地水質(zhì)監(jiān)測及風(fēng)險(xiǎn)防控能力項(xiàng)目可行性研究報(bào)告寫作模板-申批備案
- 2025年全球市場及大類資產(chǎn)展望:從特朗普交易到基本面拐點(diǎn)
- 單位管理制度收錄大全人力資源管理篇
- 中國隱形眼鏡及護(hù)理液行業(yè)投資潛力分析及行業(yè)發(fā)展趨勢報(bào)告
- 《營銷經(jīng)理飚升》課件
- 銷售總監(jiān)年度總結(jié)規(guī)劃
- 生物安全柜的使用及維護(hù)培訓(xùn)
- 《NOIP圖的基礎(chǔ)算法》課件
- 《建筑工程QC課題》課件
- 病歷質(zhì)控流程
- 政府采購評審專家考試試題庫(完整版)
- 合作投資酒店意向合同范例
- 安全教育教案大班40篇
- 叉車工安全培訓(xùn)資料
- 九年級英語教學(xué)反思
- 外研新標(biāo)準(zhǔn)初中英語七年級上冊冊寒假提升補(bǔ)全對話短文練習(xí)三附答案解析
評論
0/150
提交評論