Access高级查询与SQL

上传人:206****923 文档编号:51682486 上传时间:2018-08-15 格式:PPT 页数:26 大小:365.50KB
返回 下载 相关 举报
Access高级查询与SQL_第1页
第1页 / 共26页
Access高级查询与SQL_第2页
第2页 / 共26页
Access高级查询与SQL_第3页
第3页 / 共26页
Access高级查询与SQL_第4页
第4页 / 共26页
Access高级查询与SQL_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《Access高级查询与SQL》由会员分享,可在线阅读,更多相关《Access高级查询与SQL(26页珍藏版)》请在金锄头文库上搜索。

1、Access高级查询与SQL语言n 前面学习了Access的查询。通过设计视图和向导,可以建立选择查询 、参数查询、交叉表查询、操作查询等比较复杂的查询。这些已经能够 基本上满足大多数查询工作的需要。 n 但是在Access的高级使用的过程中,经常会使用到一些查询,这些查 询用各种查询向导和设计器都无法实现。 n Access有3种查询不能直接用查询视图或向导产生,而必须使用SQL查 询,在Access中被称为SQL特定查询。这3种SQL特定查询是:联合查 询、传递查询和数据定义查询。 n SQL查询是用户使用SQL语句创建的查询。可以用SQL语言来查询、更 新和管理Access这样的关系数据

2、库。 n SQL语言是一种通用的数据库操作语言,并不是Access用户必须要掌 握的,但在实际的工作中有时必须用到这种语言才能完成一些特殊的工 作。利用SQL语言可以在Access中建立高级查询。 5.1【案例12】创建Access 联合查询 相关知识 5.2【案例13】创建Access SQL 子查询 相关知识 5.3【案例14】创建Access数据定义查询 相关知识5.1 相关知识 1SQL语言简介 SQL语言即结构化查询语言(英文全称为Structured Query Language ),是一种通用的关系型数据库操作语言。其发音是“S-Q-L”,或 “sequel”。 在20世纪70年

3、代初,E.E.Codd首先提出了关系模型。1974年,由 Boyce和Chamberlin提出了SQL语言。由于它功能丰富,语言简洁, 使用方法灵活,备受用户和计算机业界的青睐,被众多的计算机公司和 软件公司所采用。 1986年10月,美国国家标准局(ANSI)批准采用SQL作为关系数据库 语言的美国标准,1987年,国际标准化组织将之采纳为国际标准。 ANSI于1989年公布了SQL-89标准,1992年又公布了SQL-99标准,后 来又公布了新的标准SQL3。 目前所有主要的关系数据库管理系统都支持某种形式的SQL语言,大部 分都遵守SQL-89标准。 SQL语言由于其功能强大,简捷易学,

4、从而被包括应用程序员、DBA管 理员和终端用户广泛使用。2SQL主要特点 (1)非过程化的语言:所谓面向过程的语言,是指当用户要求完成某 项数据请求时,必须指定存取路径,这就需要用户了解数据存储结构、 方式等相关情况,加重了用户负担。 而当使用SQL这种非过程化语言进行数据操作时,只要提出“做什么”, 而不必指明“如何做”,对于存取路径的选择和语句的操作过程均由系统 自动完成。在关系数据库管理系统(RDBMS)中,所有SQL语句均使 用查询优化器,由它来决定对指定数据使用何种存取手段以保证最快的 速度,这既减轻了用户的负担,又提高了数据的独立性与安全性。 (2)功能一体化的语言:SQL语言集数

5、据定义语言DDL、数据操纵语 言DML、数据控制语言DCL及附加语言元素于一体,语言风格统一,能 够完成包括关系模式定义,数据库对象的创建、修改和删除,数据记录 的插入、修改和删除,数据查询,数据库完整性、一致性保持与安全性 控制等一系列操作要求。SQL语言的功能一体化特点使得系统管理员、 数据库管理员、应用程序员、决策支持系统管理员以及其他各种类型的 终端用户只需要学习一种语言形式即可完成多种平台的数据请求。(3)一种语法两种使用方式:SQL语言即可以作为一种自含式语言,被 用户以一种联机交互的方式,在终端键盘上直接键入SQL命令来对数据 库进行操作,又可以作为一种嵌入式语言,被程序设计人员

