MicrosoftAccess數(shù)據(jù)庫(kù)中SQL語(yǔ)句大全_第1頁(yè)
MicrosoftAccess數(shù)據(jù)庫(kù)中SQL語(yǔ)句大全_第2頁(yè)
MicrosoftAccess數(shù)據(jù)庫(kù)中SQL語(yǔ)句大全_第3頁(yè)
MicrosoftAccess數(shù)據(jù)庫(kù)中SQL語(yǔ)句大全_第4頁(yè)
MicrosoftAccess數(shù)據(jù)庫(kù)中SQL語(yǔ)句大全_第5頁(yè)
已閱讀5頁(yè),還剩10頁(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、ACCESS數(shù)據(jù)庫(kù)的SQL語(yǔ)句教學(xué) 引子:如何找到ACCESS數(shù)據(jù)庫(kù)的SQL視圖: 1)  單擊下圖左側(cè)的 : 2)單擊上圖頂部的,彈出如下圖對(duì)話框:  5)單擊“關(guān)閉”,此時(shí)在菜單中的文件菜單下面出現(xiàn)一個(gè)SQL的下拉框;6)在“SQL”下拉框中選擇如下圖所示中的“SQL視圖即可”。   1、查詢所有記錄:Select *通常用于快速查看表中的記錄。當(dāng)對(duì)表的結(jié)構(gòu)無(wú)法確切記憶時(shí),或要快速查看表中的記錄時(shí),使用Select *是很方便的。use 企業(yè)銷售管理系統(tǒng)Select * from 職工2、投影查詢:很多時(shí)候并不

2、需要將所有列的數(shù)據(jù)都顯示出來(lái)。投影查詢就是允許用戶顯示所需要的列。假設(shè)顯示職工表中職工號(hào)、姓名、工資信息,具體操作方法如下。Select 職工號(hào),姓名,工資 from 職工在Select查詢中,還可以按照實(shí)際的需要或自己的喜好安排顯示列的順序,如果要把姓名放到第一列,則代碼如下:Select姓名, 職工號(hào),工資 from 職工3、條件查詢:顯示wh1或wh2倉(cāng)庫(kù)、性別不為女、工資在13002100之間的職工信息。具體操作如下:Select * from職工號(hào) where(倉(cāng)庫(kù)號(hào)=wh1 or倉(cāng)庫(kù)號(hào)=wh2)And not 性別=女 and 工資>=1300 and 工資工資<=21

3、00在這里一定要注意,(倉(cāng)庫(kù)號(hào)=wh1 or倉(cāng)庫(kù)號(hào)=wh2)一定要加括號(hào),否則就不是原題的意思。4、謂詞In查詢:在查找特定條件的數(shù)據(jù)時(shí),如果條件較多,就需要用到多個(gè)Or運(yùn)算符,以查找滿足其中任一條的記錄。但使用多個(gè)Or運(yùn)算符,將使Where子句變得過(guò)于冗長(zhǎng),這時(shí)使用In就非常清楚。另外,在后面講解的嵌套查詢中,也必須使用In查詢。下面以顯示zg1、zg2、zg11、zg15的訂購(gòu)單信息為例具體講解一下。使用Or運(yùn)算符Select * from訂購(gòu)單 where 職工號(hào)=zg1 or職工號(hào)=zg2)Or職工號(hào)=zg11 or職工號(hào)=zg15使用謂詞InUse 企業(yè)銷售管理系統(tǒng)Select *

4、from訂購(gòu)單 where 職工號(hào) in(zg1, zg2, zg11, zg15)在Select語(yǔ)句中,還支持In與Not結(jié)合使用。假設(shè)顯示職工號(hào)不為zg1, zg2, zg11, zg15的訂購(gòu)單信息,具體代碼如下:使用Or運(yùn)算符Select * from訂購(gòu)單 where 職工號(hào)!=zg1 or職工號(hào)!=zg2)Or職工號(hào)!=zg11 or職工號(hào)!=zg15使用謂詞InUse 企業(yè)銷售管理系統(tǒng)Select * from訂購(gòu)單 where 職工號(hào) not in(zg1, zg2, zg11, zg15)5、模糊Like查詢:有的時(shí)候,我們不清楚所要查詢的信息,如顯示職工信息,但不能確定該職

