全面掌握MS ACCESS SQL(21)
时 间:2018-01-11 15:10:25
作 者:Big Young ID:252 城市:襄阳
摘 要: 带FROM子句的基本SELECT语句。
正 文:
第三节 带FROM子句的基本Select语句
下面我们来研究一下带FROM子句的Select语句,使用示例说明可以在带FROM子句的基本Select语句中使用的各种技术。在Select语句可以使用一系列关键字来限制返回记录的数量,可通过字段列表控制访问的字段的数量,其中的FROM子句用于指定数据源。FROM子句可能还包含JOIN操作,使用JOIN操作匹配和合并两个数据源中的数据,例如两个表或一个表和一个查询。这里我们先简单的单表查询操作,下面是最基本语法:
Select [predicate] { * | field1 [AS alias1] [, field2 [AS alias2] [, ...]]} FROM tableexpression
这里predicate(谓词)是可先项,包括下列关键词之一:ALL、DISTINCT、DISTINCTROW或TOP,用于限定Select语句返回记录的数量。如果没有指定predicate,则默认值为ALL。这里field1、field2……与星号代表的是字段列表,用于控制选取字段的数量范围。alias1和alias2等是字段的别名,用于在查询结果中代替字段的原名。Tableexpression是被查询的表的名字。
一、用FROM子句指定Select查询的数据源
在Select语句中,它的FROM子句用于指定数据源,也就是说Select语句中的FROM子句指定包含Select子句将使用的数据的表或查询。例如在罗斯文示例数据库中,假设你想知道所有客户的电话号码,包含存储此数据的字段的表称为“客户”,带FROM子句将的Select语句类似以下:
Select 姓氏 & 名字 AS 姓名, 业务电话, 传真号 FROM 客户;
可以用方括号将字段名称和表名称括起来。如果名称不含任何空格或特殊字符(例如标点符号),则方括号为可选项。如果名称含有空格或特殊字符,则必须使用方括号。
这个例子中我们用字段列表限制查询中只显示我们指定的字段,同时我们还有“姓名”与“名字”两个字段组成一个表达式并指定了一外别名“姓名”。FROM子句指明了数据来源是表“客户”。
二、在Select查询中限制记录行的输出
在Select语句中可以使用ALL、DISTINCT、DISTINCTROW、TOP等谓词对查询输出记录进行限制,其基本语法如下:
Select [ALL | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]] FROM table
下面对Select语句中包含项目说明如下:
ALL,意思是全部,就是显示符合条件的所有记录。假如在语句中不包括任一一个谓词,Access数据库引擎可选择所有满足SQL语句中的条件的记录。就是说,ALL是默认的选项,下面的两个示例相等,从“员工”表中返回所有记录:
语句一:
Select ALL * FROM 员工;
语句二:
Select * FROM 员工;
DISTINCT,含义是不同的,作用是忽略其中包含所选字段内的重复数据的记录。Select语句中列出的每个字段的值要包含在查询结果中,则必须是唯一的。例如,“员工”表中列出的多名员工可能姓氏相同。如果两个记录中的“姓氏”字段内均包含“张”,以下SQL语句将仅返回一条其中包含“张”的记录:
Select DISTINCT 姓氏 FROM 员工;
如果省略DISTINCT,此查询将返回两条包含“张”的记录。如果Select子句中包含多个字段,则所有字段的值组合必须对给定记录是唯一的,才能包含在结果中。使用DISTINCT的查询的输出不可更新,也不能体现其他用户所做后续更改。
DISTINCTROW,与DISTINCT不同,它忽略基于整个重复记录的数据,而不仅仅是重复字段。此关键字主要用在多表连接查询中,当仅从查询中使用的部分表,而非所有表选择字段时,DISTINCTROW才有效。如果查询中仅包含一个表,或者如果从所有表输出字段,将忽略 DISTINCTROW。这个我们将放在以后多表连接查询时再进一步说明。
“TOP n [PERCENT]”,返回ORDER BY子句指定的范围上限或下限内一定数量的记录。 假设需要2017级成绩排在前25名学生的姓名:
Select TOP 25 名字, 姓氏
FROM 学生
Where 年级 = ‘2017’
ORDER BY 成绩 DESC;
如果不包括ORDER BY子句,查询将从“学生”表返回满足Where子句的任意25条记录的集合。TOP谓词不在相等值之间进行选择。在上面的示例中,如果第25名和第26名的年级最高平均分相等,查询将返回26条记录。
也可以使用PERCENT保留字返回ORDER BY子句指定的范围上限或下限内一定百分比的记录。假设我们需要的不是年级前25名学生,而是排名为最后10%的学生:
Select TOP 10 PERCENT 名字, 姓氏
FROM 学生
Where 年级 = ‘2017’
ORDER BY 成绩 ASC;
ASC谓词指定了返回的底部的值。TOP之后的值必须是符号的整数。TOP对查询是否可更新没有影响。
三、在Select查询中限制记录列的输出
在Select语句中,显示列的方式有两种,一种是显示表中的所有的列,这时为了简化,我们使用*(星号);另一种就是罗列需要显示的列名。例如:
Select * FROM 员工;
这条语句就会查询出“员工”表的所有记录,并且显示每条记录中的全部字段(列),这种方式虽然简单,却有两个局限,就是不能为列命名别名和不能调整列的显示顺序。而通过罗列字段列表就没有这种限制,但要一个一个的写出来,有点麻烦。如:
Select 姓氏 & 名字 AS 姓名, 职务,
城市 & 地址 AS 通信地址,
业务电话 AS 电话, 电子邮件地址 AS 电子信箱
FROM 员工;
通过这种方式,我们可以精确控制列的显示并赋予有意义的名字。
Access软件网官方交流QQ群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access快速开发平台--对上传...(11.22)
- Access快速开发平台企业版--...(11.18)
- 不会用多表联合查询,多表查询没结果...(11.16)
- 【案例分享】主键字段值含有不间断空...(11.16)
- Access快速开发平台--后台D...(11.14)
- 微软Access邀测新Monaco...(11.12)
- Access列表框左右互选、列表框...(11.11)
- 高效率在导入数据前删除记录(11.10)
- Access报价单转订单示例代码(11.08)
- Access系统自带的日期选择器不...(11.08)