MicrosoftAccess数据库中SQL语句大全.docx
- 文档编号:4119752
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:14
- 大小:243.72KB
MicrosoftAccess数据库中SQL语句大全.docx
《MicrosoftAccess数据库中SQL语句大全.docx》由会员分享,可在线阅读,更多相关《MicrosoftAccess数据库中SQL语句大全.docx(14页珍藏版)》请在冰豆网上搜索。
MicrosoftAccess数据库中SQL语句大全
ACCESS数据库得SQL语句教学
引子:
如何找到ACCESS数据库得SQL视图:
1)单击下图左侧得:
4
2)单击上图顶部得,弹出如下图对话框:
得文件菜单下而出现一个SQL得下拉框:
6)在“SQL"下拉框中选择如下图所示中得"SQL视图即可
设计视飙)
数据表视图区)
SQL视團@)数据透視表视图a
J文件电)編辑⑥视国®乎Pdn越1A勢」
Hiua
Hsql
必数据透視图视图(Y)
K査询所有记录:
SeieCt*通常用于快速查瞧表中得记录。
当对表得结构无法确切记忆时,或要快速查瞧表中得记录时,使用Select*就是很方便得。
use企业销售管理系统
Select*from职工
2、投影査询:
很多时候并不需要将所有列得数据都显示出来。
投影查询就就是允许用户显示所需要得列。
假设显示职工表中职工号、姓名、工资信息,具体操作方法如下。
Se1ect职工号,姓名,工资from职工
在Se1ect査询中,还可以按照实际得需要或自己得喜好安排显示列得顺序,如果要把姓名放到第一列,则代码如下:
Select姓名,职工号,工资from职工
3、条件査询:
显示whl或wh2仓库、性别不为女、工资在1300〜2100之间得职工信息。
具体操作如下:
Se1ect*from职工号where(仓库号=Mil'or仓库号=hvh2*)Andnot性别=,女*and工资>=1300and匸资工资〈=21OO
在这里一定要注意,(仓库号='wh1'or仓库号—定要加括号,否则就不就是原题得意思。
4、谓词In査询:
在査找特定条件得数拯时,如果条件较多,就需要用到多个Or运算符,以査找满足其中任一条得记录。
但使用多个0r运算符,将使Where子句变得过于冗长,这时使用In就非常清楚。
另外,在后面讲解得嵌套査询中,也必须使用In査询。
下面以显示zgl、zg2、zgll、zgl5得订购单信息为例具体讲解一下.
使用Or运算符
SeleCt*from订购单where职工号「zgl,or职工号=,zg2T
Or职工号=^zg1Vor职工号='zgl5'
使用谓词In
Use企业销售管理系统
Select*from订购单where职工号in('zg1g2:
*zg11\*zgl5')
在Select语句中,还支持In与Not结合使用。
假设显示职工号不为zgl,zg2,zglbzgl5得订购单信息,具体代码如下:
使用01•运算符
Select*from订购单where职工号!
='zgTor职工号!
=^zg
0r职工号!
izgiror职工号!
='zg15,
使用谓词In
Use企业销售管理系统
Select*from订购单where职工号notin('zg1\*zg2'»*zgll\'zgl5ja、模糊Like査询:
有得时候,我们不清楚所要査询得信息,如显示职工信息,但不能确定该职工得姓名,只知道她姓名中含有“王“字,那该如何査找呢?
SQL中提供了Like关键字,使用Like进行了査询时,还要指定通配符。
通配符及其含义
通配符
含义
%
包含•()个或多个字符
_(下画线)
包含一个字符
[]
指定范H(如[a-z]
[A]
不属于指定范H([八a-Z])
在SQL语句中,还支持Like与Not结合使用.假设显示姓名中不含有“王”字得职工信息,具体代码如下:
Select火from职工where姓名noflike,王%
在该例中,如果您知道姓名中含有“王”字,并且姓名只有两个字,那么可以进一步缩小查找范围,具体代码如下:
Select*from职工where姓名not1i2王_'
这样就可以査找到姓名中只有两个字,并且姓为"王”得职工信息.
6、空值NULL査询:
在SQL语句中使用ISNULL来进行就是否为空得判断。
下面以显示性别为空得职工信息为例具体讲解一下。
Select*from职工where性别isnull
假设显示性别不为空得职工信息,具体代码如下:
Select*from职匸where性别isnotnu11
7、限制范围Between-And査询:
在数据医疗队引擎査询中,限制范H也就是经常使用得一个条件。
当然可以使用大于等于号、小于等于号与And运算符三者来完成范W得限制,但使用Between…And结构,会使SQL更清楚。
下面以显示工资在1300"1900之间得职工信息为例具体讲解一下。
Between…And语句
SeieCt*from职工where匸资Between1300And1900
大于等于号、小于等于号与AM运算符
Select*froin职工where匸资>=I300And工资<=1900
在SQL语句中,还支持Between*"And与Not结合使用。
假设显示工资不在
1300〜1900之间得职工信息,具体代码如下:
Between***And语句
Select*from职工where工资notBetween1300And1900
大于等于号、小于尊于号与And运算符
Select*from职工where匸资<=1300And匸资>=1900
8、消除重复字段数据Distinct査询:
在SQL投影査询中,可能会有许多重复得数据,使用关键字Distinct就可以从结果集中除去重复得数据。
下面以显示职工得工资信息为例具体讲解一下:
显示有重复得数据
Select匸资From职工
显示无重复得数据
Se1ectDistinct工资from职工
9、单表嵌套査询:
就就是外层Select语句与内层Se!
ect语句都来源于同一张表。
下面以显示仓库面积大于WhI仓库面积得仓库信息为例来讲解一下.
首先利用SeleC(语句求出whl仓库得仓库面积,然后再显示面积大于该值得仓库信息。
Seiect*froin仓库where面积>(seiect面积from仓库where仓库号='whP)
嵌套査询中也可以带有逻辑运算符、谓词In、Like、Between…And结构。
假设显示wh1或wh2仓库得工资不大于职工zgl6工资得职工信息,并要求职工姓名不含有“平”字.
首先利用Select语句求出职工2gl6得工资,然后再对姓名进行模糊査询。
SeleCt*from职工where工资v=(se1ect匸资from职」】where职工号=,zgl6Tand姓名notlike,%平%,and仓库号inOwhl:
)
10、多表嵌套査询:
多表嵌套査询就就是外层Select语句与内层Se1ect语句来源于不同得表,但表之间要存在关系。
这也就是SQL语句中最重要得査询.下面以显示北京地区得职工信息为例来讲解一下。
首先利用SeleCt语句求出北京地区得仓库号,然后利用仓库号再显示职工信息。
use企业销售管理系统
Select*from职匸where仓库号in(select仓库号fromwhere城市=,北京0
不仅可以实现两个表得嵌套,还可以实现多个表得嵌套,假设显示北京地区得职工得订购单信息。
首先利用Se1ect语句得到北京地区得仓库号,然后利用得到得仓库号得到该仓库中得职工号,再利用得到得职工号得到职工得订购单信息。
Select*from订购单where职工号in(SeIect职工号from职工where仓库号in(se1ect仓库号from仓库where城市二目匕京,))多表嵌套查询中也可以带有逻辑运算符、谓词In、Like、Between、And结构。
假设显示北京地区得职工得订购单信息,并且职工得工资大于1200,订购日期为2003年9月3日〜2006年1月1日。
Select*froin订购单where职工号in ect仓库号from仓库wherettTP-and订购日期between,2003-09—03,“nd*2006-01-01' 11、单级排序査询: 排序得关键字就是Orderby,默认状态下就是升序,关键字就是Asco降序排列得关键字就是Desco排序字段可以就是数值型,也可以就是字符型、日期时间型。 下面以按工资从高到低显示职工信息为例来讲解一下。 Select*from职工Orderby匸资desc 在排序查询中还可以带有逻辑运算符、谓词In、Like、Between.And结构。 假设显示wh! 或wh2仓库得,工资不大于职工zgl6工资得职工信息,并要求职工姓名不含有“平“字,按工资从低到高显示。 首先利用SeieCt语句求出职工zgl6得工资,然后再对姓名进行模糊査询,最后再排序。 Se\ect*from职工where匸资(=(Select工资from职工where职工号=,zgl6,)and姓名notlike吆平%,and仓库号inCwhl7wh2*)Orderby丄资 12、多级排序査询: 按照一列进行排序后,如果该列有重复得记录值,则重复记录值这部分就没有进行有效得排序,这就需要再附加一个字段,作为第二次排序得标准,对没有排开得记录进行再排列。 下面以按工资从高到低显示职工信息为例来讲解一下。 单级排序,按工资降序。 Select*from职工Orderby工资desc 多级排序,先按工资降序,再按职工ID升序。 SeleCt*from职工Orderby匸资desc,职工IDasc 13、与别名一起使用得统计函数: 在实际编程中,有时候需要知道所有记录某项值得总与、平均值、最大值等,这时就要用到统计函数査询。 常用得统计函数共有6个。 统计函数及其意义 统计函数 含义 COUNT(*) 统汁选择得记录得个数 COUNT() 统计特定列中值得个数 SUMO 计算总与(必须就是数值型字段) AVG() 计算平均值(必须就是数值型字段) MAX() 确定最大值 NIN() 确定最小值 在使用统汁函数时,还要注意COUNT。 、SUM()、AVG()可以使用DISTINCT关键字,以在计算机中不包含重复得行。 而对于MAX()、MIN()、COUNT(*),山于不会改变其结果,因此没有必要使用DISTINCT. 利用SELECT语句显示统计值就是没有列名得,下面以显示职工得最大值、最小值、工资总与、平均工资、职工人数为例来讲解一下。 ASeieCtmax(工资),inin(工资),SUM(工资),avg(匸资),count(*)from职工这时会发现统计值没有列名,现在来给统计字段添加列名. Selectmax(工资)as最大工资win(工资)as最小工资,SUM(工资)aS工资总与,avg(工资)as平均工资,count(*)as职工人数from职工 在统计函数中还可以加条件,假设显示工资大于1500得职工得最大值、最小值、工资总与、平均工资、职工人数信息。 Selectmax(工资)as最大工资,min(工资)as最小工资,SUM(工资)as工资总与,avg(工资)as平均工资,count(*)as职工人数from职工where.11资}1500 14、带有统计函数得嵌套査询: 还可以利用统计函数得到得数据作为SeleCt査询语句得条件进行査询。 下面以显示工资大于所有职工平均值得职工信息为例来讲解一下。 *from职工where匸资>(seiectavg(工资)fro SeieCt m职工) 在统计函数査询中可以带有比较运算符、逻辑运算符、In、Between-And等。 假设显示工资大于whl或wh2仓库中职工平均工资,并且职工姓名不含有“亮"字得职工信息。 Select*from职」Iwhere工资)(selectavg(工资)from职工where仓库号==*wh1*or仓库号=,wh2,)and姓名notlike%亮%, 15、统计函数字段显示在表字段中及运算字段: 如果在职工表中添加一个职工平均工资值字段,这就对实际编程有很大得意义,即可以利用平均字段进行运算,大大提高编程速度.下面以在职工表中添加平均工资为例为讲解一下. Select职工、*,(seiectavg(工资)from职工)as平均工资from职工 在职工表中添加了一个平均工资字段,即在SELECT査询字段中添加了一个SELECT子査询. 在SELECT査询中,还可以汁算出每名职工得丄资与所有职工平均工资之差,具体操作如下: Se1ect职工、*,(seleCtavg(丄资)from职工)as平均工资,工资一(selectavg(工资)from职工)as平均工资得差from职工 16、分组査询: 使用GROUPBY分组査询,要注意分组得标准一定要有意义,如显示不同仓库得平均工资,显示不同职工得最大订单金额等。 如果显示不同职工得平均工资那就没有意义了。 下面显示不同仓库得平均工资、工资与、最大工资、最小工资、工资人数信息为例来讲解一下。 Select仓库号,m;ix(工资)as最大工资,min(11资)as最小工资,sum(工资)as.匸资总与,avg(工资)as平均工资,count(*)as职工人数from职工groupby仓库号 在分组査询中还可以带有逻辑运算符、谓词In、Like、Between-And结构。 假设显示工资大于zgl职工工资得不同仓库得平均工资、工资与、最大工资、最小工资、工资人数信息。 首先利用SELECT语句求出职工zgl得工资,然后再分组显示统计信息。 Se1eCt仓库号,max(匸资)as最大工资,min(工资)as最小工资,sum(工资)as工资总与,avg(匸资)us平均工资,count(*) as职工人数from职工where匸资>(Select工资from职工where职工号=,zgr)groupby仓库号 17>带有Having得分组查询: 分组以前得条件,要用Where关键字,而分组之后得条件则要使用Having关键字。 下面以显示不同仓库得平均工资、工资与、最大工资、最小工资、工资人数信息,但要求该仓库平均工资大于1760为例来讲解一下。 Se1ect仓库号.nKix(工资)us最大工资,min(工资)as最小工资,sum(工资)as匸资总与,avg(工资)as平均工资,count(*)as职工人数from职工groupby仓库号havingavg(工资)>1760 在分组査询得Having条件中还可以带有逻辑运算符、谓词In、Like、Between-And结构。 假设显示不同仓库得平均工资、工资与、最大工资、最小工资、工资人数信息,但要求该仓库得平均工资大于1760,最大工资与最小工资之差在380-800之间。 Select仓库号,mux(工资)as最大工资,min(丄资)as最小工资,sum(工资)as匸资总与,avg(E资)as平均工资,count(*)as职工人数from职11grOUpby仓库号havingavg(工资)>1760andmax(工资)-min(工资)between380and800 18、带有分组得嵌套査询: 还可以利用分组得到得数据作为SELECT查询语句得条件进行查询。 下面以显示职工所在仓库得最大工资与最小工资之差在380〜800之间得职工所在仓库信息为例为讲解一下。 先求出职丄所在仓库得最大工资与最小丄资之差在380-800之间得职工所在得仓库号,再利用这个仓库号显示仓库信息。 Se1ecl*from仓库,where仓库号in(Select仓库号from职ILgroupby仓库号havingdmax(工资)-inin(工资)between380and800 19、内外层嵌套实现分组功能: 利用groupby分组显示统汁字段信息,有很多字段不能显示.如显示不同仓库得平均工资信息,在这个查询中只能显示仓库号,不能显示职工号及职工得工资。 因为不同仓库得平均工资,有儿个仓库就显示几条平均工资,而每个仓库中得职工则有很多. 下面以显示不同职工经手订购单金额最大得订单信息为例来讲解一下。 在这里应该边求出每名职工订购单金额得最大值,边显示该职工所对应得这条订购单信息.具体代码如下: Selecta、*from订购单awhere金额=(se1ectmax(金额)from订购单where职工号二a、职工号) 注意: 上面语句中得订购单a就是给这个订购单起得一个别名,大家可以把它瞧成就其实就就是订购单得一张复制得表,在这里运用它只就是为了使内外层得嵌套更清晰、更容易理解。 20、分组査询字段显示在表字段中及运算字段: 如果在职工表中添加职工所在仓库得平均工资值字段,这就对实际编程有很大得意义,即可以利用平均字段进行运算,大大提高编程速度.下面以在职工表中添加职工所在得仓库得平均工资字段为例来讲解一下. SeieCt3、*,(Selectavg(工资)from职工where仓库号m、 仓库号)as所在仓库得平均工资from职工a 在Se1ect査询中,还可以计算出每名职工得工资与职工所在仓库得平均工资之差,具体操作如下: Selecta、*,(Se! ectavg(工资)from职工where仓库号= a、仓库号)as所在仓库得平均工资,工资一(Se1ectavg(工资)from职工where仓库号二a、仓库号)as所在仓库得平均工资之差from职工 a 21、Exists谓词査询: 其实In就就是谓词査询,还有谓词Exists与Exists,这两个谓词实现得功能就是相同得,只就是写法不同。 In多用于嵌套子查询语句中,而Exists多用于判断Select语句就是否返回査询结果。 常用量词有Any、All打Some就是同义词。 在进行比较运算时,只要子査询中有一行能使结果为真,结果就为真.而Ai1则要求子査询中所有行都使结果为真时,结果才为真。 下面以显示那些仓库中还没有职工得仓库信息为例,讲解一下In谓词与Exists谓词在代码上得不同. 用Exists谓词实现: Se1ect*from仓库wherenotExists(Se1ect*from职匸where仓库号二仓库、仓库号) 用In谓词实现: Select火from仓库where仓库号notin(Se1ect仓库号from职工) 22、Any量词査询: Any量词査询,在进行比较运算时,只要子査询中有一行能使结果为真,则结果即为真.下面就以显示工资大于等于wh2仓库中任一名职工工资得职工信息为例,讲解一下Any量词得应用。 用Any量词实现: Select*from职工where工资〉=imy(Select工资from职」】where仓库号=*wh2') 使用统计函数实现: Se1ect*from职工where匸资>=(Selectmin(工资)froin职工where仓库号=,wh2J 23、AH量词査询: All量词查询,要求子查询中所有行都使结果为真时,结果才为真。 下面就以显示工资大于等于wh1仓库中所有职工工资得职工信息为例,讲解一下A1! 量词得应用。 用Any量词实现: Seiect*from职工where工资>=AH(Select匸资From职工where仓库号=*whP) 使用统计函数实现: Se1ect*from职工where匸资>=(SelectMAX(工资)from职丄where仓库号=,wh1,) 前面讲解得量词査询都可以用统计函数代替,但有些查询就是不能用统计函数代替得.下面以显示工资大于所有不同仓库得平均工资得职工信息为例为讲解一下。 Se! eCt*froin职工where匸资>al1<Seiectavg(工资)from职工groupby仓库号) 该题用统计函数就无法解决。 24、显示部分记录得Top査询: 在编程中,有时只需显示满足条件得询儿条记录,这时就可以使用Top关键字。 可以直接使用Top数字,显示指定条数记录;也可以使用Top数字Percent,显示所有满足条件记录得前白分之儿条记录。 下面以显示工资最商得前三条职工信息为例来讲解一下。 Selecttop3火from职匸orderby工资desc 25、保存査询;利用Into语句可以把查询得结果保存成一张新表。 下面就以备份“职工”表为例讲解一下保存查询。 Use企业销售管理系统 Select*into职工备份from职工 这样就生成一张新表,表名为“职工备份”。 26、集合得并运算: SQL支持集合得并运算(Union),即可以将两个Seiec语句得査询结果通过并运算合并成一个査询结果。 为了进行并运算,要求这样得两个查询结果具有相同得字段个数,并且对应得字段得值要出自同一个值域,即具有相同得数据类型与取值范ffl。 Select*from仓库where城市二'北京, Union Select*from仓库where城市=,上海, 27、集合得交运算: SQL支持集合得交运算(Intersect),即可以将两个Selec语句得查询结果通过交运算合并成一个查询结果。 为了进行交运算,要求这样得两个查询结果具有相同得字段个数,并且对应得字段得值要出自同一个值域,即具有相同得数据类型与取值范围. Select仓库号fro
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MicrosoftAccess 数据库 SQL 语句 大全