5、工的姓名,只知道他姓名中含有“王”字,那該如何查找呢?SQL中提供了Like關(guān)鍵字,使用Like進(jìn)行了查詢時(shí),還要指定通配符。通 配 符 及 其 含 義通配符含 義%包含0個(gè)或多個(gè)字符_(下畫線)包含一個(gè)字符指定范圍(如a-z不屬于指定范圍(a-z)在SQL語(yǔ)句中,還支持Like與Not結(jié)合使用。假設(shè)顯示姓名中不含有“王”字的職工信息,具體代碼如下:Select * from職工 where 姓名 not like王%在該例中,如果你知道姓名中含有“王”字,并且姓名只有兩個(gè)字,那么可以進(jìn)一步縮小查找范圍,具體代碼如下:Select * from職工 where 姓名 not like王_這樣就

6、可以查找到姓名中只有兩個(gè)字,并且姓為“王”的職工信息。6、空值NULL查詢:在SQL語(yǔ)句中使用IS NULL來(lái)進(jìn)行是否為空的判斷。下面以顯示性別為空的職工信息為例具體講解一下。Select * from職工 where 性別 is null假設(shè)顯示性別不為空的職工信息,具體代碼如下:Select * from職工 where 性別 is not null7、限制范圍BetweenAnd查詢:在數(shù)據(jù)醫(yī)療隊(duì)引擎查詢中,限制范圍也是經(jīng)常使用的一個(gè)條件。當(dāng)然可以使用大于等于號(hào)、小于等于號(hào)和And運(yùn)算符三者來(lái)完成范圍的限制,但使用BetweenAnd結(jié)構(gòu),會(huì)使SQL更清楚。下面以顯示工資在1300190

7、0之間的職工信息為例具體講解一下。BetweenAnd語(yǔ)句Select * from職工 where 工資Between 1300 And 1900大于等于號(hào)、小于等于號(hào)與And運(yùn)算符Select * from職工 where 工資>=1300 And 工資<=1900在SQL語(yǔ)句中,還支持BetweenAnd與Not結(jié)合使用。假設(shè)顯示工資不在13001900之間的職工信息,具體代碼如下:BetweenAnd語(yǔ)句Select * from職工 where 工資not Between 1300 And 1900大于等于號(hào)、小于等于號(hào)與And運(yùn)算符Select * from職工 whe

8、re 工資<=1300 And 工資>=19008、消除重復(fù)字段數(shù)據(jù)Distinct查詢:在SQL投影查詢中,可能會(huì)有許多重復(fù)的數(shù)據(jù),使用關(guān)鍵字Distinct就可以從結(jié)果集中除去重復(fù)的數(shù)據(jù)。下面以顯示職工的工資信息為例具體講解一下:顯示有重復(fù)的數(shù)據(jù)Select 工資 from職工顯示無(wú)重復(fù)的數(shù)據(jù)Select Distinct工資 from職工9、單表嵌套查詢:就是外層Select語(yǔ)句與內(nèi)層Select語(yǔ)句都來(lái)源于同一張表。下面以顯示倉(cāng)庫(kù)面積大于wh1倉(cāng)庫(kù)面積的倉(cāng)庫(kù)信息為例來(lái)講解一下。首先利用Select語(yǔ)句求出wh1倉(cāng)庫(kù)的倉(cāng)庫(kù)面積,然后再顯示面積大于該值的倉(cāng)庫(kù)信息。Select

9、* from倉(cāng)庫(kù) where 面積>(select 面積 from 倉(cāng)庫(kù) where 倉(cāng)庫(kù)號(hào)=wh1)嵌套查詢中也可以帶有邏輯運(yùn)算符、謂詞In、Like、BetweenAnd結(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 姓名 not like %平% and 倉(cāng)庫(kù)號(hào) in(wh1, wh2)10、多表嵌套查詢:多表嵌套查詢就是

10、外層Select語(yǔ)句與內(nèi)層Select語(yǔ)句來(lái)源于不同的表,但表之間要存在關(guān)系。這也是SQL語(yǔ)句中最重要的查詢。下面以顯示北京地區(qū)的職工信息為例來(lái)講解一下。首先利用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) from where 城市=北京)不僅可以實(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 *

11、 from 訂購(gòu)單 where 職工號(hào) in(Select 職工號(hào) from 職工 where 倉(cāng)庫(kù)號(hào) in (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 工資>1200 and倉(cāng)庫(kù)號(hào) in(select 倉(cāng)庫(kù)號(hào) from 倉(cāng)庫(kù)where 城市=北京)and 訂購(gòu)日期

12、 between 2003-09-03 and 2006-01-0111、單級(jí)排序查詢:排序的關(guān)鍵字是Order by,默認(rèn)狀態(tài)下是升序,關(guān)鍵字是Asc。降序排列的關(guān)鍵字是Desc。排序字段可以是數(shù)值型,也可以是字符型、日期時(shí)間型。下面以按工資從高到低顯示職工信息為例來(lái)講解一下。 Select * from 職工Order by 工資 desc在排序查詢中還可以帶有邏輯運(yùn)算符、謂詞In、Like、Between、And結(jié)構(gòu)。假設(shè)顯示wh1或wh2倉(cāng)庫(kù)的,工資不大于職工zg16工資的職工信息,并要求職工姓名不含有“平”字,按工資從低到高顯示。首先利用Select語(yǔ)句求出職工zg16的工資,然后再

13、對(duì)姓名進(jìn)行模糊查詢,最后再排序。Select * from 職工 where 工資<=(Select 工資 from 職工 where 職工號(hào)=zg16) and 姓名 not like %平% and倉(cāng)庫(kù)號(hào) in (wh1,wh2) Order by工資12、多級(jí)排序查詢:按照一列進(jìn)行排序后,如果該列有重復(fù)的記錄值,則重復(fù)記錄值這部分就沒(méi)有進(jìn)行有效的排序,這就需要再附加一個(gè)字段,作為第二次排序的標(biāo)準(zhǔn),對(duì)沒(méi)有排開的記錄進(jìn)行再排列。下面以按工資從高到低顯示職工信息為例來(lái)講解一下。單級(jí)排序,按工資降序。Select * from 職工Order by 工資 desc多級(jí)排序,先按工資降序,再

14、按職工ID升序。Select * from 職工Order by 工資 desc,職工 ID asc       13、與別名一起使用的統(tǒng)計(jì)函數(shù):在實(shí)際編程中,有時(shí)候需要知道所有記錄某項(xiàng)值的總和、平均值、最大值等,這時(shí)就要用到統(tǒng)計(jì)函數(shù)查詢。常用的統(tǒng)計(jì)函數(shù)共有6個(gè)。統(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()、S

15、UM()、AVG()可以使用DISTINCT關(guān)鍵字,以在計(jì)算機(jī)中不包含重復(fù)的行。而對(duì)于MAX()、MIN()、COUNT(*),由于不會(huì)改變其結(jié)果,因此沒(méi)有必要使用DISTINCT。利用SELECT語(yǔ)句顯示統(tǒng)計(jì)值是沒(méi)有列名的,下面以顯示職工的最大值、最小值、工資總和、平均工資、職工人數(shù)為例來(lái)講解一下。 Select max(工資),min(工資), SUM(工資),avg(工資),count(*) from 職工這時(shí)會(huì)發(fā)現(xiàn)統(tǒng)計(jì)值沒(méi)有列名,現(xiàn)在來(lái)給統(tǒng)計(jì)字段添加列名。Select max(工資)as 最大工資,min(工資) as最小工資, SUM(工資)as 工資總和,avg(工資)as 平均工

16、資,count(*) as 職工人數(shù)from 職工 在統(tǒng)計(jì)函數(shù)中還可以加條件,假設(shè)顯示工資大于1500的職工的最大值、最小值、工資總和、平均工資、職工人數(shù)信息。Select max(工資)as 最大工資,min(工資) as最小工資, SUM(工資)as 工資總和,avg(工資)as 平均工資,count(*) as 職工人數(shù)from 職工 where 工資>150014、帶有統(tǒng)計(jì)函數(shù)的嵌套查詢:還可以利用統(tǒng)計(jì)函數(shù)得到的數(shù)據(jù)作為Select查詢語(yǔ)句的條件進(jìn)行查詢。下面以顯示工資大于所有職工平均值的職工信息為例來(lái)講解一下。 Select * from 職工where 工資>(sele

17、ct avg(工資) from 職工)在統(tǒng)計(jì)函數(shù)查詢中可以帶有比較運(yùn)算符、邏輯運(yùn)算符、In、BetweenAnd等。假設(shè)顯示工資大于wh1或wh2倉(cāng)庫(kù)中職工平均工資,并且職工姓名不含有“亮”字的職工信息。 Select * from 職工where 工資>(select avg(工資) from 職工 where 倉(cāng)庫(kù)號(hào)=wh1 or倉(cāng)庫(kù)號(hào)=wh2) and 姓名 not like %亮%15、統(tǒng)計(jì)函數(shù)字段顯示在表字段中及運(yùn)算字段:如果在職工表中添加一個(gè)職工平均工資值字段,這就對(duì)實(shí)際編程有很大的意義,即可以利用平均字段進(jìn)行運(yùn)算,大大提高編程速度。下面以在職工表中添加平均工資為例為講解一下

18、。Select 職工.*,(select avg(工資) from 職工) as 平均工資 from 職工在職工表中添加了一個(gè)平均工資字段,即在SELECT查詢字段中添加了一個(gè)SELECT子查詢。在SELECT查詢中,還可以計(jì)算出每名職工的工資與所有職工平均工資之差,具體操作如下:Select 職工.*,(select avg(工資) from 職工) as 平均工資,工資(select avg(工資) from 職工) as 平均工資的差 from 職工16、分組查詢:使用GROUPBY分組查詢,要注意分組的標(biāo)準(zhǔn)一定要有意義,如顯示不同倉(cāng)庫(kù)的平均工資,顯示不同職工的最大訂單金額等。如果顯示不

19、同職工的平均工資那就沒(méi)有意義了。下面顯示不同倉(cāng)庫(kù)的平均工資、工資和、最大工資、最小工資、工資人數(shù)信息為例來(lái)講解一下。Select 倉(cāng)庫(kù)號(hào),max(工資)as 最大工資, min(工資)as 最小工資, sum(工資)as 工資總和, avg(工資)as 平均工資, count(*)as 職工人數(shù) from 職工 group by 倉(cāng)庫(kù)號(hào)在分組查詢中還可以帶有邏輯運(yùn)算符、謂詞In、Like、BetweenAnd結(jié)構(gòu)。假設(shè)顯示工資大于zg1職工工資的不同倉(cāng)庫(kù)的平均工資、工資和、最大工資、最小工資、工資人數(shù)信息。首先利用SELECT語(yǔ)句求出職工zg1的工資,然后再分組顯示統(tǒng)計(jì)信息。Select 倉(cāng)庫(kù)

20、號(hào),max(工資)as 最大工資, min(工資)as 最小工資, sum(工資)as 工資總和, avg(工資)as 平均工資, count(*)as 職工人數(shù) from 職工 where 工資>( Select 工資 from 職工where 職工號(hào)=zg1) group by 倉(cāng)庫(kù)號(hào)17、帶有Having的分組查詢:分組以前的條件,要用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(工資)

21、as 最小工資, sum(工資)as 工資總和, avg(工資)as 平均工資, count(*)as 職工人數(shù) from 職工group by 倉(cāng)庫(kù)號(hào)having avg(工資)>1760在分組查詢的Having條件中還可以帶有邏輯運(yùn)算符、謂詞In、Like、BetweenAnd結(jié)構(gòu)。假設(shè)顯示不同倉(cāng)庫(kù)的平均工資、工資和、最大工資、最小工資、工資人數(shù)信息,但要求該倉(cāng)庫(kù)的平均工資大于1760,最大工資與最小工資之差在380800之間。Select 倉(cāng)庫(kù)號(hào),max(工資)as 最大工資, min(工資)as 最小工資, sum(工資)as 工資總和, avg(工資)as 平均工資, coun

22、t(*)as 職工人數(shù) from 職工group by 倉(cāng)庫(kù)號(hào)having avg(工資)>1760 and max(工資)min(工資) between 380 and 80018、帶有分組的嵌套查詢:還可以利用分組得到的數(shù)據(jù)作為SELECT查詢語(yǔ)句的條件進(jìn)行查詢。下面以顯示職工所在倉(cāng)庫(kù)的最大工資與最小工資之差在380800之間的職工所在倉(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職工group by 倉(cāng)庫(kù)號(hào)

23、having d max(工資)min(工資) between 380 and 80019、內(nèi)外層嵌套實(shí)現(xiàn)分組功能:利用group by分組顯示統(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ù)中的職工則有很多。下面以顯示不同職工經(jīng)手訂購(gòu)單金額最大的訂單信息為例來(lái)講解一下。在這里應(yīng)該邊求出每名職工訂購(gòu)單金額的最大值,邊顯示該職工所對(duì)應(yīng)的這條訂購(gòu)單信息。具體代碼如下:Select a.* from 訂購(gòu)單 a where 金額=( select 

24、;max(金額) from 訂購(gòu)單 where 職工號(hào)=a.職工號(hào))注意:上面語(yǔ)句中的訂購(gòu)單 a是給這個(gè)訂購(gòu)單起的一個(gè)別名,大家可以把它看成就其實(shí)就是訂購(gòu)單的一張復(fù)制的表,在這里運(yùn)用它只是為了使內(nèi)外層的嵌套更清晰、更容易理解。20、分組查詢字段顯示在表字段中及運(yùn)算字段:如果在職工表中添加職工所在倉(cāng)庫(kù)的平均工資值字段,這就對(duì)實(shí)際編程有很大的意義,即可以利用平均字段進(jìn)行運(yùn)算,大大提高編程速度。下面以在職工表中添加職工所在的倉(cāng)庫(kù)的平均工資字段為例來(lái)講解一下。Select a.* ,(Select avg(工資) from 職工 where 倉(cāng)庫(kù)號(hào)=a.倉(cāng)庫(kù)號(hào)) as 所在倉(cāng)庫(kù)的平均工資 from 職

25、工 a在Select查詢中,還可以計(jì)算出每名職工的工資與職工所在倉(cāng)庫(kù)的平均工資之差,具體操作如下:Select a.* ,(Select avg(工資) from 職工 where 倉(cāng)庫(kù)號(hào)=a.倉(cāng)庫(kù)號(hào)) as 所在倉(cāng)庫(kù)的平均工資,工資-(Select avg(工資) from 職工 where 倉(cāng)庫(kù)號(hào)=a.倉(cāng)庫(kù)號(hào)) as 所在倉(cāng)庫(kù)的平均工資之差 from 職工 a21、Exists謂詞查詢:其實(shí)In就是謂詞查詢,還有謂詞Exists與Exists,這兩個(gè)謂詞實(shí)現(xiàn)的功能是相同的,只是寫法不同。In多用于嵌套子查詢語(yǔ)句中,而Exists多用于判斷Select語(yǔ)句是否返回查詢結(jié)果。常用量詞有Any、

26、All和Some是同義詞。在進(jìn)行比較運(yùn)算時(shí),只要子查詢中有一行能使結(jié)果為真,結(jié)果就為真。而All則要求子查詢中所有行都使結(jié)果為真時(shí),結(jié)果才為真。下面以顯示那些倉(cāng)庫(kù)中還沒(méi)有職工的倉(cāng)庫(kù)信息為例,講解一下In謂詞與Exists謂詞在代碼上的不同。用Exists謂詞實(shí)現(xiàn):Select * from 倉(cāng)庫(kù) where not Exists(Select * from職工 where倉(cāng)庫(kù)號(hào)=倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào))用In謂詞實(shí)現(xiàn):Select * from 倉(cāng)庫(kù) where 倉(cāng)庫(kù)號(hào)not in(Select倉(cāng)庫(kù)號(hào)from職工)22、Any量詞查詢:Any量詞查詢,在進(jìn)行比較運(yùn)算時(shí),只要子查詢中有一行能使結(jié)果為真,則

27、結(jié)果即為真。下面就以顯示工資大于等于wh2倉(cāng)庫(kù)中任一名職工工資的職工信息為例,講解一下Any量詞的應(yīng)用。用Any量詞實(shí)現(xiàn):Select * from 職工 where 工資>=any(Select 工資 from職工 where倉(cāng)庫(kù)號(hào)=wh2)使用統(tǒng)計(jì)函數(shù)實(shí)現(xiàn):Select * from 職工 where 工資>=(Select min(工資)from職工 where倉(cāng)庫(kù)號(hào)=wh2)23、All量詞查詢:All量詞查詢,要求子查詢中所有行都使結(jié)果為真時(shí),結(jié)果才為真。下面就以顯示工資大于等于wh1倉(cāng)庫(kù)中所有職工工資的職工信息為例,講解一下All量詞的應(yīng)用。用Any量詞實(shí)現(xiàn):Selec

28、t * from 職工 where 工資>=All(Select 工資 from職工 where倉(cāng)庫(kù)號(hào)=wh1)使用統(tǒng)計(jì)函數(shù)實(shí)現(xiàn):Select * from 職工 where 工資>=(Select MAX(工資)from職工 where倉(cāng)庫(kù)號(hào)=wh1)前面講解的量詞查詢都可以用統(tǒng)計(jì)函數(shù)代替,但有些查詢是不能用統(tǒng)計(jì)函數(shù)代替的。下面以顯示工資大于所有不同倉(cāng)庫(kù)的平均工資的職工信息為例為講解一下。Select * from 職工 where 工資>all(Select avg(工資)from職工 group by倉(cāng)庫(kù)號(hào))該題用統(tǒng)計(jì)函數(shù)就無(wú)法解決。24、顯示部分記錄的Top查詢:在編

29、程中,有時(shí)只需顯示滿足條件的前幾條記錄,這時(shí)就可以使用Top關(guān)鍵字??梢灾苯邮褂肨op數(shù)字,顯示指定條數(shù)記錄;也可以使用Top數(shù)字Percent,顯示所有滿足條件記錄的前百分之幾條記錄。下面以顯示工資最高的前三條職工信息為例來(lái)講解一下。Select top3 * from 職工 order by工資 desc25、保存查詢:利用Into語(yǔ)句可以把查詢的結(jié)果保存成一張新表。下面就以備份“職工”表為例講解一下保存查詢。Use 企業(yè)銷售管理系統(tǒng)Select * into 職工備份 from職工這樣就生成一張新表,表名為“職工備份”。26、集合的并運(yùn)算:SQL支持集合的并運(yùn)算(Union),即可以將兩

30、個(gè)Selec語(yǔ)句的查詢結(jié)果通過(guò)并運(yùn)算合并成一個(gè)查詢結(jié)果。為了進(jìn)行并運(yùn)算,要求這樣的兩個(gè)查詢結(jié)果具有相同的字段個(gè)數(shù),并且對(duì)應(yīng)的字段的值要出自同一個(gè)值域,即具有相同的數(shù)據(jù)類型和取值范圍。Select * from 倉(cāng)庫(kù)where 城市=北京UnionSelect * from 倉(cāng)庫(kù)where 城市=上海27、集合的交運(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ù)Int

31、ersectSelect 倉(cāng)庫(kù)號(hào)from 職工注意它們對(duì)集合的差運(yùn)算不支持。28、多表連接查詢:多表連接查詢就是將多個(gè)表中的數(shù)據(jù)結(jié)合到一起的查詢,即連接操作可以在一個(gè)Select語(yǔ)句中完成從我個(gè)表中查找和處理數(shù)據(jù)。使用連接的列必須是可連接的,即它們具有相同的數(shù)據(jù)類型、相同的意義。使用連接的列,列名可以相同,也可以不同。29、笛卡兒積:有的時(shí)候,如果連接條件沒(méi)有設(shè)置好,或者沒(méi)有設(shè)置連接條件,則結(jié)果將包含太多的行,這就是由笛卡兒積造成的。從原理上來(lái)講,連接首先將形成表的笛卡兒積,即形成用于連接的表中所有的行的組合。下面以倉(cāng)庫(kù)表與職工表連接為例為講解一下。Select * from 職工, 倉(cāng)庫(kù)這是

32、從兩張表中顯示所有字段,所以字段有重復(fù),并且產(chǎn)生了90條記錄,原因是倉(cāng)庫(kù)表中有5條記錄,職工表有18條記錄,所以連接的結(jié)果是18×5=90條記錄。用于連接的表越多,則笛卡兒積的結(jié)果將越大。30、多表連接:在進(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ù)

33、.倉(cāng)庫(kù)號(hào) and 工資工資>1500 and 面積>60031、超連接查詢:超連接查詢也是連接查詢,所以必須有兩張或兩張以上的表。超連接查詢共有4種:內(nèi)連接查詢、左連接查詢、右連接查詢、全連接查詢。使用超連接查詢不僅可以把滿足條件的記錄顯示出來(lái),還可以把一部分不滿足條件的記錄以NULL顯示出來(lái)。1)內(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ù) inner join 職工 on 職工.倉(cāng)庫(kù)號(hào)=倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào) and

34、面積>600普通連接:Select 倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào),職工號(hào),城市,面積,工資 from 職工,倉(cāng)庫(kù) where 職工.倉(cāng)庫(kù)號(hào)=倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào) and 面積>6002)左連接查詢:除滿足連接條件的記錄顯示外,第一張表中不滿足條件的記錄也出現(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ù) left join 職工 on 職工.倉(cāng)庫(kù)號(hào)=倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào) and 面積>600    3)右連接查詢:除滿足連接條件的記錄顯示外,第二張表中不滿足

