




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、.ACCESS數(shù)據(jù)庫的SQL語句教學(xué)1、查詢所有記錄:Select *通常用于快速查看表中的記錄。當(dāng)對表的結(jié)構(gòu)無法確切記憶時,或要快速查看表中的記錄時,使用Select *是很方便的。use 企業(yè)銷售管理系統(tǒng)Select * from 職工2、投影查詢:很多時候并不需要將所有列的數(shù)據(jù)都顯示出來。投影查詢就是允許用戶顯示所需要的列。假設(shè)顯示職工表中職工號、姓名、工資信息,具體操作方法如下。Select 職工號,姓名,工資 from 職工在Select查詢中,還可以按照實際的需要或自己的喜好安排顯示列的順序,如果要把姓名放到第一列,則代碼如下:Select 姓名, 職工號,工資 from 職工3、
2、條件查詢:顯示wh1或wh2倉庫、性別不為女、工資在13002100之間的職工信息。具體操作如下:Select * from 職工號 where(倉庫號=wh1 or 倉庫號=wh2)And not 性別=女 and 工資=1300 and 工資=1300 And 工資=1900在SQL語句中,還支持BetweenAnd與Not結(jié)合使用。假設(shè)顯示工資不在13001900之間的職工信息,具體代碼如下:BetweenAnd語句Select * from 職工 where 工資 not Between 1300 And 1900大于等于號、小于等于號與And運(yùn)算符Select * from 職工 w
3、here 工資=19008、消除重復(fù)字段數(shù)據(jù)Distinct查詢:在SQL投影查詢中,可能會有許多重復(fù)的數(shù)據(jù),使用關(guān)鍵字Distinct就可以從結(jié)果集中除去重復(fù)的數(shù)據(jù)。下面以顯示職工的工資信息為例具體講解一下:顯示有重復(fù)的數(shù)據(jù)Select 工資 from 職工顯示無重復(fù)的數(shù)據(jù)Select Distinct工資 from 職工9、單表嵌套查詢:就是外層Select語句與內(nèi)層Select語句都來源于同一張表。下面以顯示倉庫面積大于wh1倉庫面積的倉庫信息為例來講解一下。首先利用Select語句求出wh1倉庫的倉庫面積,然后再顯示面積大于該值的倉庫信息。Select * from 倉庫 where
4、面積(select 面積 from 倉庫 where 倉庫號=wh1)嵌套查詢中也可以帶有邏輯運(yùn)算符、謂詞In、Like、BetweenAnd結(jié)構(gòu)。假設(shè)顯示wh1或wh2倉庫的工資不大于職工zg16工資的職工信息,并要求職工姓名不含有“平”字。首先利用Select語句求出職工zg16的工資,然后再對姓名進(jìn)行模糊查詢。Select * from 職工 where 工資1200 and 倉庫號 in(select 倉庫號 from 倉庫 where 城市=北京) and 訂購日期 between 2003-09-03 and 2006-01-0111、單級排序查詢:排序的關(guān)鍵字是Order by,
5、默認(rèn)狀態(tài)下是升序,關(guān)鍵字是Asc。降序排列的關(guān)鍵字是Desc。排序字段可以是數(shù)值型,也可以是字符型、日期時間型。下面以按工資從高到低顯示職工信息為例來講解一下。Select * from 職工Order by 工資 desc在排序查詢中還可以帶有邏輯運(yùn)算符、謂詞In、Like、Between、And結(jié)構(gòu)。假設(shè)顯示wh1或wh2倉庫的,工資不大于職工zg16工資的職工信息,并要求職工姓名不含有“平”字,按工資從低到高顯示。首先利用Select語句求出職工zg16的工資,然后再對姓名進(jìn)行模糊查詢,最后再排序。Select * from 職工 where 工資150014、帶有統(tǒng)計函數(shù)的嵌套查詢:還
6、可以利用統(tǒng)計函數(shù)得到的數(shù)據(jù)作為Select查詢語句的條件進(jìn)行查詢。下面以顯示工資大于所有職工平均值的職工信息為例來講解一下。 Select * from 職工where 工資(select avg(工資) from 職工)在統(tǒng)計函數(shù)查詢中可以帶有比較運(yùn)算符、邏輯運(yùn)算符、In、BetweenAnd等。假設(shè)顯示工資大于wh1或wh2倉庫中職工平均工資,并且職工姓名不含有“亮”字的職工信息。Select * from 職工where 工資(select avg(工資) from 職工 where 倉庫號=wh1 or 倉庫號=wh2) and 姓名 not like %亮%15、統(tǒng)計函數(shù)字段顯示在表
7、字段中及運(yùn)算字段:如果在職工表中添加一個職工平均工資值字段,這就對實際編程有很大的意義,即可以利用平均字段進(jìn)行運(yùn)算,大大提高編程速度。下面以在職工表中添加平均工資為例為講解一下。Select 職工.*,(select avg(工資) from 職工) as 平均工資 from 職工在職工表中添加了一個平均工資字段,即在Select查詢字段中添加了一個Select子查詢。在Select查詢中,還可以計算出每名職工的工資與所有職工平均工資之差,具體操作如下:Select 職工.*,(select avg(工資) from 職工) as 平均工資,工資(select avg(工資) from 職工)
8、 as 平均工資的差 from 職工16、分組查詢:使用GROUPBY分組查詢,要注意分組的標(biāo)準(zhǔn)一定要有意義,如顯示不同倉庫的平均工資,顯示不同職工的最大訂單金額等。如果顯示不同職工的平均工資那就沒有意義了。下面顯示不同倉庫的平均工資、工資和、最大工資、最小工資、工資人數(shù)信息為例來講解一下。Select 倉庫號,max(工資)as 最大工資, min(工資)as 最小工資, sum(工資)as 工資總和, avg(工資)as 平均工資, count(*)as 職工人數(shù) from 職工 group by 倉庫號在分組查詢中還可以帶有邏輯運(yùn)算符、謂詞In、Like、BetweenAnd結(jié)構(gòu)。假設(shè)顯
9、示工資大于zg1職工工資的不同倉庫的平均工資、工資和、最大工資、最小工資、工資人數(shù)信息。首先利用Select語句求出職工zg1的工資,然后再分組顯示統(tǒng)計信息。Select 倉庫號,max(工資)as 最大工資, min(工資)as 最小工資, sum(工資)as 工資總和, avg(工資)as 平均工資, count(*)as 職工人數(shù) from 職工 where 工資(Select 工資 from 職工 where 職工號=zg1) group by 倉庫號17、帶有Having的分組查詢:分組以前的條件,要用Where關(guān)鍵字,而分組之后的條件則要使用Having關(guān)鍵字。下面以顯示不同倉庫的
10、平均工資、工資和、最大工資、最小工資、工資人數(shù)信息,但要求該倉庫平均工資大于1760為例來講解一下。Select 倉庫號,max(工資)as 最大工資, min(工資)as 最小工資, sum(工資)as 工資總和, avg(工資)as 平均工資, count(*)as 職工人數(shù) from 職工 group by 倉庫號 having avg(工資)1760在分組查詢的Having條件中還可以帶有邏輯運(yùn)算符、謂詞In、Like、BetweenAnd結(jié)構(gòu)。假設(shè)顯示不同倉庫的平均工資、工資和、最大工資、最小工資、工資人數(shù)信息,但要求該倉庫的平均工資大于1760,最大工資與最小工資之差在380800
11、之間。Select 倉庫號,max(工資)as 最大工資, min(工資)as 最小工資, sum(工資)as 工資總和, avg(工資)as 平均工資, count(*)as 職工人數(shù) from 職工 group by 倉庫號 having avg(工資)1760 and max(工資)min(工資) between 380 and 80018、帶有分組的嵌套查詢:還可以利用分組得到的數(shù)據(jù)作為Select查詢語句的條件進(jìn)行查詢。下面以顯示職工所在倉庫的最大工資與最小工資之差在380800之間的職工所在倉庫信息為例為講解一下。先求出職工所在倉庫的最大工資與最小工資之差在380800之間的職工所
12、在的倉庫號,再利用這個倉庫號顯示倉庫信息。Select * from 倉庫,where 倉庫號 in(Select 倉庫號 from 職工 group by 倉庫號 having d max(工資)min(工資) between 380 and 80019、內(nèi)外層嵌套實現(xiàn)分組功能:利用group by分組顯示統(tǒng)計字段信息,有很多字段不能顯示。如顯示不同倉庫的平均工資信息,在這個查詢中只能顯示倉庫號,不能顯示職工號及職工的工資。因為不同倉庫的平均工資,有幾個倉庫就顯示幾條平均工資,而每個倉庫中的職工則有很多。下面以顯示不同職工經(jīng)手訂購單金額最大的訂單信息為例來講解一下。在這里應(yīng)該邊求出每名職工訂
13、購單金額的最大值,邊顯示該職工所對應(yīng)的這條訂購單信息。具體代碼如下:Select a.* from 訂購單 a where 金額=(selectmax(金額) from 訂購單 where 職工號=a.職工號)注意:上面語句中的訂購單 a是給這個訂購單起的一個別名,大家可以把它看成就其實就是訂購單的一張復(fù)制的表,在這里運(yùn)用它只是為了使內(nèi)外層的嵌套更清晰、更容易理解。20、分組查詢字段顯示在表字段中及運(yùn)算字段:如果在職工表中添加職工所在倉庫的平均工資值字段,這就對實際編程有很大的意義,即可以利用平均字段進(jìn)行運(yùn)算,大大提高編程速度。下面以在職工表中添加職工所在的倉庫的平均工資字段為例來講解一下。S
14、elect a.* ,(Select avg(工資) from 職工 where 倉庫號=a.倉庫號) as 所在倉庫的平均工資 from 職工 a在Select查詢中,還可以計算出每名職工的工資與職工所在倉庫的平均工資之差,具體操作如下:Select a.* ,(Select avg(工資) from 職工 where 倉庫號=a.倉庫號) as 所在倉庫的平均工資,工資-(Select avg(工資) from 職工 where 倉庫號=a.倉庫號) as 所在倉庫的平均工資之差 from 職工 a21、Exists謂詞查詢:其實In就是謂詞查詢,還有謂詞Exists與Exists,這兩個
15、謂詞實現(xiàn)的功能是相同的,只是寫法不同。In多用于嵌套子查詢語句中,而Exists多用于判斷Select語句是否返回查詢結(jié)果。常用量詞有Any、All和Some是同義詞。在進(jìn)行比較運(yùn)算時,只要子查詢中有一行能使結(jié)果為真,結(jié)果就為真。而All則要求子查詢中所有行都使結(jié)果為真時,結(jié)果才為真。下面以顯示那些倉庫中還沒有職工的倉庫信息為例,講解一下In謂詞與Exists謂詞在代碼上的不同。用Exists謂詞實現(xiàn):Select * from 倉庫 where not Exists(Select * from職工 where 倉庫號=倉庫.倉庫號)用In謂詞實現(xiàn):Select * from 倉庫 where
16、 倉庫號 not in(Select 倉庫號 from 職工)22、Any量詞查詢:Any量詞查詢,在進(jìn)行比較運(yùn)算時,只要子查詢中有一行能使結(jié)果為真,則結(jié)果即為真。下面就以顯示工資大于等于wh2倉庫中任一名職工工資的職工信息為例,講解一下Any量詞的應(yīng)用。用Any量詞實現(xiàn):Select * from 職工 where 工資=any(Select 工資 from 職工 where 倉庫號=wh2)使用統(tǒng)計函數(shù)實現(xiàn):Select * from 職工 where 工資=(Select min(工資) from 職工 where倉庫號=wh2)23、All量詞查詢:All量詞查詢,要求子查詢中所有行都
17、使結(jié)果為真時,結(jié)果才為真。下面就以顯示工資大于等于wh1倉庫中所有職工工資的職工信息為例,講解一下All量詞的應(yīng)用。用Any量詞實現(xiàn):Select * from 職工 where 工資=All(Select 工資 from 職工 where 倉庫號=wh1)使用統(tǒng)計函數(shù)實現(xiàn):Select * from 職工 where 工資=(Select MAX(工資)from 職工 where 倉庫號=wh1)前面講解的量詞查詢都可以用統(tǒng)計函數(shù)代替,但有些查詢是不能用統(tǒng)計函數(shù)代替的。下面以顯示工資大于所有不同倉庫的平均工資的職工信息為例為講解一下。Select * from 職工 where 工資all(
18、Select avg(工資)from 職工 group by 倉庫號)該題用統(tǒng)計函數(shù)就無法解決。24、顯示部分記錄的Top查詢:在編程中,有時只需顯示滿足條件的前幾條記錄,這時就可以使用Top關(guān)鍵字??梢灾苯邮褂肨op數(shù)字,顯示指定條數(shù)記錄;也可以使用Top數(shù)字Percent,顯示所有滿足條件記錄的前百分之幾條記錄。下面以顯示工資最高的前三條職工信息為例來講解一下。Select top3 * from 職工 order by 工資 desc25、保存查詢:利用Into語句可以把查詢的結(jié)果保存成一張新表。下面就以備份“職工”表為例講解一下保存查詢。Use 企業(yè)銷售管理系統(tǒng)Select * int
19、o 職工備份 from 職工這樣就生成一張新表,表名為“職工備份”。26、集合的并運(yùn)算:SQL支持集合的并運(yùn)算(Union),即可以將兩個Selec語句的查詢結(jié)果通過并運(yùn)算合并成一個查詢結(jié)果。為了進(jìn)行并運(yùn)算,要求這樣的兩個查詢結(jié)果具有相同的字段個數(shù),并且對應(yīng)的字段的值要出自同一個值域,即具有相同的數(shù)據(jù)類型和取值范圍。Select * from 倉庫 where城市=北京UnionSelect * from 倉庫 where 城市=上海27、集合的交運(yùn)算:SQL支持集合的交運(yùn)算(Intersect),即可以將兩個Selec語句的查詢結(jié)果通過交運(yùn)算合并成一個查詢結(jié)果。為了進(jìn)行交運(yùn)算,要求這樣的兩個
20、查詢結(jié)果具有相同的字段個數(shù),并且對應(yīng)的字段的值要出自同一個值域,即具有相同的數(shù)據(jù)類型和取值范圍。Select 倉庫號 from 倉庫IntersectSelect 倉庫號 from 職工注意它們對集合的差運(yùn)算不支持。28、多表連接查詢:多表連接查詢就是將多個表中的數(shù)據(jù)結(jié)合到一起的查詢,即連接操作可以在一個Select語句中完成從我個表中查找和處理數(shù)據(jù)。使用連接的列必須是可連接的,即它們具有相同的數(shù)據(jù)類型、相同的意義。使用連接的列,列名可以相同,也可以不同。29、笛卡兒積:有的時候,如果連接條件沒有設(shè)置好,或者沒有設(shè)置連接條件,則結(jié)果將包含太多的行,這就是由笛卡兒積造成的。從原理上來講,連接首先
21、將形成表的笛卡兒積,即形成用于連接的表中所有的行的組合。下面以倉庫表與職工表連接為例為講解一下。Select * from 職工, 倉庫這是從兩張表中顯示所有字段,所以字段有重復(fù),并且產(chǎn)生了90條記錄,原因是倉庫表中有5條記錄,職工表有18條記錄,所以連接的結(jié)果是185=90條記錄。用于連接的表越多,則笛卡兒積的結(jié)果將越大。30、多表連接:在進(jìn)行多表連接時,一定要注意連接條件,下面以倉庫表與職工表連接為例來講解一下多表連接。Select * from 職工,倉庫 where 職工.倉庫號=倉庫.倉庫號這時顯示的記錄就沒有那么多了,只顯示18條記錄,并且發(fā)現(xiàn)兩張表的倉庫號是相對應(yīng)的。假設(shè)顯示工資
22、大于1500,面積大于600的城市與姓名信息。Select 城市,姓名 * from 職工,倉庫 where 職工.倉庫號=倉庫.倉庫號 and 工資1500 and 面積60031、超連接查詢:超連接查詢也是連接查詢,所以必須有兩張或兩張以上的表。超連接查詢共有4種:內(nèi)連接查詢、左連接查詢、右連接查詢、全連接查詢。使用超連接查詢不僅可以把滿足條件的記錄顯示出來,還可以把一部分不滿足條件的記錄以NULL顯示出來。1)內(nèi)連接查詢:只有滿足連接條件的記錄才出現(xiàn)在查詢結(jié)果集中。下面以顯示面積大于600的倉庫號、職工號、城市、面積、工資信息為例為講解一下內(nèi)連接:超連接:Select 倉庫.倉庫號,職工
23、號,城市,面積,工資 from 倉庫 inner join 職工 on 職工.倉庫號=倉庫.倉庫號 and 面積600普通連接:Select 倉庫.倉庫號,職工號,城市,面積,工資 from 職工,倉庫 where 職工.倉庫號=倉庫.倉庫號 and 面積6002)左連接查詢:除滿足連接條件的記錄顯示外,第一張表中不滿足條件的記錄也出現(xiàn)在查詢結(jié)果集中。下面以顯示面積大于600的倉庫號、職工號、城市、面積、工資信息為例為講解一下左連接。Select 倉庫.倉庫號,職工號,城市,面積,工資 from 倉庫 left join 職工 on 職工.倉庫號=倉庫.倉庫號 and 面積6003)右連接查詢
24、:除滿足連接條件的記錄顯示外,第二張表中不滿足條件的記錄也出現(xiàn)在查詢結(jié)果集中。下面以顯示面積大于600的倉庫號、職工號、城市、面積、工資信息為例為講解一下右連接。Select 倉庫.倉庫號,職工號,城市,面積,工資 from 倉庫 right join 職工 on 職工.倉庫號=倉庫.倉庫號 and 面積6004)全連接查詢:除滿足連接條件的記錄顯示外,兩張表中不滿足條件的記錄也出現(xiàn)在查詢結(jié)果集中。下面以顯示面積大于600的倉庫號、職工號、城市、面積、工資信息為例為講解一下全連接。Select 倉庫.倉庫號,職工號,城市,面積,工資 from 倉庫 full join 職工 on 職工.倉庫號
25、=倉庫.倉庫號 and 面積6005)多表超連接查詢:前面講解了兩個表的超連接,那么如果是3張表或更多張表該如何實現(xiàn)超鏈接呢?下面以顯示面積大于600的倉庫號、職工號、城市、面積、工資、金額信息為例為講解一下多表超連接。要顯示的字段信息來源于3張表,倉庫表、職工表、訂購單表,這里實現(xiàn)倉庫表與職工表的左連接,職工表與訂購單表的右連接。Select 倉庫.倉庫號,職工號,城市,面積,工資,金額 from 倉庫 left join 職工 on 職工.倉庫號=倉庫.倉庫號 right join 訂購單 on 職工.職工號=訂購單.職工號 and 面積60032、Insert插入語句:向數(shù)據(jù)庫表中插入數(shù)
26、據(jù)是最常用的功能:1)指定所有列:Insert into 倉庫(倉庫號,城市,面積,創(chuàng)建時間) values (wh6,鄭州,800,2005-12-01)按下鍵盤上的F5鍵,會顯示(1行受影響),這表示已成功地插入一條記錄。再在數(shù)據(jù)庫引擎查詢文檔中輸入“Select * from 倉庫”,然后按下鍵盤上的F5鍵,就可以執(zhí)行該SQL語句,這樣就可以在查詢結(jié)果上看到你插入的記錄。在這里要注意,倉庫ID是自動編號,所以不能插入。其實上面的代碼還可以省略表后面的字段,這樣也可以成功地插入記錄。Insert into 倉庫 values (wh6,鄭州,800,2005-12-01)2)指定部分列:下面以向倉庫表中添加一條記錄為例來講解一下指定部分列。Insert into 倉庫(倉庫號,面積) values (wh7,800)上述代碼也可以這樣來寫:Insert into 倉庫 values (wh7,null,800,null)或Insert into 倉庫(倉庫號,城市,面積,創(chuàng)建時間) values (wh7,null,800,nul)3)帶有子查詢的插入語句:使用帶有子查詢的插入語句,首先要注意兩個表的結(jié)構(gòu)相同。下面還是用一個實例來講解一下。首先創(chuàng)建一張與倉庫表結(jié)構(gòu)相同的空表,然后在數(shù)據(jù)庫引擎查詢文檔中輸入如下代碼:Selec
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中建自動施工方案
- 《物理競賽題解析與物理競賽輔導(dǎo)教學(xué)方案》
- 汽車車門施工方案
- 內(nèi)墻保溫板施工方案
- 農(nóng)村拆除施工方案范本
- 揚(yáng)州脫硫煙囪施工方案
- 古詩二首(東溪和蠶麥)閱讀練習(xí)
- 建筑工程臨時用工合同
- 包頭中招試題數(shù)學(xué)試卷
- 污泥干化機(jī)更換施工方案
- 嬰幼兒發(fā)展引導(dǎo)員(育嬰員)職業(yè)技能競賽理論考試題庫(含答案)
- 全國國家版圖知識競賽題庫及答案(中小學(xué)組)
- 顧客滿意度調(diào)查分析報告表
- 《托育服務(wù)政策法規(guī)與職業(yè)倫理》全套教學(xué)課件
- 湖北省武漢市實驗外國語學(xué)校小學(xué)部小學(xué)六年級小升初期末語文試題(含答案)
- 山東省專升本綜合一(機(jī)械設(shè)計制造及其自動化)模擬試卷1(共264題)
- 高職生職業(yè)生涯規(guī)劃與就業(yè)指導(dǎo) 課件全套 崔麗娜 第1-8章 揭開生涯規(guī)劃面紗 走進(jìn)生涯規(guī)劃- 助力職業(yè)發(fā)展 職場適應(yīng)
- 2024營運(yùn)純電動汽車換電服務(wù)技術(shù)要求
- (完整文本版)日文履歷書(文本テンプレート)
- T-CPQS C010-2024 鑒賞收藏用潮流玩偶及類似用途產(chǎn)品
- 三年級科學(xué)《月相的變化規(guī)律》說課課件
評論
0/150
提交評論