6、在开发应用 程序时直接嵌入到高级语言(例如C/C+、PowerBullder、VBScript等 )中使用。而不论在何种使用方式下的SQL语法结构都是基本一致的, 因此具有极大的灵活性与方便性。 (4)面向集合操作的语言:非关系数据模型采用面向记录的操作方式, 操作对象是单一的某条记录,而SQL允许用户在较高层的数据结构上工 作,操作对象可以是若干记录的集合,简称记录集。所有SQL语句都接 受记录集作为输入,返回记录集作为输出,其面向集合的特性还允许一 条SQL语句的结果作为另一条SQL语句的输入。 (5)语法简捷、易学易用的标准语言:SQL语言不仅功能强大,而且语 法接近英语口语,符合人类的

7、思维习惯,因此较为容易学习和掌握。同 时又由于它是一种通用的标准语言,使用SQL编写的程序也具有良好的 移植性。3SELECT语句语法结构 SQL语言包含数据定义语言DDL、数据操纵语言DML、数据控制语言 DCL等数据库必备功能对应的语句。使用SQL语句创建查询实际上主要 就是使用其中的DML语言的SELECT语句。 SELECT语句的主要功能是从数据库返回一组记录的信息,它不会修改 数据库的数据。 (1)SELECT语句语法结构。 SELECT ALL|DISTINCT AS , AS . FROM ,. WHERE AND|OR . GROUP BY ,. HAVING ORDER BY

8、 ASC|DESC, ASC|DESC. SELECT语句基本上可以概括描述为:“从某一个(或某几个)数据表 中选择满足一定条件的记录,并把这些记录相应的某一个(或某几个) 字段的值投影成一张二维表格”。(2)语法描述的约定说明。 加粗的英文大写单词表示是SQL语言的保留关键字,这些是用户在书写 时是不能更改的。如“SELECT”等。 斜体表示需要用户根据具体数据库的实际情况而改变的。如“列表达式 1”等。 “”内的内容为可选项。 “”不能写。 书写语句时,所有的字母、数字、标点等符号一律用英文半角(包括空 格),大小写无所谓(语法描述中的大写只是为了利于读者阅读)。 本章所有关于SQL语言相

9、关语句的语法的描述都遵循此原则。 如果把SELECT语句中所有的可选部分都去除,就是一个最简化的 SELECT语句,格式如下。SELECT FROM 后面的举例都是在这个基础上逐步完善的。 4SELECT语句的各部分功能 在写SELECT语句之前,请先打开“教务管理系统.mdb”,并建立一个空 白查询,把查询设计窗口切换到SQL视图,如图5-1-8所示。 (1)SELECT子句。 “ALL| DISTINCT”:“ALL”返回查询所得到的全部记录,而不管这些记 录是否有重复;“DISTINCT”,查询所得到的记录如构有重复,则不包 括重复行(只返回第一条);省略“ALL|DISTINCT”默认

10、表示“ALL”。 任务1:在学生信息表中查询班级编号。相应的SELECT语句如下所示 。 SELECT ALL 班级编号 FROM 学生信息图5-1-8 切换到SQL视图运行查询,结果返回的是每个学生所在班级的班级编号。由于每个班都 有多个学生,而此处只选择班级编号,因此查询结果有很多重复记录, 如图5-1-9所示。 任务2:在学生信息表中查询班级编号,要求不要重复记录。相应的SELECT语句如下所示。SELECT DISTINCT 班级编号 FROM 学生信息 运行查询,返回的结果中只剩下了两个班级编号,如图5-1-10所示。 “ AS ”:“”是对字段 可以用运算符作运算;“AS ”表示可