35、條件的記錄也出現(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ù) right join 職工 on 職工.倉(cāng)庫(kù)號(hào)=倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào) and 面積>6004)全連接查詢:除滿足連接條件的記錄顯示外,兩張表中不滿足條件的記錄也出現(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ù) full join 職工 on 職工.倉(cāng)庫(kù)號(hào)=倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào) and 面積>6

36、005)多表超連接查詢:前面講解了兩個(gè)表的超連接,那么如果是3張表或更多張表該如何實(shí)現(xiàn)超鏈接呢?下面以顯示面積大于600的倉(cāng)庫(kù)號(hào)、職工號(hào)、城市、面積、工資、金額信息為例為講解一下多表超連接。要顯示的字段信息來(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ù)left join 職工 on 職工.倉(cāng)庫(kù)號(hào)=倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào)right join 訂購(gòu)單 on 職工.職工號(hào)=訂購(gòu)單.職工號(hào) and 面積>60032、Insert插入語(yǔ)句:向數(shù)據(jù)庫(kù)表中插入數(shù)據(jù)是最常用的功能:1)指定

37、所有列:Insert into 倉(cāng)庫(kù)(倉(cāng)庫(kù)號(hào),城市,面積,創(chuàng)建時(shí)間) values (wh6,鄭州,800,2005-12-01)按下鍵盤上的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í)上面的代碼還可以省略表后面的字段,這樣也可以成功地插入記錄。Insert into 倉(cāng)庫(kù)values (wh6,鄭州,800,2005-12-01)2)指定部分列:下面以向倉(cāng)庫(kù)表中添加一條記錄為例來(lái)講解一下指定部分列。Insert into 倉(cāng)庫(kù)(倉(cāng)庫(kù)號(hào),面積) values (wh7,800)上述代碼也可以這樣來(lái)寫:Insert into 倉(cāng)庫(kù) values (wh7,null,800,null)或Insert into 倉(cāng)庫(kù)(倉(cāng)庫(kù)號(hào),城市,面積,創(chuàng)建時(shí)間) values (wh

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論