




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第三章SQL數(shù)據(jù)操縱語(yǔ)言3.1數(shù)據(jù)查詢3.2數(shù)據(jù)更新如沒(méi)有特別說(shuō)明本節(jié)的所有查詢都在Northwind數(shù)據(jù)庫(kù)中進(jìn)行。3.1數(shù)據(jù)查詢3.1.1SELECT語(yǔ)句結(jié)構(gòu)SELECT<字段列表表達(dá)式>[INTO表名]FROM<表名或視圖名列表>[WHERE<條件表達(dá)式>][GROUPBY<分組列表>[HAVING<篩選條件>]][ORDERBY<關(guān)鍵字表達(dá)式>[ASC|DESC][,<關(guān)鍵字表達(dá)式>[ASC|DESC]…]][TOP<數(shù)值表達(dá)式>[PERCENT]][UNION[ALL]<SELECT命令>]3.1.2簡(jiǎn)單查詢
最簡(jiǎn)單的查詢只由SELECT、FROM兩個(gè)子句構(gòu)成。1即指定字段列表表達(dá)式,每個(gè)之間用逗號(hào)分開(kāi),可以使用星號(hào)(*)檢索所有列。例1查詢所有產(chǎn)品的基本信息。 例2查詢所有供應(yīng)商的名稱、所在城市和州。2使用DISTINCT|ALL消除重復(fù)行
例3查詢哪些州有供應(yīng)商。3.1.3使用WHERE子句指定行使用比較運(yùn)算符>、<、=、>=、<=、!=、<>例4查詢定購(gòu)數(shù)量大于10的定單信息。邏輯運(yùn)算符AND、OR、NOT例5查詢要求到貨日期在98-5-6或者是98-5-10號(hào)的定單信息。使用[NOT]BETWEEN…AND…BETWEEN…AND…是一個(gè)閉區(qū)間。例6查詢單價(jià)在15到20之間的所有產(chǎn)品的信息。使用[NOT]IN例7查詢所在州為‘TN’,‘OR’,‘MI’之一的供應(yīng)商的信息。使用[NOT]LIKE通配符%,代表任意數(shù)量的任意字符,?代表一個(gè)任意字符。 例8查詢產(chǎn)品名中含有“Tofu”的所有產(chǎn)品信息。判斷空值的查詢條件
IS[NOT]NULL ISNULL()函數(shù)例9查詢傳真號(hào)為空值的所有供應(yīng)商的信息。1使用AS更改列名 例10查詢所有訂單的訂單號(hào)、產(chǎn)品號(hào)和訂購(gòu)該產(chǎn)品的金額。2使用ORDERBY排序數(shù)據(jù)
語(yǔ)法:ORDERBY排序表達(dá)式1[ASCENDING|DESCENDING][,排序表達(dá)式2[ASCENDING|DESCENDING]…]
例11對(duì)上例查詢的結(jié)果按訂單號(hào)排序,同一訂單號(hào)的按金額降序排序。3.1.4格式化結(jié)果集3使用TOP返回指定行數(shù)
使用TOPN(N為整數(shù))返回指定的行,或使用TOPNPERCENT返回滿足查詢條件的總記錄的百分比。 例12查詢單價(jià)最高的5種商品。
3.1.5使用集函數(shù)COUNT(*|[DISTINCT|ALL]<列名>)統(tǒng)計(jì)元組(*)或統(tǒng)計(jì)一列中值(列名)的個(gè)數(shù)SUM([DISTINCT|ALL]<列名>)計(jì)算一列值的總和(該列必須為數(shù)值型)AVG([DISTINCT|ALL]<列名>)計(jì)算一列值的平均值(該列必須為數(shù)值型)MAX([DISTINCT|ALL]<列名>)求一列值中的最大值MIN([DISTINCT|ALL]<列名>)求一列值中的最小值如果指定了DISTINCT,則表示在計(jì)算時(shí)要取消指定列中的重復(fù)值。例13查詢所有定單的總交易額。例14查詢產(chǎn)品號(hào)為’11’的產(chǎn)品交易發(fā)生的次數(shù)和總交易額,平均、最高、最低交易額。3.1.6對(duì)查詢結(jié)果分組和篩選1分組查詢結(jié)果
GROUPBY子句將查詢結(jié)果進(jìn)行分組,分組原則是按分組列名表的值相等的分為一組。分組的目的是為了細(xì)化集函數(shù)的作用對(duì)象。如果未對(duì)查詢結(jié)果分組,則集函數(shù)將作用于整個(gè)查詢結(jié)果,即整個(gè)查詢結(jié)果只有一個(gè)函數(shù)值。
例15查詢每個(gè)定單的交易額。 例16查詢每種產(chǎn)品的交易發(fā)生的次數(shù)和交易額,交易量。2對(duì)分組結(jié)果篩選
使用HAVING短語(yǔ),使返回的結(jié)果只包含滿足條件的組。HAVING短語(yǔ)只能放在GROUPBY分組子句中,和分組一起使用。 例17查詢交易額超過(guò)1000元的定單。 例18查詢單次交易量超過(guò)10且交易次數(shù)超過(guò)20次的產(chǎn)品。 什么時(shí)候該用HAVING篩選條件?其實(shí)很簡(jiǎn)單:要使用集函數(shù)的統(tǒng)計(jì)值的就應(yīng)該用HAVING篩選,在WHERE子句不能使用集函數(shù)。3.1.7聯(lián)接查詢1使用WHERE條件聯(lián)接
例19查詢1998年每個(gè)月每個(gè)員工接收訂單的總額。 例20查詢銷往每個(gè)國(guó)家的總金額。 例21查詢每份訂單的公司名稱、產(chǎn)品名稱。2使用JOIN聯(lián)接
FROM<數(shù)據(jù)源表或視圖>[[INNER|LEFTOUTER|RIGHTOUTER|FULL
OUTER|CROSS]JOIN<表名>ON<聯(lián)接條件>…]
內(nèi)連接也叫自然連接,它是組合兩個(gè)表的常用方法。自然連接將兩個(gè)表中的列進(jìn)行比較,將兩個(gè)表中滿足連接條件的行組合起來(lái),作為結(jié)果。語(yǔ)法:
SELECT列
FROM表1[inner]JION表2 ON表1.列=表2.列 試將上面幾例改為內(nèi)聯(lián)接查詢。1.內(nèi)連接(Innerjoin)2外聯(lián)接(outerjoin)在自然連接中,只有在兩個(gè)表中匹配的行才能在結(jié)果集中出現(xiàn)。而在外連接中可以只限制一個(gè)表,而對(duì)另外一個(gè)表不加限制(即所有的行都出現(xiàn)在結(jié)果集中)。外連接分為左外連接、右外連接和全外連接。左外連接是對(duì)連接條件中左邊的表不加限制;右外連接是對(duì)右邊的表不加限制;全外連接對(duì)兩個(gè)表都不加限制,所有兩個(gè)表中的行都會(huì)包括在結(jié)果集中。例22查詢所有客戶的公司名及與其處于同一城市的供應(yīng)商的公司名稱。交叉連接交叉連接也叫非限制連接,它將兩個(gè)表不加任何約束地組合起來(lái)。在數(shù)學(xué)上,就是兩個(gè)表的笛卡爾積。交叉連接后得到的結(jié)果集的行數(shù)是兩個(gè)被連接表的行數(shù)的乘積。3.1.8嵌套子查詢嵌套子查詢的執(zhí)行不依賴于外部嵌套。嵌套子查詢的執(zhí)行過(guò)程為:首先執(zhí)行子查詢,子查詢得到的結(jié)果集不被顯示出來(lái),而是傳給外部查詢,作為外部查詢的條件使用,然后執(zhí)行外部查詢,并顯示查詢結(jié)果。子查詢可以多層嵌套。嵌套子查詢一般也分為兩種:子查詢返回單個(gè)值和子查詢返回一個(gè)值列表。(1)返回單個(gè)值,該值被外部查詢的比較操作(如,=、!=、<、<=、>、>=)使用,該值可以使子查詢中使用集合函數(shù)得到的值。
例23查詢單價(jià)高于平均價(jià)格的所有產(chǎn)品。 例24在pubs數(shù)據(jù)庫(kù)查詢書(shū)號(hào)為pc1035的作者的作者號(hào)、作者姓名。
(2)返回一個(gè)值列表,該列表被外部查詢的IN、NOTIN、ANY或ALL比較操作使用。IN表示屬于,即外部查詢中用于判斷的表達(dá)式的值與子查詢返回的值列表中的一個(gè)值相等;NOTIN表示不屬于。 例25查詢銷售總金額前5名的產(chǎn)品信息。
例26查詢地區(qū)為‘SP’的客戶訂購(gòu)的產(chǎn)品信息。ANY、SOME和ALL用于一個(gè)值與一組值的比較,以“>”為例,ANY表示大于一組值中的任意一個(gè),ALL表示大于一組值中的每一個(gè)。比如,>ANY(1,2,3)相當(dāng)于大于MIN(1,2,3);而>ALL(1,2,3)相當(dāng)于大于MAX(1,2,3)。SOME在SQL-92標(biāo)準(zhǔn)中與ANY含義相同。
例27查詢比最近三個(gè)訂單中任何一個(gè)交易額高的訂單號(hào)。2.相關(guān)子查詢?cè)谙嚓P(guān)子查詢中,子查詢的執(zhí)行依賴于外部查詢,多數(shù)情況下是子查詢的WHERE子句中引用了外部查詢的表。相關(guān)子查詢的執(zhí)行過(guò)程與嵌套子查詢完全不同,嵌套子查詢中子查詢只執(zhí)行一次,而相關(guān)子查詢中的子查詢需要重復(fù)地執(zhí)行。相關(guān)子查詢的執(zhí)行過(guò)程如下:(1)子查詢?yōu)橥獠坎樵兊拿恳恍袌?zhí)行一次,外部查詢將子查詢引用的列的值傳給子查詢。(2)如果子查詢的任何行與其匹配,外部查詢就返回結(jié)果行。(3)再回到第一步,直到處理完外部表的每一行。
1
Exists及NotExists查詢 例28查詢沒(méi)有任何訂購(gòu)的產(chǎn)品的信息。 例29查詢所有由‘5’號(hào)員工處理的產(chǎn)品信息。
2計(jì)算相關(guān)子查詢 例30列出累計(jì)銷售額在50000元以上的產(chǎn)品信息。 例31查詢每種產(chǎn)品的編號(hào)、名稱、銷售數(shù)量。3.1.9合并結(jié)果集
關(guān)系的集合操作主要包括UNION(并)、INTERSECT(交)、MINUS(差)和笛卡積,其中笛卡積通過(guò)交叉聯(lián)接實(shí)現(xiàn)。在標(biāo)準(zhǔn)SQL語(yǔ)言中,并沒(méi)有直接實(shí)現(xiàn)交、差運(yùn)算的方法。并集
例32查詢所有客戶和供應(yīng)商的公司名稱。 注意:使用Orderby排序只能放在查詢最后。交集 例33查詢?cè)?jīng)訂購(gòu)過(guò)20和60號(hào)產(chǎn)品的客戶。差集 例34查詢?cè)?jīng)訂購(gòu)過(guò)20但從沒(méi)有訂購(gòu)過(guò)60號(hào)產(chǎn)品的客戶。3.1.10在查詢的基礎(chǔ)上創(chuàng)建新表使用SELECTINTO語(yǔ)句可以在查詢的基礎(chǔ)上創(chuàng)建新表,SELECTINTO語(yǔ)句首先創(chuàng)建一個(gè)新表,然后用查詢的結(jié)果填充新表。例35查詢每種產(chǎn)品的編號(hào)、銷售數(shù)量并將結(jié)果保存在sales表中。3.2數(shù)據(jù)更新3.2.1添加數(shù)據(jù)1單記錄添加語(yǔ)法:INSERT
INTO表名[(列名列表)]VALUES(值列表)例36向SHIPPERS表中添加一條記錄。2從查詢中批量添加INSERT
INTO表名[(列名列表)]
SELECT查詢例37新建一個(gè)表并將SUPPLIERS及CUSTOMERS中的公司名稱添加到新表中。3.2.2修改數(shù)據(jù)1簡(jiǎn)單修改語(yǔ)句語(yǔ)法:UPDATETABLE表名SET列名=值[,列名=值…][WHERE條件]例38將訂單號(hào)為10248、產(chǎn)品號(hào)為11的訂貨數(shù)量改為20。2使用子查詢修改UPDATE的子查詢可以在SET和WHERE子句中使用。例39修改sales表添加一列銷售總額,并修改數(shù)據(jù)。3.2.3
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年安徽省應(yīng)急廳直屬事業(yè)單位招聘筆試試卷
- 軟件缺陷管理流程試題及答案
- 北海市城市開(kāi)發(fā)投資集團(tuán)有限公司招聘考試真題2024
- 農(nóng)業(yè)綠色生產(chǎn)2025年政策支持與農(nóng)業(yè)生態(tài)環(huán)境保護(hù)政策實(shí)施難點(diǎn)分析報(bào)告
- 未來(lái)政治制度的變革趨勢(shì)與挑戰(zhàn)研究試題及答案
- 2025年影視工業(yè)化制作流程質(zhì)量控制與產(chǎn)業(yè)鏈協(xié)同創(chuàng)新報(bào)告
- 機(jī)電工程氣動(dòng)控制試題及答案
- 機(jī)電工程考試思維導(dǎo)圖及試題與答案
- 機(jī)電工程發(fā)展的全球視角試題及答案
- 教育行業(yè)2025年可持續(xù)發(fā)展目標(biāo)(SDGs)實(shí)踐與未來(lái)人才培養(yǎng)報(bào)告
- 江蘇省無(wú)錫市惠山區(qū)2024年統(tǒng)編版小升初考試語(yǔ)文試卷(含答案解析)
- 手術(shù)室護(hù)理論文范文大全
- JT-T-1134-2017道路客貨運(yùn)運(yùn)輸駕駛員行車操作規(guī)范
- 課前游戲-數(shù)字炸彈-模板可修改
- 2023年湖南省高考化學(xué)真題卷和答案
- 《中式烹調(diào)工藝》課件-熱菜烹調(diào)工藝
- 《高壓電力用戶安全用電》
- 糧食收集裝袋機(jī)結(jié)構(gòu)設(shè)計(jì)說(shuō)明書(shū)
- 工會(huì)專業(yè)知識(shí)考試題庫(kù)
- 產(chǎn)單核李斯特菌講解
- 提高藏族學(xué)生漢語(yǔ)寫(xiě)作能力的方法
評(píng)論
0/150
提交評(píng)論