完整版ACCESS数据库中常见的SQL语句汇总教程.docx

上传人:b****5 文档编号:5942236 上传时间:2023-01-02 格式:DOCX 页数:16 大小:100.99KB
下载 相关 举报
完整版ACCESS数据库中常见的SQL语句汇总教程.docx_第1页
第1页 / 共16页
完整版ACCESS数据库中常见的SQL语句汇总教程.docx_第2页
第2页 / 共16页
完整版ACCESS数据库中常见的SQL语句汇总教程.docx_第3页
第3页 / 共16页
完整版ACCESS数据库中常见的SQL语句汇总教程.docx_第4页
第4页 / 共16页
完整版ACCESS数据库中常见的SQL语句汇总教程.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

完整版ACCESS数据库中常见的SQL语句汇总教程.docx

《完整版ACCESS数据库中常见的SQL语句汇总教程.docx》由会员分享,可在线阅读,更多相关《完整版ACCESS数据库中常见的SQL语句汇总教程.docx(16页珍藏版)》请在冰豆网上搜索。

完整版ACCESS数据库中常见的SQL语句汇总教程.docx

完整版ACCESS数据库中常见的SQL语句汇总教程

ACCES数据库的SQL语句教学

1查询所有记录:

Select*通常用于快速查看表中的记录。

当对表的结构无法确切记忆时,

或要快速查看表中的记录时,使用Select*是很方便的。

use企业销售管理系统

Select*from职工

2、投影查询:

很多时候并不需要将所有列的数据都显示出来。

投影查询就是允许用户显示

所需要的列。

假设显示职工表中职工号、姓名、工资信息,具体操作方法如下。

Select职工号,姓名,工资from职工

在Select查询中,还可以按照实际的需要或自己的喜好安排显示列的顺序,如果要把姓名

放到第一列,则代码如下:

 

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

的订购单信息,具体代码如下:

Select*from订购单

使用Or运算符

where职工号!

='zg1'or职工号!

='zg2'

使用谓词In

Use企业销售管理系统

 

5、模糊Like

定该职工的姓名,

查询:

有的时候,我们不清楚所要查询的信息,如显示职工信息,但不能确只知道他姓名中含有“王”字,那该如何查找呢?

SQL中提供了Like关键字,

使用Like进行了查询时,还要指定通配符。

通配符及其含义

通配符

含义

%

包含0个或多个字符

_(下画线)

包含一个字符

在SQL语句中,还支持Like与Not结合使用。

假设显示姓名中不含有“王”字的职工信息,具体代码如下:

Select*from职工where姓名notlike'

查找范围,具体代码如下:

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工资>=1300And工资<=1900

在SQL语句中,还支持Between…And与Not结合使用。

假设显示工资不在1300〜1900之

间的职工信息,具体代码如下:

Between…And语句

Select*from职工where