11、以为很长 的表达式起一个别名,以方便使用。 任务3:学生信息表中查询每个学生的姓名和年龄。 可以写出如下的SELECT语句。SELECT 姓名,年龄 FROM 学生信息图5-1-9 省略或使 用“ALL”图5-1-10 使用 “DISTINCT”执行查询,出现“输入参数值”对话框,如图5-1-11。输入“23”,单击【 确定】按钮,结果中每个学生的年龄都是“23”,如图5-1-12所示。 打开学生信息表后,会发现根本没有“年龄”这个字段, 也无法计算出这个“年龄”的值。在Access中,如果出 现上述情况,则Access认为是要执行一个参数查询, 所以要求输入年龄的值。怎样才能查询到年龄呢?仔

12、 细查看学生信息表,发现虽然没有“年龄”字段,但是 有“出生日期”字段,可以利用“出生日期”计算出年龄。 修改SQL视图的SELECT语句如下所示。SELECT姓名,Year(Date()-Year(出生日期) AS 年龄 FROM 学生信息 运行查询,结果如图5-1-13所示。图5-1-12 查询年 龄结果图5-1-11 “输入参 数值”对话框图5-1-13 由“出生日期”查询“年龄”在这个SELECT语句中,“Year(Date()-Year(出生日期)”是一个表达式 。 其中,Date()是系统提供的返回系统当前日期的函数;Year()也是一个系 统提供的函数,它的作用是从一个日期型的数

13、据中提取年份。 因此,Year(Date()的结果就是当前的年“2007”。同样Year(出生日期) 就将是数据表中当前记录的“出生日期”字段的年份。二者相减的结果就 是对应的当前记录代表的学生的“年龄”。但是,这个表达式是凭空加上去的,作为查询结果希望对应的这一列能 有个清晰的名称,所以再使用“AS年龄”为这个表达式起个“别名”。查询 结果中就有了“年龄”这一列。在SELECT语句中经常有此类的应用。如:在图书销售系统中,由图书“ 总库存量”和“总销售量”可以得到某一本图书的当前库存量。(2)FROM子句:要从哪些数据表中查找您想要的结果,就把对应的数 据表的名字写在FROM后面,相邻两个之

14、间用逗号隔开就可以了。(3)WHERE子句:是用来指定要查询满足何种条件的记录。的构成如表5-1所示。类 型谓 词比较= = 确定范围BETWEEN AND、NOT BETWEEN AND 确定集合IN、NOT IN 字符匹配LIKE(“%”匹配任何长度,“_”匹配一个字符)、NOT LIKE 注意:在Access中“%”换为 “*”,“_”换为 “?”空值IS NULL、IS NOT NULL 子查询ANY、ALL、EXISTS 集合查询UNION(并)、INTERSECT(交)、MINUS(差) 多重条件AND、OR、NOT 表5-1 条件表达式构成任务4:在学生信息表中查找年龄为26岁的

15、学生的姓名和民族。 首先,实现查找所有学生的姓名和民族。相应的SELECT语句如下所示 。SELECT 姓名,民族FROM 学生信息 然后,为这个SELECT语句加上“WHERE”子句,如下所示。SELECT 姓名,民族FROM 学生信息 WHERE (Year(Date()-Year(出生日期))= 26 图5-1-14 单个比较条件表达式 在WHE RE子句中,Year(Date()-Year(出生日期)就是前面用到的计算 年龄的表达式;把这个表达式和一个具体的数值“26”相比较就构成了一 个比较类型“条件表达式”,只有一个限定条件。查询结果如图5-1-14所示。图5-1-14 单个比较条件表达式任务5:在学生信息表中查找年龄在2628岁之间的学生的姓名和民族 。 只要把WHERE子句修改成如下所示。SELECT 姓名,民族 FROM 学生信息 WHERE (Year(Date()-Year(出生日期))=26 AND (Year(Date() -Year(出生日期))和小于( ANY(SELECT CustomerID FROM tblInvoices) 当想在主查询中检索满足子查询比较条件的所有记录时使用谓词ALL。 SELECT * FROM tblCustomers WHERE CustomerID ALL(SELECT Customer

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号