ACCESS數(shù)據(jù)庫(kù)中常見的SQL語(yǔ)句匯總教程_第1頁(yè)
ACCESS數(shù)據(jù)庫(kù)中常見的SQL語(yǔ)句匯總教程_第2頁(yè)
ACCESS數(shù)據(jù)庫(kù)中常見的SQL語(yǔ)句匯總教程_第3頁(yè)
ACCESS數(shù)據(jù)庫(kù)中常見的SQL語(yǔ)句匯總教程_第4頁(yè)
ACCESS數(shù)據(jù)庫(kù)中常見的SQL語(yǔ)句匯總教程_第5頁(yè)
已閱讀5頁(yè),還剩7頁(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é)1、查詢所有記錄:Select*通常用于快速查看表中的記錄。當(dāng)對(duì)表的結(jié)構(gòu)無(wú)法確切記憶時(shí),或要快速查看表中的記錄時(shí),使用Select*是很方便的。use企業(yè)銷售管理系統(tǒng)Select*from職工2、投影查詢:很多時(shí)候并不需要將所有列的數(shù)據(jù)都顯示出來(lái)。投影查詢就是允許用戶顯示所需要的列。假設(shè)顯示職工表中職工號(hào)、姓名、工資信息,具體操作方法如下。Select職工號(hào),姓名,工資from職工在Select查詢中,還可以按照實(shí)際的需要或自己的喜好安排顯示列的順序,如果要把姓名放到第一列,則代碼如下:Select姓名,職工號(hào),工資from職工3、條件查詢:顯示wh1或wh2

2、倉(cāng)庫(kù)、性別不為女、工資在13002100之間的職工信息。具體操作如下:Select*from職工號(hào)where(倉(cāng)庫(kù)號(hào)='wh1'or倉(cāng)庫(kù)號(hào)='wh2')Andnot性別='女,and工資>=1300and工資<=2100在這里一定要注意,(倉(cāng)庫(kù)號(hào)二皿卜1,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

3、查詢。下面以顯示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)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)!=,z

4、g11,or職工號(hào)!=,zg15,使用謂詞InUse企業(yè)銷售管理系統(tǒng)Select*from訂購(gòu)單where職工號(hào)notin('zg1','zg2','zg11','zg15')5、模糊Like查詢:有的時(shí)候,我們不清楚所要查詢的信息,如顯示職工信息,但不能確定該職工的姓名,只知道他姓名中含有“王”字,那該如何查找呢?SQL中提供了Like關(guān)鍵字,使用Like進(jìn)行了查詢時(shí),還要指定通配符。通配符及其含義通配符含義%包含0個(gè)或多個(gè)字符_(卜回線)包含一個(gè)字符指定范圍(如a-zA不屬于指定范圍(Aa-z)在SQL語(yǔ)句中,還支持Like與

5、Not結(jié)合使用。假設(shè)顯示姓名中不含有“王”字的職工信息,具體代碼如下:Select*from職工where姓名notlike'王'在該例中,如果你知道姓名中含有“王”字,并且姓名只有兩個(gè)字,那么可以進(jìn)一步縮小查找范圍,具體代碼如下:Select*from職工where姓名notlike'王這樣就可以查找到姓名中只有兩個(gè)字,并且姓為“王”的職工信息。6、空值NULL查詢:在SQL語(yǔ)句中使用ISNULL來(lái)進(jìn)行是否為空的判斷。下面以顯示性別為空的職工信息為例具體講解一下。Select*from職工where性別isnull假設(shè)顯示性別不為空的職工信息,具體代碼如下:Selec

6、t*from職工where性別isnotnull7、限制范圍Between,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之間的職工信息為例具體講解一下。Between,And語(yǔ)句Select*from職工where工資Between1300And1900大于等于號(hào)、小于等于號(hào)與And運(yùn)算符Select*from職工where工資>=1300And工資<=1900在SQL語(yǔ)句中,還支持Between,And與

7、Not結(jié)合使用。假設(shè)顯示工資不在13001900之間的職工信息,具體代碼如下:Between,And語(yǔ)句Select*from職工where工資notBetween1300And1900大于等于號(hào)、小于等于號(hào)與And運(yùn)算符Select*from職工where工資<=1300And工資>=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ù)SelectDistinct工資fro

