accessSQL结构化查询语言秦经贤_第1页
accessSQL结构化查询语言秦经贤_第2页
accessSQL结构化查询语言秦经贤_第3页
accessSQL结构化查询语言秦经贤_第4页
accessSQL结构化查询语言秦经贤_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第14章SQL语句

目前关系数据库管理系统都采用SQL语言作为数据库语言,SQL语言成为关系数据库的主流语言。本章以Access支持的SQL语言来讨论其功能和使用方法。9.1.1SQL语言的特点

SQL语言是一种介于关系代数与关系演算之间的结构化查询语言。Access所支持的SQL语言不是全部的SQL语言,下面我们所讲的SQL语言都指的是Access所支持的SQL语言。14.3SQL中的数据查询语句

数据库中的数据很多时侯是为了查询的,因此,数据查询是数据库的核心操作。而在SQL语言中,查询语言中有一条查询命令,即SELECT语句。14.3.1基本查询语句(投影查询)【格式】SELECT[ALL|DISTINCT]<字段列表>FROM<表>【功能】无条件查询【说明】ALL:表示显示全部查询记录,包括重复记录。

DISTINCT:表示显示无重复结果的记录14.3.2选择查询【格式】SELECT<字段列表>FROM<表>WHERE<条件>【功能】有条件查询【说明】在该条件中除了可以用关系表达式外,还可以使用以下运算符:1.BETWEEN…AND…2.IN3.LIKE

举例:1.显示学生选课及成绩表中考试成绩在60-80之间的所有记录。

SELECT*FROM学生选课及成绩表

WHERE考试成绩BETWEEN60AND802.显示学生选课及成绩表中考试成绩为85、88、90的所有记录。

SELECT*FROM学生选课及成绩表

WHERE考试成绩IN(85,88,90)3.显示学生信息表中的所有”王”姓同学,只显示姓名和性别字段SELECT姓名,性别FROM学生信息表

WHERE姓名like“王*”注:”*”表示可与一串字符匹配,”?”表示可与一个字符匹配14.3.3排序查询

通过在SELECT命令中加入ORDERBY子句可控制行的显示顺序。ORDERBY可以按升序(默认或ASC)、降序(DESC)排列各行,也可以按多个列来排序。注意:该子句必须是SELECT命中的最后一个子句【例】将学生选课及成绩表中的考试成绩字段按降序排列。

SELECT*FROM学生选课及成绩表ORDERBY考试成绩DESC14.3.4使用聚合函数

聚合函数用于实现数据统计等功能.access中提供的聚合函数有AVG(),COUNT(),MIN(),MAX()SUM()等例:查询”计算机网络”班的学生人数。

Selectcount(*)from学生信息表where所在班级=“计算机网络”或Selectcount([学号])from学生信息表where所在班级=“计算机网络”例:查询编号为”C011”的课程的考试成绩的平均分。

selectavg([考试成绩])as平均分from学生选课及成绩表where课程号="C011"

上述例子中使用了聚合函数,我们还可以加上GROUPBY子句,通常一个聚合函数的范围是满足WHERE子句指定的条件的所有记录。在加上GROUPBY子句后,SELECT命令把查询结果按指定列分成集合组。当一个聚合函数和一个GROUPBY子句一起使用时,聚合函数的范围变为每组的所有记录。换句话说,一个结果是由组成一组的每个记录聚合产生的。使用HAVING子句可以对这些组进一步加以控制。用这一子句定义这些组所必须满足的条件,便将其包含在结果中。当WHERE子句、GROUPBY子句和HAVING子句同时出现在一个查询中时,SELECT的执行顺序如下:1、执行WHERE子句,从表中选取行2、由GROUPBY对选取的行进行分组3、执行聚合函数4、执行HAVING子句选取满足条件的分组例:显示学生考试成绩平均分高于60分的学生的学号。

SELECT学号FROM学生选课及成绩表GROUPBY学号HAVINGAVG([考试成绩])>60例:显示学生的考试成绩的最低分大于60,最高分小于95的学生的学号。

SELECT学号

FROM学生选课及成绩表

GROUPBY学号

HAVINGMIN([考试成绩])>=60ANDMAX([考试成绩])<=9514.3.5表的连接查询

在数据查询中,经常涉及到提取两个或多个表的数据,这就需要使用表的连接来实现若干个表数据的联合查询。在一个查询中,当需要对两个或多个表连接时,可以指定连接列,在WHERE子句中给出连接条件,在FROM子句中指定要连接的表,其格式如下:

SELECT字段名1,字段名2,…FROM表1,表2…WHERE连接条件and一般条件对于连接的多个表,为了区别是哪个表中的列,在连接条件中通过表名前缀指定连接列,如:TEACHER.NO表示TEACHER表的NO列。例:显示所有学生的课程名称和考试成绩字段。

SELECT课程表.课程名称,学生选课及成绩表.考试成绩

FROM课程表,学生选课及成绩表

WHERE课程表.课程号=学生选课及成绩表.课程号

SELECT为了简化输入,允许在查询中使用表的别名,以缩写表名,我们可以在SELECT子句中为表定义一个临时别名,然后在查询中引用。例:显示所有学生的课程名称和考试成绩字段。

SELECTa.课程名称,b.考试成绩

FROM课程表a,学生选课及成绩表bWHEREa.课程号=b.课程号如果涉及到更多的数据表该怎么做呢?例:显示所有学生的姓名、课程名称和考试成绩字段。

SELECT学生信息表.姓名,课程表.课程名称,学生选课及成绩表.考试成绩

FROM学生信息表,课程表,学生选课及成绩表

WHERE学生信息表.学号=学生选课及成绩表.学号and课程表.课程号=学生选课及成绩表.课程号例:显示每门课程的考试成绩的平均分。SELECT学生选课及成绩表.课程号,AVG(学生选课及成绩表.考试成绩)AS平均分FROM学生信息表,学生选课及成绩表WHERE学生信息表.学号=学生选课及成绩表.学号GROUPBY学生选课及成绩表.课程号或例:显示每门课程的考试成绩的平均分。SELECTY.课程号,AVG(Y.考试成绩)AS平均分FROM学生信息表X,学生选课及成绩表YWHEREX.学号=Y.学号GROUPBYY.课程号例:显示“计算机应用”班所选课程的考试成绩平均分。SELECT学生选课及成绩表.课程号,AVG(学生选课及成绩表.考试成绩)AS平均分FROM学生信息表,学生选课及成绩表WHERE学生信息表.学号=学生选课及成绩表.学号AND学生信息表.所在班级="计算机应用"GROUPBY学生选课及成绩表.课程号或例:显示“计算机应用”班所选课程的考试成绩平均分。SELECTY.课程号,AVG(Y.考试成绩)AS平均分FROM学生信息表X,学生选课及成绩表YWHEREX.学号=Y.学号ANDX.所在班级=“计算机应用”

GROUPBYY.课程号

9.3.6子查询

当一个查询是另一个查询的条件时,称之为子查询.子查询可以使用几个简单的命令构造强大的复合命令。子查询最常用于SQL命令的WHERE子句中。例:查询和学号为“012101”的学生同年出生的所有学生的学号,姓名和出生日期字段。

select学号,姓名,出生日期from学生信息表whereyear([出生日期])=(selectyear([出生日期])from学生信息表where学号="012101")

例:查询和学号为“012101”的学生同年同月同日出生的所有学生的学号,姓名和出生日期字段。select学号,姓名,出生日期from学生信息表where出生日期=(select出生日期from学生信息表

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论