




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第三章SQL數據操縱語言3.1數據查詢3.2數據更新如沒有特別說明本節的所有查詢都在Northwind數據庫中進行。3.1數據查詢3.1.1SELECT語句結構SELECT<字段列表表達式>[INTO表名]FROM<表名或視圖名列表>[WHERE<條件表達式>][GROUPBY<分組列表>[HAVING<篩選條件>]][ORDERBY<關鍵字表達式>[ASC|DESC][,<關鍵字表達式>[ASC|DESC]…]][TOP<數值表達式>[PERCENT]][UNION[ALL]<SELECT命令>]3.1.2簡單查詢
最簡單的查詢只由SELECT、FROM兩個子句構成。1即指定字段列表表達式,每個之間用逗號分開,可以使用星號(*)檢索所有列。例1查詢所有產品的基本信息。 例2查詢所有供應商的名稱、所在城市和州。2使用DISTINCT|ALL消除重復行
例3查詢哪些州有供應商。3.1.3使用WHERE子句指定行使用比較運算符>、<、=、>=、<=、!=、<>例4查詢定購數量大于10的定單信息。邏輯運算符AND、OR、NOT例5查詢要求到貨日期在98-5-6或者是98-5-10號的定單信息。使用[NOT]BETWEEN…AND…BETWEEN…AND…是一個閉區間。例6查詢單價在15到20之間的所有產品的信息。使用[NOT]IN例7查詢所在州為‘TN’,‘OR’,‘MI’之一的供應商的信息。使用[NOT]LIKE通配符%,代表任意數量的任意字符,?代表一個任意字符。 例8查詢產品名中含有“Tofu”的所有產品信息。判斷空值的查詢條件
IS[NOT]NULL ISNULL()函數例9查詢傳真號為空值的所有供應商的信息。1使用AS更改列名 例10查詢所有訂單的訂單號、產品號和訂購該產品的金額。2使用ORDERBY排序數據
語法:ORDERBY排序表達式1[ASCENDING|DESCENDING][,排序表達式2[ASCENDING|DESCENDING]…]
例11對上例查詢的結果按訂單號排序,同一訂單號的按金額降序排序。3.1.4格式化結果集3使用TOP返回指定行數
使用TOPN(N為整數)返回指定的行,或使用TOPNPERCENT返回滿足查詢條件的總記錄的百分比。 例12查詢單價最高的5種商品。
3.1.5使用集函數COUNT(*|[DISTINCT|ALL]<列名>)統計元組(*)或統計一列中值(列名)的個數SUM([DISTINCT|ALL]<列名>)計算一列值的總和(該列必須為數值型)AVG([DISTINCT|ALL]<列名>)計算一列值的平均值(該列必須為數值型)MAX([DISTINCT|ALL]<列名>)求一列值中的最大值MIN([DISTINCT|ALL]<列名>)求一列值中的最小值如果指定了DISTINCT,則表示在計算時要取消指定列中的重復值。例13查詢所有定單的總交易額。例14查詢產品號為’11’的產品交易發生的次數和總交易額,平均、最高、最低交易額。3.1.6對查詢結果分組和篩選1分組查詢結果
GROUPBY子句將查詢結果進行分組,分組原則是按分組列名表的值相等的分為一組。分組的目的是為了細化集函數的作用對象。如果未對查詢結果分組,則集函數將作用于整個查詢結果,即整個查詢結果只有一個函數值。
例15查詢每個定單的交易額。 例16查詢每種產品的交易發生的次數和交易額,交易量。2對分組結果篩選
使用HAVING短語,使返回的結果只包含滿足條件的組。HAVING短語只能放在GROUPBY分組子句中,和分組一起使用。 例17查詢交易額超過1000元的定單。 例18查詢單次交易量超過10且交易次數超過20次的產品。 什么時候該用HAVING篩選條件?其實很簡單:要使用集函數的統計值的就應該用HAVING篩選,在WHERE子句不能使用集函數。3.1.7聯接查詢1使用WHERE條件聯接
例19查詢1998年每個月每個員工接收訂單的總額。 例20查詢銷往每個國家的總金額。 例21查詢每份訂單的公司名稱、產品名稱。2使用JOIN聯接
FROM<數據源表或視圖>[[INNER|LEFTOUTER|RIGHTOUTER|FULL
OUTER|CROSS]JOIN<表名>ON<聯接條件>…]
內連接也叫自然連接,它是組合兩個表的常用方法。自然連接將兩個表中的列進行比較,將兩個表中滿足連接條件的行組合起來,作為結果。語法:
SELECT列
FROM表1[inner]JION表2 ON表1.列=表2.列 試將上面幾例改為內聯接查詢。1.內連接(Innerjoin)2外聯接(outerjoin)在自然連接中,只有在兩個表中匹配的行才能在結果集中出現。而在外連接中可以只限制一個表,而對另外一個表不加限制(即所有的行都出現在結果集中)。外連接分為左外連接、右外連接和全外連接。左外連接是對連接條件中左邊的表不加限制;右外連接是對右邊的表不加限制;全外連接對兩個表都不加限制,所有兩個表中的行都會包括在結果集中。例22查詢所有客戶的公司名及與其處于同一城市的供應商的公司名稱。交叉連接交叉連接也叫非限制連接,它將兩個表不加任何約束地組合起來。在數學上,就是兩個表的笛卡爾積。交叉連接后得到的結果集的行數是兩個被連接表的行數的乘積。3.1.8嵌套子查詢嵌套子查詢的執行不依賴于外部嵌套。嵌套子查詢的執行過程為:首先執行子查詢,子查詢得到的結果集不被顯示出來,而是傳給外部查詢,作為外部查詢的條件使用,然后執行外部查詢,并顯示查詢結果。子查詢可以多層嵌套。嵌套子查詢一般也分為兩種:子查詢返回單個值和子查詢返回一個值列表。(1)返回單個值,該值被外部查詢的比較操作(如,=、!=、<、<=、>、>=)使用,該值可以使子查詢中使用集合函數得到的值。
例23查詢單價高于平均價格的所有產品。 例24在pubs數據庫查詢書號為pc1035的作者的作者號、作者姓名。
(2)返回一個值列表,該列表被外部查詢的IN、NOTIN、ANY或ALL比較操作使用。IN表示屬于,即外部查詢中用于判斷的表達式的值與子查詢返回的值列表中的一個值相等;NOTIN表示不屬于。 例25查詢銷售總金額前5名的產品信息。
例26查詢地區為‘SP’的客戶訂購的產品信息。ANY、SOME和ALL用于一個值與一組值的比較,以“>”為例,ANY表示大于一組值中的任意一個,ALL表示大于一組值中的每一個。比如,>ANY(1,2,3)相當于大于MIN(1,2,3);而>ALL(1,2,3)相當于大于MAX(1,2,3)。SOME在SQL-92標準中與ANY含義相同。
例27查詢比最近三個訂單中任何一個交易額高的訂單號。2.相關子查詢在相關子查詢中,子查詢的執行依賴于外部查詢,多數情況下是子查詢的WHERE子句中引用了外部查詢的表。相關子查詢的執行過程與嵌套子查詢完全不同,嵌套子查詢中子查詢只執行一次,而相關子查詢中的子查詢需要重復地執行。相關子查詢的執行過程如下:(1)子查詢為外部查詢的每一行執行一次,外部查詢將子查詢引用的列的值傳給子查詢。(2)如果子查詢的任何行與其匹配,外部查詢就返回結果行。(3)再回到第一步,直到處理完外部表的每一行。
1
Exists及NotExists查詢 例28查詢沒有任何訂購的產品的信息。 例29查詢所有由‘5’號員工處理的產品信息。
2計算相關子查詢 例30列出累計銷售額在50000元以上的產品信息。 例31查詢每種產品的編號、名稱、銷售數量。3.1.9合并結果集
關系的集合操作主要包括UNION(并)、INTERSECT(交)、MINUS(差)和笛卡積,其中笛卡積通過交叉聯接實現。在標準SQL語言中,并沒有直接實現交、差運算的方法。并集
例32查詢所有客戶和供應商的公司名稱。 注意:使用Orderby排序只能放在查詢最后。交集 例33查詢曾經訂購過20和60號產品的客戶。差集 例34查詢曾經訂購過20但從沒有訂購過60號產品的客戶。3.1.10在查詢的基礎上創建新表使用SELECTINTO語句可以在查詢的基礎上創建新表,SELECTINTO語句首先創建一個新表,然后用查詢的結果填充新表。例35查詢每種產品的編號、銷售數量并將結果保存在sales表中。3.2數據更新3.2.1添加數據1單記錄添加語法:INSERT
INTO表名[(列名列表)]VALUES(值列表)例36向SHIPPERS表中添加一條記錄。2從查詢中批量添加INSERT
INTO表名[(列名列表)]
SELECT查詢例37新建一個表并將SUPPLIERS及CUSTOMERS中的公司名稱添加到新表中。3.2.2修改數據1簡單修改語句語法:UPDATETABLE表名SET列名=值[,列名=值…][WHERE條件]例38將訂單號為10248、產品號為11的訂貨數量改為20。2使用子查詢修改UPDATE的子查詢可以在SET和WHERE子句中使用。例39修改sales表添加一列銷售總額,并修改數據。3.2.3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- ××超市資源調配規定
- 多方合作基金投資協議
- 實習經歷及工作表現證明(5篇)
- 關于勤奮學習的討論話題展開論述議論文創作12篇
- 人工智能技術研發經歷證明書(6篇)
- 2025年物業管理師職業能力測試卷:智慧社區管理案例分析試題
- 2025年金屬硫蛋白(MT)、高純度MT、MT多糖項目提案報告
- 2025年電工(高級)職業技能鑒定實操試卷:電力系統節能技術考核
- 2025年自動驅鳥設備項目規劃申請報告
- 國際貿易合同執行及業務經歷證明書(7篇)
- GCK(改)低壓固定分隔式開關柜
- 船舶穩性知識點講解
- 建筑門窗熱工性能計算書(LOW-E玻璃及隔熱系數)
- 統編版道德與法治四年級下冊期末復習填空 判斷 簡答 案例分析題專項訓練[全集]
- 客用物品更換記錄
- 有機化學--習題答案---陳宏博
- 大客戶管理(共43頁).ppt
- 設施農用地管理政策---培訓會--課件(第二部分)
- 英語活動小組活動記錄表(共10頁)
- 超聲波探傷報告(焊縫)
- 2022社區工作者考試試題-歷年真題及答案
評論
0/150
提交評論