8、m職工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*from倉(cāng)庫(kù)where面積(select面積from倉(cāng)庫(kù)where倉(cāng)庫(kù)號(hào)='wh1')嵌套查詢中也可以帶有邏輯運(yùn)算符、謂詞In、Like、Between,And結(jié)構(gòu)。假設(shè)顯示wh1或wh2倉(cāng)庫(kù)的工資不大于職工zg16工資的職工信息,并要求職工姓名不含有“平”字。首先利用Select語(yǔ)句求出職工zg16的工資,然后再對(duì)姓名進(jìn)行模糊查詢。

9、Select*from職工where工資<=(select工資from職工where職工號(hào)='zg16')and姓名notlike'%平'and倉(cāng)庫(kù)號(hào)in('wh1','wh2')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)

10、庫(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(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年

11、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)日期between'2003-09-03'and'2006-01-01'11、單級(jí)排序查詢:排序的關(guān)鍵字是Orderby,默認(rèn)狀態(tài)下是升序,關(guān)鍵字是Asc。降序排列的關(guān)鍵字是Desc。排序字段可以是數(shù)值型,也可以是字符型、日期時(shí)間型。下面以按工資從高到低顯示職工信息為例來(lái)講解一下。Select*from職工Orderby工資desc在排序

12、查詢中還可以帶有邏輯運(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'%平'and倉(cāng)庫(kù)號(hào)in('wh1','wh2')orderby工資12、多級(jí)排序查詢:按照一列進(jìn)行排序后,如果該列有重復(fù)

13、的記錄值,則重復(fù)記錄值這部分就沒有進(jìn)行有效的排序,這就需要再附加一個(gè)字段,作為第二次排序的標(biāo)準(zhǔn),對(duì)沒有排開的記錄進(jìn)行再排列。下面以按工資從高到低顯示職工信息為例來(lái)講解一下。單級(jí)排序,按工資降序。Select*from職工Orderby工資desc多級(jí)排序,先按工資降序,再按職工ID升序。Select*from職工Orderby工資desc,職工IDasc13、與別名一起使用的統(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ì)特定列中值的

14、個(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é)果,因此沒有必要使用DISTINCT。利用Select語(yǔ)句顯示統(tǒng)計(jì)值是沒有列名的,下面以顯示職工的最大值、最小值、工資總和、平均工資、職工人數(shù)為例來(lái)講解一下。Selectmax(工資),min(工資),SUM(工資),avg(工資),count(*)from職工這時(shí)會(huì)發(fā)現(xiàn)統(tǒng)計(jì)值沒有列名,現(xiàn)

15、在來(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(工資)as工資總和,avg(工資)as平均工資,count(*)as職工人數(shù)from職工where工資150014、帶有統(tǒng)計(jì)函數(shù)的嵌套查詢:還可以利用統(tǒng)計(jì)函數(shù)得到的數(shù)據(jù)作為Select查詢語(yǔ)句的條件進(jìn)行查詢。下面以顯示工資大于所

16、有職工平均值的職工信息為例來(lái)講解一下。Select*from職工where工資(selectavg(工資)from職工)在統(tǒng)計(jì)函數(shù)查詢中可以帶有比較運(yùn)算符、邏輯運(yùn)算符、In、Between-And等。假設(shè)顯示工資大于wh1或wh2倉(cāng)庫(kù)中職工平均工資,并且職工姓名不含有亮”字的職工信息。Select*from職工where工資(selectavg(工資)from職工where倉(cāng)庫(kù)號(hào)='wh1'or倉(cāng)庫(kù)號(hào)='wh2')and姓名notlike'%亮'15、統(tǒng)計(jì)函數(shù)字段顯示在表字段中及運(yùn)算字段:如果在職工表中添加一個(gè)職工平均工資值字段,這就對(duì)實(shí)際編程有

17、很大的意義,即可以利用平均字段進(jìn)行運(yùn)算,大大提高編程速度。下面以在職工表中添加平均工資為例為講解一下。Select職工.*,(selectavg(工資)from職工)as平均工資from職工在職工表中添加了一個(gè)平均工資字段,即在Select查詢字段中添加了一個(gè)Select子查詢。在Select查詢中,還可以計(jì)算出每名職工的工資與所有職工平均工資之差,具體操作如下:Select職工.*,(selectavg(工資)from職工)as平均工資,工資一(selectavg(工資)from職工)as平均工資的差from職工16、分組查詢:使用GROUPBY分組查詢,要注意分組的標(biāo)準(zhǔn)一定要有意義,如顯示

18、不同倉(cāng)庫(kù)的平均工資,顯示不同職工的最大訂單金額等。如果顯示不同職工的平均工資那就沒有意義了。下面顯示不同倉(cāng)庫(kù)的平均工資、工資和、最大工資、最小工資、工資人數(shù)信息為例來(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)在分組查詢中還可以帶有邏輯運(yùn)算符、謂詞In、Like、Between-And結(jié)構(gòu)。假設(shè)顯示工資大于zg1職工工資的不同倉(cāng)庫(kù)的平均工資、工資和、最大工資、最小工資、工資人數(shù)信息。首先利用Select語(yǔ)句求出職工zg1的工資,然后再分組

19、顯示統(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)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(工資)as最

20、小工資,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ù)的平均工資、工資和、最大工資、最小工資、工資人數(shù)信息,但要求該倉(cāng)庫(kù)的平均工資大于1760,最大工資與最小工資之差在380800之間。Select倉(cāng)庫(kù)號(hào),max(工資)as最大工資,min(工資)as最小工資,sum(工資)as工資總和,avg(工資)as平均工資,count(*)as職工人數(shù)from職工groupby倉(cāng)庫(kù)號(hào)h

21、avingavg(工資)1760andmax(工資)min(工資)between380and80018、帶有分組的嵌套查詢:還可以利用分組得到的數(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職工groupby倉(cāng)庫(kù)號(hào)havingdmax(工資)min(工資)between380and80019、內(nèi)外層嵌套實(shí)現(xiàn)分組功能:

22、利用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ù)中的職工則有很多。下面以顯示不同職工經(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)=a.職工號(hào))注意:上面語(yǔ)句中的訂購(gòu)單a是給這個(gè)訂購(gòu)單起的一個(gè)別名,大家可以把它看成就其實(shí)就是訂購(gòu)單的一張復(fù)

23、制的表,在這里運(yùn)用它只是為了使內(nèi)外層的嵌套更清晰、更容易理解。20、分組查詢字段顯示在表字段中及運(yùn)算字段:如果在職工表中添加職工所在倉(cāng)庫(kù)的平均工資值字段,這就對(duì)實(shí)際編程有很大的意義,即可以利用平均字段進(jìn)行運(yùn)算,大大提高編程速度。下面以在職工表中添加職工所在的倉(cāng)庫(kù)的平均工資字段為例來(lái)講解一下。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)=a.倉(cāng)庫(kù)號(hào))

