MicrosoftAccess数据库中SQL语句大全.docx
《MicrosoftAccess数据库中SQL语句大全.docx》由会员分享,可在线阅读,更多相关《MicrosoftAccess数据库中SQL语句大全.docx(14页珍藏版)》请在冰豆网上搜索。
MicrosoftAccess数据库中SQL语句大全
ACCESS数据库的SQL语句教学
引子:
如何找到ACCESS数据库的SQL视图:
1) 单击下图左侧的:
2)单击上图顶部的,弹出如下图对话框:
5)单击“关闭”,此时在菜单中的文件菜单下面出现一个SQL的下拉框;6)在“SQL”下拉框中选择如下图所示中的“SQL视图即可”。
1、查询所有记录:
Select*通常用于快速查看表中的记录。
当对表的结构无法确切记忆时,或要快速查看表中的记录时,使用Select*是很方便的。
use企业销售管理系统
Select*from职工
2、投影查询:
很多时候并不需要将所有列的数据都显示出来。
投影查询就是允许用户显示所需要的列。
假设显示职工表中职工号、、工资信息,具体操作方法如下。
Select职工号,,工资from职工
在Select查询中,还可以按照实际的需要或自己的喜好安排显示列的顺序,如果要把放到第一列,则代码如下:
Select,职工号,工资from职工
3、条件查询:
显示wh1或wh2仓库、性别不为女、工资在1300~2100之间的职工信息。
具体操作如下:
Select*from职工号where(仓库号=’wh1’or仓库号=’wh2’)
Andnot性别=’女’and工资>=1300and工资工资<=2100
在这里一定要注意,(仓库号=’wh1’or仓库号=’wh2’)一定要加括号,否则就不是原题的意思。
4、谓词In查询:
在查找特定条件的数据时,如果条件较多,就需要用到多个Or运算符,以查找满足其中任一条的记录。
但使用多个Or运算符,将使Where子句变得过于冗长,这时使用In就非常清楚。
另外,在后面讲解的嵌套查询中,也必须使用In查询。
下面以显示zg1、zg2、zg11、zg15的订购单信息为例具体讲解一下。
使用Or运算符
Select*from订购单where职工号=’zg1’or职工号=’zg2’’)
Or职工号=’zg11’or职工号=’zg15’
使用谓词In
Use企业销售管理系统
Select*from订购单where职工号in(’zg1’,’zg2’,’zg11’,’zg15’)
在Select语句中,还支持In与Not结合使用。
假设显示职工号不为zg1,zg2,zg11,zg15的订购单信息,具体代码如下:
使用Or运算符
Select*from订购单where职工号!
=’zg1’or职工号!
=’zg2’’)
Or职工号!
=’zg11’or职工号!
=’zg15’
使用谓词In
Use企业销售管理系统
Select*from订购单where职工号notin(’zg1’,’zg2’,’zg11’,’zg15’)
5、模糊Like查询:
有的时候,我们不清楚所要查询的信息,如显示职工信息,但不能确定该职工的,只知道他中含有“王”字,那该如何查找呢?
SQL中提供了Like关键字,使用Like进行了查询时,还要指定通配符。
通配符及其含义
通配符
含义
%
包含0个或多个字符
_(下画线)
包含一个字符
[]
指定围(如[a-z]
[^]
不属于指定围([^a-z])
在SQL语句中,还支持Like与Not结合使用。
假设显示中不含有“王”字的职工信息,具体代码如下:
Select*from职工wherenotlike’王%’
在该例中,如果你知道中含有“王”字,并且只有两个字,那么可以进一步缩小查找围,具体代码如下:
Select*from职工wherenotlike’王_’
这样就可以查找到中只有两个字,并且姓为“王”的职工信息。
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工资Between1300And1900
大于等于号、小于等于号与And运算符
Select*from职工where工资>=1300And工资<=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职工
显示无重复的数据
SelectDistinct工资from职工
9、单表嵌套查询:
就是外层Select语句与层Select语句都来源于同一表。
下面以显示仓库面积大于wh1仓库面积的仓库信息为例来讲解一下。
首先利用Select语句求出wh1仓库的仓库面积,然后再显示面积大于该值的仓库信息。
Select*from仓库where面积>(select面积from仓库where仓库号=’wh1’)
嵌套查询中也可以带有逻辑运算符、谓词In、Like、Between…And结构。
假设显示wh1或wh2仓库的工资不大于职工zg16工资的职工信息,并要求职工不含有“平”字。
首先利用Select语句求出职工zg16的工资,然后再对进行模糊查询。
Select*from职工where工资<=(select工资from职工where职工号=’zg16’)andnotlike‘%平%’and仓库号in(‘wh1’,‘wh2’)
10、多表嵌套查询:
多表嵌套查询就是外层Select语句与层Select语句来源于不同的表,但表之间要存在关系。
这也是SQL语句中最重要的查询。
下面以显示地区的职工信息为例来讲解一下。
首先利用Select语句求出地区的仓库号,然后利用仓库号再显示职工信息。
use企业销售管理系统
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工资<=(Select工资from职工where职工号=’zg16’)andnotlike‘%平%’and仓库号in(‘wh1’,’wh2’)Orderby工资
12、多级排序查询:
按照一列进行排序后,如果该列有重复的记录值,则重复记录值这部分就没有进行有效的排序,这就需要再附加一个字段,作为第二次排序的标准,对没有排开的记录进行再排列。
下面以按工资从高到低显示职工信息为例来讲解一下。
单级排序,按工资降序。
Select*from职工Orderby工资desc
多级排序,先按工资降序,再按职工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工资>