版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(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ì)話(huà)框: 5)單擊“關(guān)閉”,此時(shí)在菜單中的文件菜單下面出現(xiàn)一個(gè)sql的下拉框;6)在“sql”下拉框中選擇如下圖所示中的“sql視圖即可”。 1、查詢(xún)所有記錄:select *通常用于快速查看表中的記錄。當(dāng)對(duì)表的結(jié)構(gòu)無(wú)法確切記憶時(shí),或要快速查看表中的記錄時(shí),使用select *是很方便的。use 企業(yè)銷(xiāo)售管理系統(tǒng)select * from 職工2、投影查詢(xún):很多時(shí)候并不
2、需要將所有列的數(shù)據(jù)都顯示出來(lái)。投影查詢(xún)就是允許用戶(hù)顯示所需要的列。假設(shè)顯示職工表中職工號(hào)、姓名、工資信息,具體操作方法如下。select 職工號(hào),姓名,工資 from 職工在select查詢(xún)中,還可以按照實(shí)際的需要或自己的喜好安排顯示列的順序,如果要把姓名放到第一列,則代碼如下:select姓名, 職工號(hào),工資 from 職工3、條件查詢(xún):顯示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查詢(xún):在查找特定條件的數(shù)據(jù)時(shí),如果條件較多,就需要用到多個(gè)or運(yùn)算符,以查找滿(mǎn)足其中任一條的記錄。但使用多個(gè)or運(yùn)算符,將使where子句變得過(guò)于冗長(zhǎng),這時(shí)使用in就非常清楚。另外,在后面講解的嵌套查詢(xún)中,也必須使用in查詢(xún)。下面以顯示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è)銷(xiāo)售管理系統(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è)銷(xiāo)售管理系統(tǒng)select * from訂購(gòu)單 where 職工號(hào) not in(zg1, zg2, zg11, zg15)5、模糊like查詢(xún):有的時(shí)候,我們不清楚所要查詢(xún)的信息,如顯示職工信息,但不能確定該職
5、工的姓名,只知道他姓名中含有“王”字,那該如何查找呢?sql中提供了like關(guān)鍵字,使用like進(jìn)行了查詢(xún)時(shí),還要指定通配符。通 配 符 及 其 含 義通配符含 義%包含0個(gè)或多個(gè)字符_(下畫(huà)線(xiàn))包含一個(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查詢(xún):在sql語(yǔ)句中使用is null來(lái)進(jìn)行是否為空的判斷。下面以顯示性別為空的職工信息為例具體講解一下。select * from職工 where 性別 is null假設(shè)顯示性別不為空的職工信息,具體代碼如下:select * from職工 where 性別 is not null7、限制范圍betweenand查詢(xún):在數(shù)據(jù)醫(yī)療隊(duì)引擎查詢(xún)中,限制范圍也是經(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查詢(xún):在sql投影查詢(xún)中,可能會(huì)有許多重復(fù)的數(shù)據(jù),使用關(guān)鍵字distinct就可以從結(jié)果集中除去重復(fù)的數(shù)據(jù)。下面以顯示職工的工資信息為例具體講解一下:顯示有重復(fù)的數(shù)據(jù)select 工資 from職工顯示無(wú)重復(fù)的數(shù)據(jù)select distinct工資 from職工9、單表嵌套查詢(xún):就是外層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)嵌套查詢(xún)中也可以帶有邏輯運(yùn)算符、謂詞in、like、betweenand結(jié)構(gòu)。假設(shè)顯示wh1或wh2倉(cāng)庫(kù)的工資不大于職工zg16工資的職工信息,并要求職工姓名不含有“平”字。首先利用select語(yǔ)句求出職工zg16的工資,然后再對(duì)姓名進(jìn)行模糊查詢(xún)。select * from職工 where 工資<=(select 工資 from 職工 where 職工號(hào)=zg16) and 姓名 not like %平% and 倉(cāng)庫(kù)號(hào) in(wh1, wh2)10、多表嵌套查詢(xún):多表嵌套查詢(xún)就是
10、外層select語(yǔ)句與內(nèi)層select語(yǔ)句來(lái)源于不同的表,但表之間要存在關(guān)系。這也是sql語(yǔ)句中最重要的查詢(xún)。下面以顯示北京地區(qū)的職工信息為例來(lái)講解一下。首先利用select語(yǔ)句求出北京地區(qū)的倉(cāng)庫(kù)號(hào),然后利用倉(cāng)庫(kù)號(hào)再顯示職工信息。use 企業(yè)銷(xiāo)售管理系統(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 城市=北京) 多表嵌套查詢(xún)中也可以帶有邏輯運(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í)排序查詢(xún):排序的關(guān)鍵字是order by,默認(rèn)狀態(tài)下是升序,關(guān)鍵字是asc。降序排列的關(guān)鍵字是desc。排序字段可以是數(shù)值型,也可以是字符型、日期時(shí)間型。下面以按工資從高到低顯示職工信息為例來(lái)講解一下。 select * from 職工order by 工資 desc在排序查詢(xún)中還可以帶有邏輯運(yùn)算符、謂詞in、like、between、and結(jié)構(gòu)。假設(shè)顯示wh1或wh2倉(cāng)庫(kù)的,工資不大于職工zg16工資的職工信息,并要求職工姓名不含有“平”字,按工資從低到高顯示。首先利用select語(yǔ)句求出職工zg16的工資,然后再
13、對(duì)姓名進(jìn)行模糊查詢(xú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í)排序查詢(xún):按照一列進(jìn)行排序后,如果該列有重復(fù)的記錄值,則重復(fù)記錄值這部分就沒(méi)有進(jìn)行有效的排序,這就需要再附加一個(gè)字段,作為第二次排序的標(biāo)準(zhǔn),對(duì)沒(méi)有排開(kā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ù)查詢(xún)。常用的統(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ù)的嵌套查詢(xún):還可以利用統(tǒng)計(jì)函數(shù)得到的數(shù)據(jù)作為select查詢(xún)語(yǔ)句的條件進(jìn)行查詢(xún)。下面以顯示工資大于所有職工平均值的職工信息為例來(lái)講解一下。 select * from 職工where 工資>(sele
17、ct avg(工資) from 職工)在統(tǒng)計(jì)函數(shù)查詢(xún)中可以帶有比較運(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查詢(xún)字段中添加了一個(gè)select子查詢(xún)。在select查詢(xún)中,還可以計(jì)算出每名職工的工資與所有職工平均工資之差,具體操作如下:select 職工.*,(select avg(工資) from 職工) as 平均工資,工資(select avg(工資) from 職工) as 平均工資的差 from 職工16、分組查詢(xún):使用groupby分組查詢(xún),要注意分組的標(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)在分組查詢(xún)中還可以帶有邏輯運(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的分組查詢(xún):分組以前的條件,要用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在分組查詢(xún)的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、帶有分組的嵌套查詢(xún):還可以利用分組得到的數(shù)據(jù)作為select查詢(xún)語(yǔ)句的條件進(jìn)行查詢(xú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è)查詢(xún)中只能顯示倉(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、分組查詢(xún)字段顯示在表字段中及運(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查詢(xún)中,還可以計(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謂詞查詢(xún):其實(shí)in就是謂詞查詢(xún),還有謂詞exists與exists,這兩個(gè)謂詞實(shí)現(xiàn)的功能是相同的,只是寫(xiě)法不同。in多用于嵌套子查詢(xún)語(yǔ)句中,而exists多用于判斷select語(yǔ)句是否返回查詢(xún)結(jié)果。常用量詞有any、
26、all和some是同義詞。在進(jìn)行比較運(yùn)算時(shí),只要子查詢(xún)中有一行能使結(jié)果為真,結(jié)果就為真。而all則要求子查詢(xún)中所有行都使結(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量詞查詢(xún):any量詞查詢(xún),在進(jìn)行比較運(yùn)算時(shí),只要子查詢(xún)中有一行能使結(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量詞查詢(xún):all量詞查詢(xún),要求子查詢(xún)中所有行都使結(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)前面講解的量詞查詢(xún)都可以用統(tǒng)計(jì)函數(shù)代替,但有些查詢(xún)是不能用統(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查詢(xún):在編
29、程中,有時(shí)只需顯示滿(mǎn)足條件的前幾條記錄,這時(shí)就可以使用top關(guān)鍵字??梢灾苯邮褂胻op數(shù)字,顯示指定條數(shù)記錄;也可以使用top數(shù)字percent,顯示所有滿(mǎn)足條件記錄的前百分之幾條記錄。下面以顯示工資最高的前三條職工信息為例來(lái)講解一下。select top3 * from 職工 order by工資 desc25、保存查詢(xún):利用into語(yǔ)句可以把查詢(xún)的結(jié)果保存成一張新表。下面就以備份“職工”表為例講解一下保存查詢(xún)。use 企業(yè)銷(xiāo)售管理系統(tǒng)select * into 職工備份 from職工這樣就生成一張新表,表名為“職工備份”。26、集合的并運(yùn)算:sql支持集合的并運(yùn)算(union),即可以將兩
30、個(gè)selec語(yǔ)句的查詢(xún)結(jié)果通過(guò)并運(yùn)算合并成一個(gè)查詢(xún)結(jié)果。為了進(jìn)行并運(yùn)算,要求這樣的兩個(gè)查詢(xún)結(jié)果具有相同的字段個(gè)數(shù),并且對(duì)應(yīng)的字段的值要出自同一個(gè)值域,即具有相同的數(shù)據(jù)類(lèi)型和取值范圍。select * from 倉(cāng)庫(kù)where 城市=北京unionselect * from 倉(cāng)庫(kù)where 城市=上海27、集合的交運(yùn)算:sql支持集合的交運(yùn)算(intersect),即可以將兩個(gè)selec語(yǔ)句的查詢(xún)結(jié)果通過(guò)交運(yùn)算合并成一個(gè)查詢(xún)結(jié)果。為了進(jìn)行交運(yùn)算,要求這樣的兩個(gè)查詢(xún)結(jié)果具有相同的字段個(gè)數(shù),并且對(duì)應(yīng)的字段的值要出自同一個(gè)值域,即具有相同的數(shù)據(jù)類(lèi)型和取值范圍。select 倉(cāng)庫(kù)號(hào) from 倉(cāng)庫(kù)int
31、ersectselect 倉(cāng)庫(kù)號(hào)from 職工注意它們對(duì)集合的差運(yùn)算不支持。28、多表連接查詢(xún):多表連接查詢(xún)就是將多個(gè)表中的數(shù)據(jù)結(jié)合到一起的查詢(xún),即連接操作可以在一個(gè)select語(yǔ)句中完成從我個(gè)表中查找和處理數(shù)據(jù)。使用連接的列必須是可連接的,即它們具有相同的數(shù)據(jù)類(lèi)型、相同的意義。使用連接的列,列名可以相同,也可以不同。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、超連接查詢(xún):超連接查詢(xún)也是連接查詢(xún),所以必須有兩張或兩張以上的表。超連接查詢(xún)共有4種:內(nèi)連接查詢(xún)、左連接查詢(xún)、右連接查詢(xún)、全連接查詢(xún)。使用超連接查詢(xún)不僅可以把滿(mǎn)足條件的記錄顯示出來(lái),還可以把一部分不滿(mǎn)足條件的記錄以null顯示出來(lái)。1)內(nèi)連接查詢(xún):只有滿(mǎn)足連接條件的記錄才出現(xiàn)在查詢(xú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)左連接查詢(xún):除滿(mǎn)足連接條件的記錄顯示外,第一張表中不滿(mǎn)足條件的記錄也出現(xiàn)在查詢(xú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)右連接查詢(xún):除滿(mǎn)足連接條件的記錄顯示外,第二張表中不滿(mǎn)足
35、條件的記錄也出現(xiàn)在查詢(xú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)全連接查詢(xún):除滿(mǎn)足連接條件的記錄顯示外,兩張表中不滿(mǎn)足條件的記錄也出現(xiàn)在查詢(xú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)多表超連接查詢(xún):前面講解了兩個(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)按下鍵盤(pán)上的f5鍵,會(huì)顯示(1行受影響),這表示已成功地插入一條記錄。再在數(shù)據(jù)庫(kù)引擎查詢(xún)文檔中輸入“select * from 倉(cāng)庫(kù)”,然后按下鍵盤(pán)上的f5鍵,就可以執(zhí)行該sql語(yǔ)句,這樣就可以在查詢(xún)結(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)寫(xiě):insert into 倉(cāng)庫(kù) values (wh7,null,800,null)或insert into 倉(cāng)庫(kù)(倉(cāng)庫(kù)號(hào),城市,面積,創(chuàng)建時(shí)間) values (wh7,nul
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 拉土造地工程合同范例
- 廣告公司設(shè)計(jì)安裝合同模板
- 回收拆遷合同范例
- epc加投資合同范例
- 工地運(yùn)輸協(xié)議合同范例
- 房屋地皮轉(zhuǎn)讓合同范例
- 委托個(gè)人理財(cái)合同范例
- 常用民間借款合同范例
- 出售土地房屋合同范例
- 工業(yè)鋼材供貨合同范例
- 建筑施工現(xiàn)場(chǎng)典型安全事故案例
- 小學(xué)三年級(jí)數(shù)學(xué)上學(xué)期期末考試試卷
- 安全生產(chǎn)應(yīng)急管理體系建設(shè)
- (高清版)DZT 0346-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 油頁(yè)巖、石煤、泥炭
- 人民防空教育-生物武器及其防護(hù)
- 企業(yè)計(jì)算機(jī)網(wǎng)絡(luò)維護(hù)專(zhuān)項(xiàng)方案
- 昆明撫仙湖鰭魚(yú)灣棋盤(pán)山度假娛樂(lè)旅游區(qū)總體規(guī)劃方案樣本
- 港口裝卸作業(yè)安全管理與技術(shù)
- TIMAAMM 003-2023 蒙醫(yī)病證診斷療效標(biāo)準(zhǔn)
- 數(shù)控機(jī)床概述(完整版)
- 量子最優(yōu)化算法在金融業(yè)的應(yīng)用研究報(bào)告
評(píng)論
0/150
提交評(píng)論