版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、word 版整理ACCESSACCESS 數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)的 SQLSQL 語(yǔ)句教學(xué)語(yǔ)句教學(xué)1 1、查詢所有記錄:、查詢所有記錄:Select*通常用于快速查看表中的記錄。當(dāng)對(duì)表的結(jié)構(gòu)無(wú)法確切記憶時(shí),或要快速查看表中的記錄時(shí),使用Select*是很方便的。use企業(yè)銷售管理系統(tǒng)Select*from職工2 2、投影查詢:、投影查詢:很多時(shí)候并不需要將所有列的數(shù)據(jù)都顯示出來(lái)。投影查詢就是允許用戶顯示所需要的列。假設(shè)顯示職工表中職工號(hào)、姓名、工資信息,具體操作方法如下。Select職工號(hào),姓名,工資from職工在Select查詢中,還可以按照實(shí)際的需要或自己的喜好安排顯示列的順序,如果要把姓名放到第
2、一列,則代碼如下:Select姓名,職工號(hào),工資from職工3 3、條件查詢:、條件查詢:顯示wh1或wh2倉(cāng)庫(kù)、性別不為女、工資在13002100之間的職工信息。具體操作如下:Select*from職工號(hào)where(倉(cāng)庫(kù)號(hào)=wh1or倉(cāng)庫(kù)號(hào)=wh2)Andnot性別=女a(chǎn)nd工資=1300and工資=2100在這里一定要注意,(倉(cāng)庫(kù)號(hào)=wh1or倉(cāng)庫(kù)號(hào)=wh2)定要加括號(hào),否則就不是原題的意思。4 4、謂詞謂詞 InIn 查詢查詢:在查找特定條件的數(shù)據(jù)時(shí),如果條件較多,就需要用到多個(gè)Or運(yùn)算符,以查找滿足其中任一條的記錄。但使用多個(gè)Or運(yùn)算符,將使Where子句變得過(guò)于冗長(zhǎng),這時(shí)使用In就非
3、常清楚。另外,在后面講解的嵌套查詢中,也必須使用In查詢。下面以顯示zg1、zg2、zg11、zg15的訂購(gòu)單信息為例具體講解一下。使用使用 OrOr 運(yùn)算符運(yùn)算符word 版整理Select*from訂購(gòu)單where職工號(hào)=zglor職工號(hào)=zg2Or職工號(hào)=zgllor職工號(hào)=zgl5使用謂詞使用謂詞 InInUse企業(yè)銷售管理系統(tǒng)Select*from訂購(gòu)單where職工號(hào)in(zgl,zg2,zgll,zg15)在Select語(yǔ)句中,還支持In與Not結(jié)合使用。假設(shè)顯示職工號(hào)不為zgl,zg2,zgll,zg15的訂購(gòu)單信息,具體代碼如下:使用使用 OrOr 運(yùn)算符運(yùn)算符Select*
4、from訂購(gòu)單where職工號(hào)!=zglor職工號(hào)!=zg2Or職工號(hào)!=zgllor職工號(hào)!=zgl5使用謂詞使用謂詞 InInUse企業(yè)銷售管理系統(tǒng)Select*from訂購(gòu)單where職工號(hào)notin(zg1,zg2,zgll,zg15)5 5、模糊、模糊 LikeLike 查詢:查詢:有的時(shí)候,我們不清楚所要查詢的信息,如顯示職工信息,但不能確定該職工的姓名,只知道他姓名中含有“王”字,那該如何查找呢?SQL中提供了Like關(guān)鍵字,使用Like進(jìn)行了查詢時(shí),還要指定通配符。通配符及其含義通配符及其含義通配符通配符含義含義%包含0個(gè)或多個(gè)字符_(下畫線)包含一個(gè)字符指定范圍(如a-z不屬
5、于指定范圍(a-z)word 版整理在SQL語(yǔ)句中,還支持Like與Not結(jié)合使用。假設(shè)顯示姓名中不含有“王”字的職工信息,具體代碼如下:Select*from職工where姓名notlike王在該例中,如果你知道姓名中含有“王”字,并且姓名只有兩個(gè)字,那么可以進(jìn)一步縮小查找范圍,具體代碼如下:Select*from職工where姓名notlike王_這樣就可以查找到姓名中只有兩個(gè)字,并且姓為“王”的職工信息。6 6、空值空值 NULLNULL 查詢查詢:在SQL語(yǔ)句中使用ISNULL來(lái)進(jìn)行是否為空的判斷。下面以顯示性別為空的職工信息為例具體講解一下。Select*from職工where性別i
6、snull假設(shè)顯示性別不為空的職工信息,具體代碼如下:Select*from職工where性別isnotnull7 7、限制范圍限制范圍 Between-AndBetween-And 查詢查詢:在數(shù)據(jù)醫(yī)療隊(duì)引擎查詢中,限制范圍也是經(jīng)常使用的一個(gè)條件。當(dāng)然可以使用大于等于號(hào)、小于等于號(hào)和And運(yùn)算符三者來(lái)完成范圍的限制,但使用Between-And結(jié)構(gòu),會(huì)使SQL更清楚。下面以顯示工資在13001900之間的職工信息為例具體講解一下。BetweenBetween AndAnd 語(yǔ)句語(yǔ)句Select*from職工where工資Between1300And1900大于等于號(hào)、小于等于號(hào)與大于等于號(hào)、
7、小于等于號(hào)與 AndAnd 運(yùn)算符運(yùn)算符Select*from職工where工資=1300And工資=1900在SQL語(yǔ)句中,還支持Between And與Not結(jié)合使用。假設(shè)顯示工資不在13001900之間的職工信息,具體代碼如下:word 版整理BetweenAndBetweenAnd 語(yǔ)句語(yǔ)句Select*from職工where工資notBetween1300And1900大于等于號(hào)、小于等于號(hào)與大于等于號(hào)、小于等于號(hào)與 AndAnd 運(yùn)算符運(yùn)算符Select*from職工where工資=1300And工資=19008 8、 消除重復(fù)字段數(shù)消除重復(fù)字段數(shù)據(jù)據(jù) DistincDistinc
8、t t查詢查詢: 在SQL投影查詢中, 可能會(huì)有許多重復(fù)的數(shù)據(jù), 使用關(guān)鍵字Distinct就可以從結(jié)果集中除去重復(fù)的數(shù)據(jù)。下面以顯示職工的工資信息為例具體講解一下:顯示有重復(fù)的數(shù)據(jù)顯示有重復(fù)的數(shù)據(jù)Select工資from職工顯示無(wú)重復(fù)的數(shù)據(jù)顯示無(wú)重復(fù)的數(shù)據(jù)SelectDistinet工資from職工9 9、單表嵌套查詢:、單表嵌套查詢:就是外層Select語(yǔ)句與內(nèi)層Select語(yǔ)句都來(lái)源于同一張表。下面以顯示倉(cāng)庫(kù)面積大于whl倉(cāng)庫(kù)面積的倉(cāng)庫(kù)信息為例來(lái)講解一下。首先利用Select語(yǔ)句求出whl倉(cāng)庫(kù)的倉(cāng)庫(kù)面積,然后再顯示面積大于該值的倉(cāng)庫(kù)信息。Select*from倉(cāng)庫(kù)where面積(sele
9、ct面積from倉(cāng)庫(kù)where倉(cāng)庫(kù)號(hào)=wh1)嵌套查詢中也可以帶有邏輯運(yùn)算符、謂詞In、Like、Between And結(jié)構(gòu)。假設(shè)顯示whl或wh2倉(cāng)庫(kù)的工資不大于職工zg16工資的職工信息,并要求職工姓名不含有“平”字。首先利用Select語(yǔ)句求出職工zg16的工資,然后再對(duì)姓名進(jìn)行模糊查詢。Select*from職工where工資= (select工資from職工where職工號(hào)=zgl6) and姓名notlike%平%and倉(cāng)庫(kù)號(hào)in(wh1,wh2)1010、多表嵌套查詢多表嵌套查詢:多表嵌套查詢就是外層Select語(yǔ)句與內(nèi)層Select語(yǔ)句來(lái)源于不同的表,但表之間要存在關(guān)系。這也是
10、SQL語(yǔ)句中最重要的查詢。下面以顯示北京地區(qū)的職工信息為例來(lái)講解一下。word 版整理首先利用Select語(yǔ)句求出北京地區(qū)的倉(cāng)庫(kù)號(hào),然后利用倉(cāng)庫(kù)號(hào)再顯示職工信息。use企業(yè)銷售管理系統(tǒng)Select*from職工where倉(cāng)庫(kù)號(hào)in(select倉(cāng)庫(kù)號(hào)fromwhere城市=北京)不僅可以實(shí)現(xiàn)兩個(gè)表的嵌套,還可以實(shí)現(xiàn)多個(gè)表的嵌套,假設(shè)顯示北京地區(qū)的職工的訂購(gòu)單信息。首先利用Select語(yǔ)句得到北京地區(qū)的倉(cāng)庫(kù)號(hào), 然后利用得到的倉(cāng)庫(kù)號(hào)得到該倉(cāng)庫(kù)中的職工號(hào), 再利用得到的職工號(hào)得到職工的訂購(gòu)單信息。Select*from訂購(gòu)單where職工號(hào)in (Select職工號(hào)from職工where倉(cāng)庫(kù)號(hào)in
11、 (select倉(cāng)庫(kù)號(hào)from倉(cāng)庫(kù)where城市=北京)多表嵌套查詢中也可以帶有邏輯運(yùn)算符、謂詞In、Like、Between、And結(jié)構(gòu)。假設(shè)顯示北京地區(qū)的職工的訂購(gòu)單信息,并且職工的工資大于1200,訂購(gòu)日期為2003年9月3日2006年1月1日。Select*from訂購(gòu)單where職工號(hào)in (Select職工號(hào)from職工where工資1200and倉(cāng)庫(kù)號(hào)in (select倉(cāng)庫(kù)號(hào)from倉(cāng)庫(kù)where城市=北京)and訂購(gòu)日期between2003-09-03and2006-01-011111、單級(jí)排序查詢:、單級(jí)排序查詢:排序的關(guān)鍵字是Orderby,默認(rèn)狀態(tài)下是升序,關(guān)鍵字是A
12、sc。降序排列的關(guān)鍵字是Desc。排序字段可以是數(shù)值型,也可以是字符型、日期時(shí)間型。下面以按工資從高到低顯示職工信息為例來(lái)講解一下。Select*from職工Orderby工資desc在排序查詢中還可以帶有邏輯運(yùn)算符、謂詞In、Like、Between、And結(jié)構(gòu)。假設(shè)顯示wh1或wh2倉(cāng)庫(kù)的,工資不大于職工zg16工資的職工信息,并要求職工姓名不含有“平”字,按工資從低到高顯示。首先利用Select語(yǔ)句求出職工zg16的工資,然后再對(duì)姓名進(jìn)行模糊查詢,最后再排序。Select*from職工where工資=(Select工資from職工where職工號(hào)=zg16)and姓名notlike%平a
13、nd倉(cāng)庫(kù)號(hào)in(wh1,wh2)orderby工資1212、多級(jí)排序查詢:、多級(jí)排序查詢:按照一列進(jìn)行排序后,如果該列有重復(fù)的記錄值,則重復(fù)記錄值這部分就沒(méi)有進(jìn)行word 版整理有效的排序,這就需要再附加一個(gè)字段,作為第二次排序的標(biāo)準(zhǔn),對(duì)沒(méi)有排開的記錄進(jìn)行再排列。下面以按工資從高到低顯示職工信息為例來(lái)講解一下。單級(jí)排序,按工資降序。Select*from職工Orderby工資desc多級(jí)排序,先按工資降序,再按職工ID升序。Select*from職工Orderby工資desc,職工IDasc1313、與別名一起使用的統(tǒng)計(jì)函數(shù):、與別名一起使用的統(tǒng)計(jì)函數(shù):在實(shí)際編程中,有時(shí)候需要知道所有記錄某項(xiàng)
14、值的總和、平均值、最大值等,這時(shí)就要用到統(tǒng)計(jì)函數(shù)查詢。常用的統(tǒng)計(jì)函數(shù)共有6個(gè)。統(tǒng)計(jì)函數(shù)及其意義統(tǒng)計(jì)函數(shù)及其意義統(tǒng)計(jì)函數(shù)統(tǒng)計(jì)函數(shù)含義含義COUNT(*)統(tǒng)計(jì)選擇的記錄的個(gè)數(shù)COUNT()統(tǒng)計(jì)特定列中值的個(gè)數(shù)SUM()計(jì)算總和(必須是數(shù)值型字段)AVG()計(jì)算平均值(必須是數(shù)值型字段)MAX()確定最大值NIN()確定最小值在使用統(tǒng)計(jì)函數(shù)時(shí),還要注意COUNT()、SUM()、AVG()可以使用DISTINCT關(guān)鍵字,以在計(jì)算機(jī)中不包含重復(fù)的行。 而對(duì)于MAX ()、MIN ()、COUNT (*) ,由于不會(huì)改變其結(jié)果, 因此沒(méi)有必要使用DISTINCT。利用Select語(yǔ)句顯示統(tǒng)計(jì)值是沒(méi)有列名
15、的,下面以顯示職工的最大值、最小值、工資總和、平均工資、職工人數(shù)為例來(lái)講解一下。word 版整理Selectmax(工資),min(工資),SUM(工資),avg(工資),count(*)from職工這時(shí)會(huì)發(fā)現(xiàn)統(tǒng)計(jì)值沒(méi)有列名,現(xiàn)在來(lái)給統(tǒng)計(jì)字段添加列名。Selectmax(工資)as最大工資,min(工資)as最小工資,SUM(工資)as工資總和,avg(工資)as平均工資,count(*)as職工人數(shù)from職工在統(tǒng)計(jì)函數(shù)中還可以加條件,假設(shè)顯示工資大于1500的職工的最大值、最小值、工資總和、平均工資、職工人數(shù)信息。Selectmax(工資)as最大工資,min(工資)as最小工資,SUM(
16、工資)as工資總和,avg(工資)as平均工資,count(*)as職工人數(shù)from職工where工資15001414、帶有統(tǒng)計(jì)函數(shù)的嵌套查詢帶有統(tǒng)計(jì)函數(shù)的嵌套查詢:還可以利用統(tǒng)計(jì)函數(shù)得到的數(shù)據(jù)作為Select查詢語(yǔ)句的條件進(jìn)行查詢。下面以顯示工資大于所有職工平均值的職工信息為例來(lái)講解一下。Select*from職工where工資(selectavg(工資)from職工)在統(tǒng)計(jì)函數(shù)查詢中可以帶有比較運(yùn)算符、邏輯運(yùn)算符、In、Between And等。假設(shè)顯示工資大于whl或wh2倉(cāng)庫(kù)中職工平均工資,并且職工姓名不含有“亮”字的職工信息。Select*from職工where工資 (selecta
17、vg (工資)from職工where倉(cāng)庫(kù)號(hào)=whlor倉(cāng)庫(kù)號(hào)=wh2)and姓名notlike%亮1515、統(tǒng)計(jì)函數(shù)字段顯示在表字段中及運(yùn)算字段:、統(tǒng)計(jì)函數(shù)字段顯示在表字段中及運(yùn)算字段:如果在職工表中添加一個(gè)職工平均工資值字段,這就對(duì)實(shí)際編程有很大的意義,即可以利用平均字段進(jìn)行運(yùn)算,大大提高編程速度。下面以在職工表中添加平均工資為例為講解一下。Select職工.*,(selectavg(工資)from職工)as平均工資from職工在職工表中添加了一個(gè)平均工資字段,即在Select查詢字段中添加了一個(gè)Select子查詢。在Select查詢中,還可以計(jì)算出每名職工的工資與所有職工平均工資之差,具體
18、操作如下:Select職工.*(selectavg(工資)from職工)as平均工資,工資一(selectavg(工資)from職工)as平均word 版整理工資的差from職工1616、分組查詢分組查詢:使用GR0UPBY分組查詢,要注意分組的標(biāo)準(zhǔn)一定要有意義,如顯示不同倉(cāng)庫(kù)的平均工資,顯示不同職工的最大訂單金額等。 如果顯示不同職工的平均工資那就沒(méi)有意義了。 下面顯示不同倉(cāng)庫(kù)的平均工資、工資和、最大工資、最小工資、工資人數(shù)信息為例來(lái)講解一下。Select倉(cāng)庫(kù)號(hào),max(工資)as最大工資,min(工資)as最小工資,sum(工資)as工資總和,avg(工資)as平均工資,count(*)a
19、s職工人數(shù)from職工groupby倉(cāng)庫(kù)號(hào)在分組查詢中還可以帶有邏輯運(yùn)算符、謂詞In、Like、Between And結(jié)構(gòu)。假設(shè)顯示工資大于zgl職工工資的不同倉(cāng)庫(kù)的平均工資、工資和、最大工資、最小工資、工資人數(shù)信息。首先利用Select語(yǔ)句求出職工zgl的工資,然后再分組顯示統(tǒng)計(jì)信息。Select倉(cāng)庫(kù)號(hào),max(工資)as最大工資,min(工資)as最小工資,sum(工資)as工資總和,avg(工資)as平均工資,count(*)as職工人數(shù)from職工where工資(Select工資from職工where職工號(hào)=zg1)groupby倉(cāng)庫(kù)號(hào)1717、 帶有帶有 HavingHaving 的
20、分組查詢的分組查詢: 分組以前的條件, 要用Where關(guān)鍵字, 而分組之后的條件則要使用Having關(guān)鍵字。下面以顯示不同倉(cāng)庫(kù)的平均工資、工資和、最大工資、最小工資、工資人數(shù)信息,但要求該倉(cāng)庫(kù)平均工資大于1760為例來(lái)講解一下。Select倉(cāng)庫(kù)號(hào),max(工資)as最大工資,min(工資)as最小工資,sum(工資)as工資總和,avg(工資)as平均工資,count(*)as職工人數(shù)from職工groupby倉(cāng)庫(kù)號(hào)havingavg(工資)1760在分組查詢的Having條件中還可以帶有邏輯運(yùn)算符、謂詞In、Like、Between And結(jié)構(gòu)。假設(shè)顯示不同倉(cāng)庫(kù)的平均工資、 工資和、 最大工
21、資、 最小工資、 工資人數(shù)信息, 但要求該倉(cāng)庫(kù)的平均工資大于1760,最大工資與最小工資之差在380800之間。Select倉(cāng)庫(kù)號(hào),max(工資)as最大工資,min(工資)as最小工資,sum(工資)as工資總和,avgword 版整理(工資)as平均工資,count(*)as職工人數(shù)from職工groupby倉(cāng)庫(kù)號(hào)havingavg(工資)1760andmax(工資)一min(工資)between380and8001818、帶有分組的嵌套查詢:、帶有分組的嵌套查詢:還可以利用分組得到的數(shù)據(jù)作為Select查詢語(yǔ)句的條件進(jìn)行查詢。下面以顯示職工所在倉(cāng)庫(kù)的最大工資與最小工資之差在380800之
22、間的職工所在倉(cāng)庫(kù)信息為例為講解一下。先求出職工所在倉(cāng)庫(kù)的最大工資與最小工資之差在380800之間的職工所在的倉(cāng)庫(kù)號(hào), 再利用這個(gè)倉(cāng)庫(kù)號(hào)顯示倉(cāng)庫(kù)信息。Select*from倉(cāng)庫(kù),where倉(cāng)庫(kù)號(hào)in(Select倉(cāng)庫(kù)號(hào)from職工groupby倉(cāng)庫(kù)號(hào)havingdmax(工資)一min(工資)between380and8001919、內(nèi)外層嵌套實(shí)現(xiàn)分組功能:、內(nèi)外層嵌套實(shí)現(xiàn)分組功能:利用groupby分組顯示統(tǒng)計(jì)字段信息,有很多字段不能顯示。如顯示不同倉(cāng)庫(kù)的平均工資信息,在這個(gè)查詢中只能顯示倉(cāng)庫(kù)號(hào),不能顯示職工號(hào)及職工的工資。因?yàn)椴煌瑐}(cāng)庫(kù)的平均工資,有幾個(gè)倉(cāng)庫(kù)就顯示幾條平均工資,而每個(gè)倉(cāng)庫(kù)中的職
23、工則有很多。下面以顯示不同職工經(jīng)手訂購(gòu)單金額最大的訂單信息為例來(lái)講解一下。在這里應(yīng)該邊求出每名職工訂購(gòu)單金額的最大值,邊顯示該職工所對(duì)應(yīng)的這條訂購(gòu)單信息。具體代碼如下:Selecta.*from訂購(gòu)單awhere金額=(selectmax(金額)from訂購(gòu)單where職工號(hào)=&.職工號(hào))注意:上面語(yǔ)句中的訂購(gòu)單注意:上面語(yǔ)句中的訂購(gòu)單 a a 是給這個(gè)訂購(gòu)單起的一個(gè)別名,大家可以把它看成就其實(shí)就是給這個(gè)訂購(gòu)單起的一個(gè)別名,大家可以把它看成就其實(shí)就是訂購(gòu)單的一張復(fù)制的表,在這里運(yùn)用它只是為了使內(nèi)外層的嵌套更清晰、更容易理解。是訂購(gòu)單的一張復(fù)制的表,在這里運(yùn)用它只是為了使內(nèi)外層的嵌套更清
24、晰、更容易理解。2020、分組查詢字段顯示在表字段中及運(yùn)算字段:、分組查詢字段顯示在表字段中及運(yùn)算字段:如果在職工表中添加職工所在倉(cāng)庫(kù)的平均工資值字段,這就對(duì)實(shí)際編程有很大的意義,即可以利用平均字段進(jìn)行運(yùn)算,大大提高編程速度。下面以在職工表中添加職工所在的倉(cāng)庫(kù)的平均工資字段為例來(lái)講解一下。word 版整理Selecta.*,(Selectavg(工資)from職工where倉(cāng)庫(kù)號(hào)=a.倉(cāng)庫(kù)號(hào))as所在倉(cāng)庫(kù)的平均工資from職工a在Select查詢中,還可以計(jì)算出每名職工的工資與職工所在倉(cāng)庫(kù)的平均工資之差,具體操作如下:Selecta.*,(Selectavg(工資)from職工where倉(cāng)庫(kù)號(hào)
25、=a.倉(cāng)庫(kù)號(hào))as所在倉(cāng)庫(kù)的平均工資,工資-(Selectavg(工資)from職工where倉(cāng)庫(kù)號(hào)=a.倉(cāng)庫(kù)號(hào))as所在倉(cāng)庫(kù)的平均工資之差from職工a2121、ExistsExists 謂詞查詢:謂詞查詢:其實(shí)In就是謂詞查詢,還有謂詞Exists與Exists,這兩個(gè)謂詞實(shí)現(xiàn)的功能是相同的, 只是寫法不同。In多用于嵌套子查詢語(yǔ)句中, 而Exists多用于判斷Select語(yǔ)句是否返回查詢結(jié)果。常用量詞有Any、All和Some是同義詞。在進(jìn)行比較運(yùn)算時(shí),只要子查詢中有一行能使結(jié)果為真,結(jié)果就為真。而All則要求子查詢中所有行都使結(jié)果為真時(shí),結(jié)果才為真。下面以顯示那些倉(cāng)庫(kù)中還沒(méi)有職工的倉(cāng)庫(kù)
26、信息為例,講解一下In謂詞與Exists謂詞在代碼上的不同。用用 ExistsExists 謂詞實(shí)現(xiàn):謂詞實(shí)現(xiàn):Select*from倉(cāng)庫(kù)wherenotExists(Select*from職工where倉(cāng)庫(kù)號(hào)二倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào))用用 InIn 謂詞實(shí)現(xiàn):謂詞實(shí)現(xiàn):Select*from倉(cāng)庫(kù)where倉(cāng)庫(kù)號(hào)notin(Select倉(cāng)庫(kù)號(hào)from職工)2222AnyAny 量詞查詢量詞查詢: :Any量詞查詢, 在進(jìn)行比較運(yùn)算時(shí), 只要子查詢中有一行能使結(jié)果為真, 則結(jié)果即為真。下面就以顯示工資大于等于wh2倉(cāng)庫(kù)中任一名職工工資的職工信息為例,講解一下Any量詞的應(yīng)用。用用 AnyAny 量詞實(shí)現(xiàn):
27、量詞實(shí)現(xiàn):Select*from職工where工資=any(Select工資from職工where倉(cāng)庫(kù)號(hào)=wh2)使用統(tǒng)計(jì)函數(shù)實(shí)現(xiàn):使用統(tǒng)計(jì)函數(shù)實(shí)現(xiàn):Select*from職工where工資=(Selectmin(工資)from職工where倉(cāng)庫(kù)號(hào)=wh2)2323、A11A11 量詞查詢量詞查詢:All量詞查詢,要求子查詢中所有行都使結(jié)果為真時(shí),結(jié)果才為真。下面就以顯示工資大word 版整理于等于whl倉(cāng)庫(kù)中所有職工工資的職工信息為例,講解一下All量詞的應(yīng)用。用用 AnyAny 量詞實(shí)現(xiàn):量詞實(shí)現(xiàn):Select*from職工where工資=All(Select工資from職工where倉(cāng)庫(kù)
28、號(hào)=whl)使用統(tǒng)計(jì)函數(shù)實(shí)現(xiàn):使用統(tǒng)計(jì)函數(shù)實(shí)現(xiàn):Select*from職工where工資=(SelectMAX(工資)from職工where倉(cāng)庫(kù)號(hào)=whl)前面講解的量詞查詢都可以用統(tǒng)計(jì)函數(shù)代替,但有些查詢是不能用統(tǒng)計(jì)函數(shù)代替的。下面以顯示工資大于所有不同倉(cāng)庫(kù)的平均工資的職工信息為例為講解一下。Select*from職工where工資all(Selectavg(工資)from職工groupby倉(cāng)庫(kù)號(hào))該題用統(tǒng)計(jì)函數(shù)就無(wú)法解決。2424、顯示部分記錄的、顯示部分記錄的 TopTop 查詢:查詢:在編程中,有時(shí)只需顯示滿足條件的前幾條記錄,這時(shí)就可以使用Top關(guān)鍵字??梢灾苯邮褂肨op數(shù)字,顯示指
29、定條數(shù)記錄;也可以使用Top數(shù)字Percent,顯示所有滿足條件記錄的前百分之幾條記錄。下面以顯示工資最高的前三條職工信息為例來(lái)講解一下。Selecttop3*from職工orderby工資desc2525、保存查詢保存查詢:利用Into語(yǔ)句可以把查詢的結(jié)果保存成一張新表。下面就以備份“職工”表為例講解一下保存查詢。Use企業(yè)銷售管理系統(tǒng)Select*into職工備份from職工這樣就生成一張新表,表名為“職工備份”。2626、集合的并運(yùn)算集合的并運(yùn)算:SQL支持集合的并運(yùn)算(Union),即可以將兩個(gè)Selec語(yǔ)句的查詢結(jié)果通過(guò)并運(yùn)算合word 版整理并成一個(gè)查詢結(jié)果。為了進(jìn)行并運(yùn)算,要求這
30、樣的兩個(gè)查詢結(jié)果具有相同的字段個(gè)數(shù),并且對(duì)應(yīng)的字段的值要出自同一個(gè)值域,即具有相同的數(shù)據(jù)類型和取值范圍。Select*from倉(cāng)庫(kù)where城市=北京UnionSelect*from倉(cāng)庫(kù)where城市=上海2727、集合的交運(yùn)算:、集合的交運(yùn)算:SQL支持集合的交運(yùn)算(Intersect),即可以將兩個(gè)Selec語(yǔ)句的查詢結(jié)果通過(guò)交運(yùn)算合并成一個(gè)查詢結(jié)果。為了進(jìn)行交運(yùn)算,要求這樣的兩個(gè)查詢結(jié)果具有相同的字段個(gè)數(shù),并且對(duì)應(yīng)的字段的值要出自同一個(gè)值域,即具有相同的數(shù)據(jù)類型和取值范圍。Select倉(cāng)庫(kù)號(hào)from倉(cāng)庫(kù)IntersectSelect倉(cāng)庫(kù)號(hào)from職工注意它們對(duì)集合的差運(yùn)算不支持。2828
31、、多表連接查詢:、多表連接查詢:多表連接查詢就是將多個(gè)表中的數(shù)據(jù)結(jié)合到一起的查詢,即連接操作可以在一個(gè)Select語(yǔ)句中完成從我個(gè)表中查找和處理數(shù)據(jù)。 使用連接的列必須是可連接的, 即它們具有相同的數(shù)據(jù)類型、相同的意義。使用連接的列,列名可以相同,也可以不同。2929、笛卡兒積笛卡兒積:有的時(shí)候,如果連接條件沒(méi)有設(shè)置好,或者沒(méi)有設(shè)置連接條件,則結(jié)果將包含太多的行,這就是由笛卡兒積造成的。從原理上來(lái)講,連接首先將形成表的笛卡兒積,即形成用于連接的表中所有的行的組合。下面以倉(cāng)庫(kù)表與職工表連接為例為講解一下。Select*from職工,倉(cāng)庫(kù)這是從兩張表中顯示所有字段,所以字段有重復(fù),并且產(chǎn)生了90條
32、記錄,原因是倉(cāng)庫(kù)表中有5條記錄,職工表有18條記錄,所以連接的結(jié)果是18x5=90條記錄。用于連接的表越多,則笛卡兒積的結(jié)果將越大。word 版整理3030、多表連接:、多表連接:在進(jìn)行多表連接時(shí),一定要注意連接條件,下面以倉(cāng)庫(kù)表與職工表連接為例來(lái)講解一下多表連接。Select*from職工,倉(cāng)庫(kù)where職工.倉(cāng)庫(kù)號(hào)=倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào)這時(shí)顯示的記錄就沒(méi)有那么多了,只顯示18條記錄,并且發(fā)現(xiàn)兩張表的倉(cāng)庫(kù)號(hào)是相對(duì)應(yīng)的。假設(shè)顯示工資大于1500,面積大于600的城市與姓名信息。Select城市,姓名*from職工,倉(cāng)庫(kù)where職工.倉(cāng)庫(kù)號(hào)=倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào)and工資1500and面積6003131、超連
33、接查詢:、超連接查詢:超連接查詢也是連接查詢,所以必須有兩張或兩張以上的表。超連接查詢共有4種:內(nèi)連接查詢、左連接查詢、右連接查詢、全連接查詢。使用超連接查詢不僅可以把滿足條件的記錄顯示出來(lái),還可以把一部分不滿足條件的記錄以NULL顯示出來(lái)。1 1)內(nèi)連接查詢:)內(nèi)連接查詢:只有滿足連接條件的記錄才出現(xiàn)在查詢結(jié)果集中。下面以顯示面積大于600的倉(cāng)庫(kù)號(hào)、職工號(hào)、城市、面積、工資信息為例為講解一下內(nèi)連接:超連接:Select倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào),職工號(hào),城市,面積,工資from倉(cāng)庫(kù)innerjoin職工on職工.倉(cāng)庫(kù)號(hào)=倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào)and面積600普通連接:Select倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào),職工號(hào),城市,面積,工
34、資from職工,倉(cāng)庫(kù)where職工.倉(cāng)庫(kù)號(hào)=倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào)and面積6002 2)左連接查詢:)左連接查詢:除滿足連接條件的記錄顯示外,第一張表中不滿足條件的記錄也出現(xiàn)在查詢結(jié)果集中。下面以顯示面積大于600的倉(cāng)庫(kù)號(hào)、職工號(hào)、城市、面積、工資信息為例為講解一下左連接。Select倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào),職工號(hào),城市,面積,工資from倉(cāng)庫(kù)leftjoin職工on職工.倉(cāng)庫(kù)號(hào)=倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào)and面積600word 版整理3 3)右連接查詢:)右連接查詢:除滿足連接條件的記錄顯示外,第二張表中不滿足條件的記錄也出現(xiàn)在查詢結(jié)果集中。下面以顯示面積大于600的倉(cāng)庫(kù)號(hào)、職工號(hào)、城市、面積、工資信息為例為講解一下右連
35、接。Select倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào),職工號(hào),城市,面積,工資from倉(cāng)庫(kù)rightjoin職工on職工.倉(cāng)庫(kù)號(hào)=倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào)and面積6004 4)全連接查詢?nèi)B接查詢:除滿足連接條件的記錄顯示外,兩張表中不滿足條件的記錄也出現(xiàn)在查詢結(jié)果集中。下面以顯示面積大于600的倉(cāng)庫(kù)號(hào)、職工號(hào)、城市、面積、工資信息為例為講解一下全連接。Select倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào),職工號(hào),城市,面積,工資from倉(cāng)庫(kù)fulljoin職工on職工.倉(cāng)庫(kù)號(hào)=倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào)and面積6005 5)多表超連接查詢多表超連接查詢:前面講解了兩個(gè)表的超連接,那么如果是3張表或更多張表該如何實(shí)現(xiàn)超鏈接呢?下面以顯示面積大于600的倉(cāng)庫(kù)號(hào)、職工號(hào)
36、、城市、面積、工資、金額信息為例為講解一下多表超連接。要顯示的字段信息來(lái)源于3張表,倉(cāng)庫(kù)表、職工表、訂購(gòu)單表,這里實(shí)現(xiàn)倉(cāng)庫(kù)表與職工表的左連接,職工表與訂購(gòu)單表的右連接。Select倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào),職工號(hào),城市,面積,工資,金額from倉(cāng)庫(kù)leftjoin職工on職工.倉(cāng)庫(kù)號(hào)=倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào)rightjoin訂購(gòu)單on職工.職工號(hào)=訂購(gòu)單.職工號(hào)and面積6003232、InsertInsert 插入語(yǔ)句:插入語(yǔ)句:向數(shù)據(jù)庫(kù)表中插入數(shù)據(jù)是最常用的功能:1 1)指定所有列:)指定所有列:Insertinto倉(cāng)庫(kù)(倉(cāng)庫(kù)號(hào),城市,面積,創(chuàng)建時(shí)間)values(wh6,鄭州,800,2005T2-01)按下
37、鍵盤上的F5鍵,會(huì)顯示(1行受影響),這表示已成功地插入一條記錄。再在數(shù)據(jù)庫(kù)引擎查詢文檔中輸入“Select*from倉(cāng)庫(kù)”,然后按下鍵盤上的F5鍵,就可以執(zhí)行該SQL語(yǔ)句,這樣就可以在查詢結(jié)果上看到你插入的記錄。在這里要注意,倉(cāng)庫(kù)ID是自動(dòng)編號(hào),所以不能插入。其實(shí)上面的代碼還可以省略表后面的字段,這樣也可以成功地插入記錄。word 版整理Insertinto倉(cāng)庫(kù)values(wh6,鄭州,800,2005T2-01)2 2)指定部分列:)指定部分列:下面以向倉(cāng)庫(kù)表中添加一條記錄為例來(lái)講解一下指定部分列。Insertinto倉(cāng)庫(kù)(倉(cāng)庫(kù)號(hào),面積)values(wh7,800)上述代碼也可以這樣來(lái)寫:Insertinto倉(cāng)庫(kù)values(wh7,null,800,null)或Insertinto倉(cāng)庫(kù)(倉(cāng)庫(kù)號(hào),城市,面積,創(chuàng)建時(shí)間)values(wh7,null,800,nul)3 3)帶有子查詢的插入語(yǔ)句帶有子查詢的插入語(yǔ)句:使用帶
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江省湖州市長(zhǎng)興縣南太湖聯(lián)盟2024-2025學(xué)年高一上學(xué)期1月期末地理試題(含答案)
- 第9章 分式 綜合素質(zhì)評(píng)價(jià)(含答案)2024-2025學(xué)年滬科版七年級(jí)數(shù)學(xué)下冊(cè)
- 04年真題答案 (1)法律法規(guī)
- 2024運(yùn)輸居間合同
- 2024設(shè)備租賃合作協(xié)議范本
- 2025年度內(nèi)蒙古草原生態(tài)旅游承包經(jīng)營(yíng)合同協(xié)議書范本3篇
- 2025年度城市綠化工程苗木采購(gòu)合同進(jìn)度監(jiān)督及驗(yàn)收規(guī)范3篇
- 福建省南平市來(lái)舟中學(xué)2020-2021學(xué)年高二語(yǔ)文期末試題含解析
- 福建省南平市建陽(yáng)水吉中學(xué)高二語(yǔ)文模擬試卷含解析
- 2024版離婚財(cái)產(chǎn)分配合同3篇
- X市科協(xié)領(lǐng)導(dǎo)班子2021年工作總結(jié)
- 2024至2030年中國(guó)汽摩配行業(yè)發(fā)展?fàn)顩r及競(jìng)爭(zhēng)格局分析報(bào)告
- 國(guó)家開放大學(xué)《理工英語(yǔ)2》形考任務(wù)1-8參考答案
- 建筑公司證書津貼支付管理辦法
- 招標(biāo)代理機(jī)構(gòu)選取技術(shù)標(biāo)投標(biāo)方案(技術(shù)方案)
- 經(jīng)橈動(dòng)脈全腦血管造影術(shù)圍手術(shù)期護(hù)理
- 北師大版本八年級(jí)上冊(cè)第一章單元測(cè)試卷(A卷)【含答案】
- 2025屆高考政治一輪復(fù)習(xí):統(tǒng)編版必修4《哲學(xué)與文化》必背知識(shí)點(diǎn)考點(diǎn)提綱
- 開展醫(yī)院安全應(yīng)急演練工作計(jì)劃三篇
- 宜賓市敘州區(qū)2021-2022學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)試題
- 全國(guó)生態(tài)環(huán)境監(jiān)測(cè)專業(yè)技術(shù)人員大比武理論試題集 第八章 自動(dòng)監(jiān)測(cè)
評(píng)論
0/150
提交評(píng)論