工资notBetween1300And1900

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工资v=(select工资from职工where职工号-zg16')and

姓名notlike'%平%'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、BetweenAnd结构。

假设显示北

京地区的职工的订购单信息,并且职工的工资大于1200,订购日期为2003年9月3日〜2006

年1月1日。

Select*from订购单where职工号in(Select职工号from职工where工资>1200a

nd仓库号in(select仓库号from仓库where城市-北京'))and订购日期between'2003-09-03'and'2006-01-01'

11、单级排序查询:

排序的关键字是Orderby,默认状态下是升序,关键字是Asc。

降序

排列的关键字是Desc。

排序字段可以是数值型,也可以是字符型、日期时间型。

下面以按工资从高到低显示职工信息为例来讲解一下。

Select*from职工Orderby工资desc

在排序查询中还可以带有逻辑运算符、谓词In、Like、BetweenAnd结构。

假设显示wh1

或wh2仓库的,工资不大于职工zg16工资的职工信息,并要求职工姓名不含有“平”字,按工资从低到咼显示。

首先利用Select语句求出职工zg16的工资,然后再对姓名进行模糊查询,最后再排序。

Select*from职工where工资v=(Select工资from职工where职工号='zg16')and

工资

姓名notlike'%平%'and仓库号in('wh1','wh2')orderby

12、多级排序查询:

按照一列进行排序后,如果该列有重复的记录值,则重复记录值这部

分就没有进行有效的排序,这就需要再附加一个字段,作为第二次排序的标准,对没有排开的记录进行再排列。

下面以按工资从高到低显示职工信息为例来讲解一下。

单级排序,按工资降序。

Select*from职工Orderby工资desc

多级排序,先按工资降序,再按职工ID升序。

Select*from职工Orderby工资desc,职工IDasc

13、与别名一起使用的统计函数:

在实际编程中,有时候需要知道所有记录某项值的总和、平均值、最大值等,这时就要用到统计函数查询。

常用的统计函数共有6个。

统计函数及其意义

统计函数

 

COUNT(*)

统计选择的记录的个数

COUNT)

统计特定列中值的个数

SUMO

计算总和(必须是数值型字段)

AVG()

计算平均值(必须是数值型字段)

MAXO

确定最大值

NIN()

确定最小值

在使用统计函数时,还要注意COUNT0SUM()AVG()可以使用DISTINCT关键字,以在计

算机中不包含重复的行。

而对于MAX()、MINO、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仓库号='wh1'or仓库号='wh2')and姓名notlike'%亮%'

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职工号-zg1')groupby仓库号

17、带有Having的分组查询:

分组以前的条件,要用Where关键字,而分组之后的条件则

要使用Having关键字。

下面以显示不同仓库的平均工资、工资和、最大工资、最小工资、工资

人数信息,但要求该仓库平均工资大于1760为例来讲解一下。

Select仓库号,max(工资)as最大工资,min(工资)as最小工资,sum(工资)as工资总和,avg(工资)as平均工资,count(*)as职工人数from职工groupby仓库号ha

vingavg(工资)>1760

在分组查询的Having条件中还可以带有逻辑运算符、谓词In、Like、Between…And结构。

假设显示不同仓库的平均工资、工资和、最大工资、最小工资、工资人数信息,但要求该仓库的平均工资大于1760,最大工资与最小工资之差在380〜800之间。

Select仓库号,max(工资)as最大工资,min(工资)as最小工资,sum(工资)as工资总和,avg(工资)as平均工资,count(*)as职工人数from职工groupby仓库号ha

vingavg(工资)>1760andmax(工资)—min(工资)between380and800

18、带有分组的嵌套查询:

还可以利用分组得到的数据作为Select查询语句的条件进行查

询。

下面以显示职工所在仓库的最大工资与最小工资之差在380〜800之间的职工所在仓库信息

为例为讲解一下。

先求出职工所在仓库的最大工资与最小工资之差在380〜800之间的职工所在的仓库号,再

利用这个仓库号显示仓库信息。

Select*from仓库,where仓库号in(Select仓库号from职工groupby仓库号havingdmax(工资)—min(工资)between380and800

19、内外层嵌套实现分组功能:

利用groupby分组显示统计字段信息,有很多字段不能显

示。

如显示不同仓库的平均工资信息,在这个查询中只能显示仓库号,不能显示职工号及职工的工资。

因为不同仓库的平均工资,有几个仓库就显示几条平均工资,而每个仓库中的职工则有很多。

F面以显示不同职工经手订购单金额最大的订单信息为例来讲解一下。

在这里应该边求出每名职工订购单金额的最大值,边显示该职工所对应的这条订购单信息。

具体代码如下:

Selecta.*from订购单awhere金额=(selectmax(金额)from订购单where职工号=a.职工号)

注意:

上面语句中的订购单a是给这个订购单起的一个别名,大家可以把它看成就其实就

是订购单的一张复制的表,在这里运用它只是为了使内外层的嵌套更清晰、更容易理解。

20、分组查询字段显示在表字段中及运算字段:

如果在职工表中添加职工所在仓库的平均

工资值字段,这就对实际编程有很大的意义,即可以利用平均字段进行运算,大大提高编程速度。

下面以在职工表中添加职工所在的仓库的平均工资字段为例来讲解一下。

Selecta.*,(Selectavg(工资)from职工where仓库号=a.仓库号)as所在仓库的平均工资from职工a

在Select查询中,还可以计算出每名职工的工资与职工所在仓库的平均工资之差,具体操

作如下:

Selecta.*,(Selectavg(

均工资,工资-(Selectavg(

工资)from职工where仓库号=a.仓库号)as所在仓库的平

工资)from职工where仓库号=a.仓库号)as所在仓库的平均工

资之差from职工a

子查询中有一行能使结果为真,结果就为真。

而All则要求子查询中所有行都使结果为真时,

结果才为真。

下面以显示那些仓库中还没有职工的仓库信息为例,讲解一下In谓词与Exists

谓词在代码上的不同。

用Exists谓词实现:

用In谓词实现:

Select*from仓库where仓库号notin(Select仓库号from职工)

22、Any量词查询:

Any量词查询,在进行比较运算时,只要子查询中有一行能使结果为真,

则结果即为真。

下面就以显示工资大于等于wh2仓库中任一名职工工资的职工信息为例,讲解

一下Any量词的应用。

用Any量词实现:

Select*from职工where工资>=any(Select工资from职工where仓库号='wh2')

使用统计函数实现:

Select*from职工where工资>=(Selectmin(工资)from职工where仓库号='wh2')

23、All量词查询:

All量词查询,要求子查询中所有行都使结果为真时,结果才为真。

面就以显示工资大于等于wh1仓库中所有职工工资的职工信息为例,讲解一下All量词的应用。

用Any量词实现:

Select*from职工where工资>=AII(Select工资from职工where仓库号='wh1')

使用统计函数实现:

Select*from职工where工资>=(SelectMAX(工资)from职工where仓库号='wh1')

前面讲解的量词查询都可以用统计函数代替,但有些查询是不能用统计函数代替的。

下面以显示工资大于所有不同仓库的平均工资的职工信息为例为讲解一下。

Select*from职工where工资>all(Selectavg(工资)from职工groupby仓库号)

该题用统计函数就无法解决。

24、显示部分记录的Top查询:

在编程中,有时只需显示满足条件的前几条记录,这时就

可以使用Top关键字。

可以直接使用Top数字,显示指定条数记录;也可以使用Top数字Percent,显示所有满足条件记录的前百分之几条记录。

F面以显示工资最高的前三条职工信息为例来讲解一下。

Selecttop3*from职工orderby工资desc

25、保存查询:

利用Into语句可以把查询的结果保存成一张新表。

下面就以备份“职工”

表为例讲解一下保存查询。

Use企业销售管理系统

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条记录,所以连接的结果是18X5=9条记录。

用于连接的表越多,则

笛卡儿积的结果将越大。

30、多表连接:

在进行多表连接时,一定要注意连接条件,下面以仓库表与职工表连接为

例来讲解一下多表连接。

Select*from职工,仓库where职工.仓库号二仓库.仓库号

这时显示的记录就没有那么多了,只显示18条记录,并且发现两张表的仓库号是相对应的。

假设显示工资大于1500,面积大于600的城市与姓名信息。

Select城市,姓名*from职工,仓库where职工.仓库号二仓库.仓库号and工资>1500

and面积>600

31、超连接查询:

超连接查询也是连接查询,所以必须有两张或两张以上的表。

超连接查

询共有4种:

内连接查询、左连接查询、右连接查询、全连接查询。

使用超连接查询不仅可以

把满足条件的记录显示出来,还可以把一部分不满足条件的记录以NULL显示出来。

1)内连接查询:

只有满足连接条件的记录才出现在查询结果集中。

下面以显示面积大于600的仓库号、职工号、城市、面积、工资信息为例为讲解一下内连接:

超连接:

Select仓库.仓库号,职工号,城市,面积,工资from仓库innerjoin职工on职工.仓库号=仓库.仓库号and面积>600

普通连接:

Select仓库.仓库号,职工号,城市,面积,工资from职工,仓库where职工.仓库号二仓库.

仓库号and面积>600

2)左连接查询:

除满足连接条件的记录显示外,第一张表中不满足条件的记录也出现在查

询结果集中。

下面以显示面积大于600的仓库号、职工号、城市、面积、工资信息为例为讲解

一下左连接。

Select仓库.仓库号,职工号,城市,面积,工资from

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1