24、as所在倉(cāng)庫(kù)的平均工資,工資-(Selectavg(工資)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、All和Some是同義詞。在進(jìn)行比較運(yùn)算時(shí),只要子查詢中有一行能使結(jié)果為真,結(jié)果就為真。而All則要求子查詢中所有行都使結(jié)果為真時(shí),結(jié)果才為真。下面以顯示那些倉(cāng)庫(kù)中還沒有職工的倉(cāng)庫(kù)信息為例,講解一下In謂詞與Exists謂詞在

25、代碼上的不同。用Exists謂詞實(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))用In謂詞實(shí)現(xiàn):Select*from倉(cāng)庫(kù)where倉(cāng)庫(kù)號(hào)notin(Select倉(cāng)庫(kù)號(hào)from職工)22、Any量詞查詢:Any量詞查詢,在進(jìn)行比較運(yùn)算時(shí),只要子查詢中有一行能使結(jié)果為真,則結(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')使

26、用統(tǒng)計(jì)函數(shù)實(shí)現(xiàn):Select*from職工where工資>=(Selectmin(工資)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):Select*from職工where工資>=All(Select工資from職工where倉(cāng)庫(kù)號(hào)='wh1')使用統(tǒng)計(jì)函數(shù)實(shí)現(xiàn):Select*from職工where工資>=(SelectMAX(工資)from職工where倉(cāng)庫(kù)號(hào)

27、='wh1')前面講解的量詞查詢都可以用統(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ú)法解決。24、顯示部分記錄的Top查詢:在編程中,有時(shí)只需顯示滿足條件的前幾條記錄,這時(shí)就可以使用Top關(guān)鍵字??梢灾苯邮褂肨op數(shù)字,顯示指定條數(shù)記錄;也可以使用Top數(shù)字Percent,顯示所有滿足條件記錄的前百分之幾條記錄。下面以顯示工資最高的前三條職工信息為例來(lái)講解一下。Selectto

28、p3*from職工orderby工資desc25、保存查詢:利用Into語(yǔ)句可以把查詢的結(jié)果保存成一張新表。下面就以備份職工”表為例講解一下保存查詢。Use企業(yè)銷售管理系統(tǒng)Select*into職工備份from職工這樣就生成一張新表,表名為職工備份”。26、集合的并運(yùn)算:SQL支持集合的并運(yùn)算(Union),即可以將兩個(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ù)whe

29、re城市='上海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ù)IntersectSelect倉(cāng)庫(kù)號(hào)from職工注意它們對(duì)集合的差運(yùn)算不支持。28、多表連接查詢:多表連接查詢就是將多個(gè)表中的數(shù)據(jù)結(jié)合到一起的查詢,即連接操作可以在一個(gè)Select語(yǔ)句中完成從我個(gè)表中查找和處理數(shù)據(jù)。使用連接的列必須是可連接的,即它們具有相同的數(shù)據(jù)類型、相同的意義。使用連

30、接的列,列名可以相同,也可以不同。29、笛卡兒積:有的時(shí)候,如果連接條件沒有設(shè)置好,或者沒有設(shè)置連接條件,則結(jié)果將包含太多的行,這就是由笛卡兒積造成的。從原理上來(lái)講,連接首先將形成表的笛卡兒積,即形成用于連接的表中所有的行的組合。下面以倉(cāng)庫(kù)表與職工表連接為例為講解一下。Select*from職工,倉(cāng)庫(kù)這是從兩張表中顯示所有字段,所以字段有重復(fù),并且產(chǎn)生了90條記錄,原因是倉(cāng)庫(kù)表中有5條記錄,職工表有18條記錄,所以連接的結(jié)果是18X5=90條記錄。用于連接的表越多,則笛卡兒積的結(jié)果將越大。30、多表連接:在進(jìn)行多表連接時(shí),一定要注意連接條件,下面以倉(cāng)庫(kù)表與職工表連接為例來(lái)講解一下多表連接。Se

31、lect*from職工,倉(cāng)庫(kù)where職工.倉(cāng)庫(kù)號(hào)=倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào)這時(shí)顯示的記錄就沒有那么多了,只顯示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面積60031、超連接查詢:超連接查詢也是連接查詢,所以必須有兩張或兩張以上的表。超連接查詢共有4種:內(nèi)連接查詢、左連接查詢、右連接查詢、全連接查詢。使用超連接查詢不僅可以把滿足條件的記錄顯示出來(lái),還可以把一部分不滿足條件的記錄以NULL顯示出來(lái)。1)內(nèi)連接查詢:只有滿足連接條件的記錄才出現(xiàn)在

32、查詢結(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),城市,面積,工資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

33、倉(cāng)庫(kù)leftjoin職工on職工.倉(cāng)庫(kù)號(hào)=倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào)and面積6003)右連接查詢:除滿足連接條件的記錄顯示外,第二張表中不滿足條件的記錄也出現(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ù)rightjoin職工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),城市,面積,工資

34、from倉(cāng)庫(kù)fulljoin職工on職工.倉(cāng)庫(kù)號(hào)=倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào)and面積6005)多表超連接查詢:前面講解了兩個(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ù)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面積60032、Insert插入語(yǔ)句:向數(shù)

35、據(jù)庫(kù)表中插入數(shù)據(jù)是最常用的功能:1)指定所有列:Insertinto倉(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í)上面的代碼還可以省略表后面的字段,這樣也可以成功地插入記錄。Insertinto倉(cāng)庫(kù)values('wh6','關(guān)B州','800','2005-12-01')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,

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論