ACCESS数据库中常见的SQL语句汇总教程Word格式文档下载.docx
- 文档编号:20554674
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:13
- 大小:24.22KB
ACCESS数据库中常见的SQL语句汇总教程Word格式文档下载.docx
《ACCESS数据库中常见的SQL语句汇总教程Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《ACCESS数据库中常见的SQL语句汇总教程Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
4、谓词In查询:
在查找特定条件得数据时,如果条件较多,就需要用到多个Or运算符,以查找满足其中任一条得记录。
但使用多个Or运算符,将使Where子句变得过于冗长,这时使用In就非常清楚。
另外,在后面讲解得嵌套查询中,也必须使用In查询。
下面以显示zg1、zg2、zg11、zg15得订购单信息为例具体讲解一下。
使用Or运算符
Select*from订购单where职工号='
zg1'
or职工号='
zg2'
Or职工号='
zg11'
zg15'
使用谓词In
Use企业销售管理系统
Select*from订购单where职工号in('
'
在Select语句中,还支持In与Not结合使用。
假设显示职工号不为zg1,zg2,zg11,zg15得订购单信息,具体代码如下:
Select*from订购单where职工号!
='
or职工号!
Or职工号!
Select*from订购单where职工号notin('
5、模糊Like查询:
有得时候,我们不清楚所要查询得信息,如显示职工信息,但不能确定该职工得姓名,只知道她姓名中含有“王”字,那该如何查找呢?
SQL中提供了Like关键字,使用Like进行了查询时,还要指定通配符。
通配符及其含义
通配符
含
义
%
包含0个或多个字符
_(下画线)
包含一个字符
[]
指定范围(如[a-z]
[^]
不属于指定范围([^a-z])
在SQL语句中,还支持Like与Not结合使用。
假设显示姓名中不含有“王”字得职工信息,具体代码如下:
Select*from职工where姓名notlike'
王%'
在该例中,如果您知道姓名中含有“王”字,并且姓名只有两个字,那么可以进一步缩小查找范围,具体代码如下:
王_'
这样就可以查找到姓名中只有两个字,并且姓为“王”得职工信息。
6、空值NULL查询:
在SQL语句中使用ISNULL来进行就是否为空得判断。
下面以显示性别为空得职工信息为例具体讲解一下。
Select*from职工where性别isnull
假设显示性别不为空得职工信息,具体代码如下:
Select*from职工where性别isnotnull
7、限制范围Between…And查询:
在数据医疗队引擎查询中,限制范围也就是经常使用得一个条件。
当然可以使用大于等于号、小于等于号与And运算符三者来完成范围得限制,但使用Between…And结构,会使SQL更清楚。
下面以显示工资在1300~1900之间得职工信息为例具体讲解一下。
Between…And语句
Select*from职工where工资Between
1300And1900
大于等于号、小于等于号与And运算符
Select*from职工where工资>
=1300And工资<
=1900
在SQL语句中,还支持Between…And与Not结合使用。
假设显示工资不在1300~1900之间得职工信息,具体代码如下:
Select*from职工where工资notBetween1300And1900
Select*from职工where工资<
=1300And工资>
8、消除重复字段数据Distinct查询:
在SQL投影查询中,可能会有许多重复得数据,使用关键字Distinct就可以从结果集中除去重复得数据。
下面以显示职工得工资信息为例具体讲解一下:
显示有重复得数据
Select工资from职工
显示无重复得数据
SelectDistinct工资from职工
9、单表嵌套查询:
就就是外层Select语句与内层Select语句都来源于同一张表。
下面以显示仓库面积大于wh1仓库面积得仓库信息为例来讲解一下。
首先利用Select语句求出wh1仓库得仓库面积,然后再显示面积大于该值得仓库信息。
Select*from仓库where面积>
(select面积from仓库where仓库号='
嵌套查询中也可以带有逻辑运算符、谓词In、Like、Between…And结构。
假设显示wh1或wh2仓库得工资不大于职工zg16工资得职工信息,并要求职工姓名不含有“平”字。
首先利用Select语句求出职工zg16得工资,然后再对姓名进行模糊查询。
=(select工资from职工where职工号='
zg16'
)and姓名notlike'
%平%'
and仓库号in('
10、多表嵌套查询:
多表嵌套查询就就是外层Select语句与内层Select语句来源于不同得表,但表之间要存在关系。
这也就是SQL语句中最重要得查询。
下面以显示北京地区得职工信息为例来讲解一下。
首先利用Select语句求出北京地区得仓库号,然后利用仓库号再显示职工信息。
Select*from职工where仓库号in(select仓库号fromwhere城市='
北京'
不仅可以实现两个表得嵌套,还可以实现多个表得嵌套,假设显示北京地区得职工得订购单信息。
首先利用Select语句得到北京地区得仓库号,然后利用得到得仓库号得到该仓库中得职工号,再利用得到得职工号得到职工得订购单信息。
Select*from订购单where职工号in(Select职工号from职工where仓库号in(select仓库号from仓库where城市='
))
多表嵌套查询中也可以带有逻辑运算符、谓词In、Like、Between、And结构。
假设显示北京地区得职工得订购单信息,并且职工得工资大于1200,订购日期为2003年9月3日~2006年1月1日。
Select*from订购单where职工号in(Select职工号from职工where工资>
1200and仓库号in(select仓库号from仓库where城市='
))and订购日期between'
2003-09-03'
and'
2006-01-01'
11、单级排序查询:
排序得关键字就是Orderby,默认状态下就是升序,关键字就是Asc。
降序排列得关键字就是Desc。
排序字段可以就是数值型,也可以就是字符型、日期时间型。
下面以按工资从高到低显示职工信息为例来讲解一下。
Select*from职工Orderby工资desc
在排序查询中还可以带有逻辑运算符、谓词In、Like、Between、And结构。
假设显示wh1或wh2仓库得,工资不大于职工zg16工资得职工信息,并要求职工姓名不含有“平”字,按工资从低到高显示。
首先利用Select语句求出职工zg16得工资,然后再对姓名进行模糊查询,最后再排序。
=(Select工资from职工where职工号='
and仓库号in('
'
)orderby工资
12、多级排序查询:
按照一列进行排序后,如果该列有重复得记录值,则重复记录值这部分就没有进行有效得排序,这就需要再附加一个字段,作为第二次排序得标准,对没有排开得记录进行再排列。
单级排序,按工资降序。
多级排序,先按工资降序,再按职工ID升序。
Select*from职工Orderby工资desc,职工IDasc
13、与别名一起使用得统计函数:
在实际编程中,有时候需要知道所有记录某项值得总与、平均值、最大值等,这时就要用到统计函数查询。
常用得统计函数共有6个。
统计函数及其意义
统计函数
COUNT(*)
统计选择得记录得个数
COUNT()
统计特定列中值得个数
SUM()
计算总与(必须就是数值型字段)
AVG()
计算平均值(必须就是数值型字段)
MAX()
确定最大值
NIN()
确定最小值
在使用统计函数时,还要注意COUNT()、SUM()、AVG()可以使用DISTINCT关键字,以在计算机中不包含重复得行。
而对于MAX()、MIN()、COUNT(*),由于不会改变其结果,因此没有必要使用DISTINCT。
利用Select语句显示统计值就是没有列名得,下面以显示职工得最大值、最小值、工资总与、平均工资、职工人数为例来讲解一下。
Selectmax(工资),min(工资),SUM(工资),avg(工资),count(*)from职工
这时会发现统计值没有列名,现在来给统计字段添加列名。
Selectmax(工资)as最大工资,min(工资)as最小工资,SUM(工资)as工资总与,avg(工资)as平均工资,count(*)as职工人数from职工
在统计函数中还可以加条件,假设显示工资大于1500得职工得最大值、最小值、工资总与、平均工资、职工人数信息。
Selectmax(工资)as最大工资,min(工资)as最小工资,SUM(工资)as工资总与,avg(工资)as平均工资,count(*)as职工人数from职工where工资>
1500
14、带有统计函数得嵌套查询:
还可以利用统计函数得到得数据作为Select查询语句得条件进行查询。
下面以显示工资大于所有职工平均值得职工信息为例来讲解一下。
Select*from职工where工资>
(selectavg(工资)from职工)
在统计函数查询中可以带有比较运算符、逻辑运算符、In、Between…And等。
假设显示工资大于wh1或wh2仓库中职工平均工资,并且职工姓名不含有“亮”字得职工信息。
Select*from职工where工资>
(selectavg(工资)from职工where仓库号='
%亮%'
15、统计函数字段显示在表字段中及运算字段:
如果在职工表中添加一个职工平均工资值字段,这就对实际编程有很大得意义,即可以利用平均字段进行运算,大大提高编程速度。
下面以在职工表中添加平均工资为例为讲解一下。
Select职工、*,(selectavg(工资)from职工)as平均工资from职工
在职工表中添加了一个平均工资字段,即在Select查询字段中添加了一个Select子查询。
在Select查询中,还可以计算出每名职工得工资与所有职工平均工资之差,具体操作如下:
Select职工、*,(selectavg(工资)from职工)as平均工资,工资-(selectavg(工资)from职工)as平均工资得差from职工
16、分组查询:
使用GROUPBY分组查询,要注意分组得标准一定要有意义,如显示不同仓库得平均工资,显示不同职工得最大订单金额等。
如果显示不同职工得平均工资那就没有意义了。
下面显示不同仓库得平均工资、工资与、最大工资、最小工资、工资人数信息为例来讲解一下。
Select仓库号,max(工资)as最大工资,min(工资)as最小工资,sum(工资)as工资总与,avg(工资)as平均工资,count(*)as职工人数from职工groupby仓库号
在分组查询中还可以带有逻辑运算符、谓词In、Like、Between…And结构。
假设显示工资大于zg1职工工资得不同仓库得平均工资、工资与、最大工资、最小工资、工资人数信息。
首先利用Select语句求出职工zg1得工资,然后再分组显示统计信息。
Select仓库号,max(工资)as最大工资,min(工资)as最小工资,sum(工资)as工资总与,avg(工资)as平均工资,count(*)as职工人数from职工where工资>
(Select工资from职工where职工号='
)groupby仓库号
17、带有Having得分组查询:
分组以前得条件,要用Where关键字,而分组之后得条件则要使用Having关键字。
下面以显示不同仓库得平均工资、工资与、最大工资、最小工资、工资人数信息,但要求该仓库平均工资大于1760为例来讲解一下。
Select仓库号,max(工资)as最大工资,min(工资)as最小工资,sum(工资)as工资总与,avg(工资)as平均工资,count(*)as职工人数from职工groupby仓库号havingavg(工资)>
1760
在分组查询得Having条件中还可以带有逻辑运算符、谓词In、Like、Between…And结构。
假设显示不同仓库得平均工资、工资与、最大工资、最小工资、工资人数信息,但要求该仓库得平均工资大于1760,最大工资与最小工资之差在380~800之间。
1760andmax(工资)-min(工资)between380and800
18、带有分组得嵌套查询:
还可以利用分组得到得数据作为Select查询语句得条件进行查询。
下面以显示职工所在仓库得最大工资与最小工资之差在380~800之间得职工所在仓库信息为例为讲解一下。
先求出职工所在仓库得最大工资与最小工资之差在380~800之间得职工所在得仓库号,再利用这个仓库号显示仓库信息。
Select*from仓库,where仓库号in(Select仓库号from职工groupby仓库号havingdmax(工资)-min(工资)between380and800
19、内外层嵌套实现分组功能:
利用groupby分组显示统计字段信息,有很多字段不能显示。
如显示不同仓库得平均工资信息,在这个查询中只能显示仓库号,不能显示职工号及职工得工资。
因为不同仓库得平均工资,有几个仓库就显示几条平均工资,而每个仓库中得职工则有很多。
下面以显示不同职工经手订购单金额最大得订单信息为例来讲解一下。
在这里应该边求出每名职工订购单金额得最大值,边显示该职工所对应得这条订购单信息。
具体代码如下:
Selecta、*from订购单awhere金额=(
select
max(金额)from订购单where职工号=a、职工号)
注意:
上面语句中得订购单a就是给这个订购单起得一个别名,大家可以把它瞧成就其实就就是订购单得一张复制得表,在这里运用它只就是为了使内外层得嵌套更清晰、更容易理解。
20、分组查询字段显示在表字段中及运算字段:
如果在职工表中添加职工所在仓库得平均工资值字段,这就对实际编程有很大得意义,即可以利用平均字段进行运算,大大提高编程速度。
下面以在职工表中添加职工所在得仓库得平均工资字段为例来讲解一下。
Selecta、*,(Selectavg(工资)from职工where仓库号=a、仓库号)as所在仓库得平均工资from职工a
在Select查询中,还可以计算出每名职工得工资与职工所在仓库得平均工资之差,具体操作如下:
Selecta、*,(Selectavg(工资)from职工where仓库号=a、仓库号)as所在仓库得平均工资,工资-(Selectavg(工资)from职工where仓库号=a、仓库号)as所在仓库得平均工资之差from职工a
21、Exists谓词查询:
其实In就就是谓词查询,还有谓词Exists与Exists,这两个谓词实现得功能就是相同得,只就是写法不同。
In多用于嵌套子查询语句中,而Exists多用于判断Select语句就是否返回查询结果。
常用量词有Any、All与Some就是同义词。
在进行比较运算时,只要子查询中有一行能使结果为真,结果就为真。
而All则要求子查询中所有行都使结果为真时,结果才为真。
下面以显示那些仓库中还没有职工得仓库信息为例,讲解一下In谓词与Exists谓词在代码上得不同。
用Exists谓词实现:
Select*from仓库wherenotExists(Select*from职工where仓库号=仓库、仓库号)
用In谓词实现:
Select*from仓库where仓库号notin(Select仓库号from职工)
22、Any量词查询:
Any量词查询,在进行比较运算时,只要子查询中有一行能使结果为真,则结果即为真。
下面就以显示工资大于等于wh2仓库中任一名职工工资得职工信息为例,讲解一下Any量词得应用。
用Any量词实现:
=any(Select工资from职工where仓库号='
使用统计函数实现:
=(Selectmin(工资)from职工where
仓库号='
23、All量词查询:
All量词查询,要求子查询中所有行都使结果为真时,结果才为真。
下面就以显示工资大于等于wh1仓库中所有职工工资得职工信息为例,讲解一下All量词得应用。
=All(Select工资from职工where仓库号='
=(SelectMAX(工资)from职工where仓库号='
前面讲解得量词查询都可以用统计函数代替,但有些查询就是不能用统计函数代替得。
下面以显示工资大于所有不同仓库得平均工资得职工信息为例为讲解一下。
all(Selectavg(工资)from职工groupby仓库号)
该题用统计函数就无法解决。
24、显示部分记录得Top查询:
在编程中,有时只需显示满足条件得前几条记录,这时就可以使用Top关键字。
可以直接使用Top数字,显示指定条数记录;
也可以使用Top数字Percent,显示所有满足条件记录得前百分之几条记录。
下面以显示工资最高得前三条职工信息为例来讲解一下。
Selecttop3*from职工orderby工资desc
25、保存查询:
利用Into语句可以把查询得结果保存成一张新表。
下面就以备份“职工”表为例讲解一下保存查询。
Select*into职工备份from职工
这样就生成一张新表,表名为“职工备份”。
26、集合得并运算:
SQL支持集合得并运算(Union),即可以将两个Selec语句得查询结果通过并运算合并成一个查询结果。
为了进行并运算,要求这样得两个查询结果具有相同得字段个数,并且对应得字段得值要出自同一个值域,即具有相同得数据类型与取值范围。
Select*from仓库where
城市='
Union
Select*from仓库where城市='
上海'
27、集合得交运算:
SQL支持集合得交运算(Intersect),即可以将两个Selec语句得查询结果通过交运算合并成一个查询结果。
为了进行交运算,要求这样得两个查询结果具有相同得字段个数,并且对应得字段得值要出自同一个值域,即具有相同得数据类型与取值范围。
Select仓库号from仓库
Intersect
Select仓库号from职工
注意它们对集合得差运算不支持。
28、多表连接查询:
多表连接查询就就是将多个表中得数据结合到一起得查询,即连接操作可以在一个Select语句中完成从我个表中查找与处理数据。
使用连接得列必须就是可连接得,即它们具有相同得数据类型、相同得意义。
使用连接得列,列名可以相同,也可以不同。
29、笛卡儿积:
有得时候,如果连接条件没有设置好,或者没有设置连接条件,则结果将包含太多得行,这就就是由笛卡儿积造成得。
从原理上来讲,连接首先将形成表得笛卡儿积,即形成用于连接得表中所有得行得组合。
下面以仓库表与职工表连接为例为讲解一下。
Select*from职工,仓库
这就是从两张表中显示所有字段,所以字段有重复,并且产生了90条记录,原因就是仓库表中有5条记录,职工表有18条记录,所以连接得结果就是18×
5=90条记录。
用于连接得表越多,则笛卡儿积得结果将越大。
30、多表连接:
在进行多表连接时,一定要注意连接条件,下面以仓库表与职工表连接为例来讲解一下多表连接。
Select*from职工,仓库where职工、仓库号=仓库、仓库号
这时显示得记录就没有那么多了,只显示18条记录,并且发现两张表得仓库号就是相对应得。
假设显示工资大于1500,面积大于600得城市与姓名信息。
Select城市,姓名*from职
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ACCESS 数据库 常见 SQL 语句 汇总 教程