内容正文:
项目3 创建查询
项目要求
在创建“成绩管理”数据库后,经常对数据库中的表进行数据查询,以查找满足条件的记录,同时将满足条件的记录单独存储,并可追加记录或更新不需要的记录。在应用程序设计中,可以通过SQL语句来进行数据查询,以满足用户的需求。本项目包含下列任务:
(1)根据要求设置查询条件;
(2)根据查询条件要求创建查询;
(3)应用查询结果,追加记录或更新表中的记录等;
(4)根据查询条件,使用SQL语句进行查询。
任务4 创建参数查询
创建参数查询前,应准备:
任务4.1 创建单个参数查询
查询数据 要获取什么样的数据
查询条件 确定参数变量
查询结果 输入不同的参数,结果是否满足需求
【任务】创建一个查询,每次运行该查询时,根据提示输入要查找的学生姓名,检索该学生的基本信息。
任务分析:该查询是一个参数查询,设置学生的姓名作为参数,每次运行时输入要查询的学生姓名,以查询不同的学生。参数查询应设置提示信息,提示信息两侧必须加上[ ](方括号)。
任务操作:
(1)新建查询。
(2)查询参数条件设置。
(3)运行查询。
任务4 创建参数查询
任务4.2 创建多个参数查询
【任务】创建参数查询,每次运行时,查询入学成绩在某个数值范围内的相关学生信息。
任务分析:该查询可以设置“入学成绩”作为参数,运行查询时输入“入学成绩1”和“入学成绩2”,根据输入的数值进行检索,该条件设置为“Between [入学成绩起始值] And [入学成绩终止值]”。
任务操作:
(1)新建查询。
(2)查询参数条件设置。
(3)运行查询。
任务4 创建参数查询
做一做
1.创建参数查询,在“学生”表中查找某个专业的学生信息。
2.创建参数查询,在“学生”表中查找姓名中包含某个汉字的学生信息。
3.创建参数查询,查找某门课程中某分数段的学生信息。
任务5 操作查询
创建操作查询前,应准备:
任务5.1 生成表查询
【任务】将“学生”表中2022级学生的相关信息导出,结果存放在“2022学生”表中。
任务分析:该操作要求筛选出2022级学生的记录信息,保存到一个新表中,因此,这是生成表查询,“2022级”可以从“学号”字段值的前4位获取,其条件可以表述为“Like "2022*"”。
数查询应设置提示信息,提示信息两侧必须加上[ ](方括号)。
任务操作:
(1)新建查询。
(2)查询设计。
(3)运行查询。
查询需求 要获取什么样的查询结果
查询类型 从操作查询中选择一种类型
查询结果 验证查询结果是否满足要求
任务5 操作查询
任务5 操作查询
任务5.2 更新查询
【任务】将“2022学生”表中原有的专业名称“网络技术”更改为“网络信息安全”。
任务分析:这是一个更新查询,对表中专业为“网络技术”的记录进行批量修改。
任务操作:
(1)新建查询。
(2)查询设计。
(3)运行查询。
任务5 操作查询
任务5.3 追加查询
【任务】创建追加查询,将“202201”表中的记录追加到“成绩”表中,“202201”表记录如图3-58所示。
任务分析:利用追加查询可以将查询的结果追加到一个目标表中,本任务中的目标表是“成绩”表,数据源表为“202201”表,目标表中要含有与数据源表相同属性的字段,才可能追加成功。
任务操作:
(1)新建查询。
(2)查询设计。
(3)运行查询。
任务5 操作查询
任务5.4 删除查询
【任务】创建删除查询,删除“2022学生”表中专业为“网络信息安全”的记录。
任务分析:删除记录前应首先确定删除条件,该任务的条件是专业为“网络安全与维护”。
任务操作:
(1)新建查询。
(2)查询设计。
(3)运行查询。
做一做
1.创建生成表查询,将“学生”表中“网络技术”专业的学生复制到一个新表中。
2.创建更新查询,将“成绩”表中“2021”级课程号为“DY03”的成绩增加5分。
3.创建追加查询,将“新增课程”表中的所有记录追加到“课程”表中,要求“新增课程”表与“课程”表结构相同。
4.创建删除查询,运行查询时,在“2022学生”表中根据输入的姓名查找并删除该记录。
任务6 SELECT查询
任务6.1 简单查询
使用SELECT语句可以对表进行简单查询,以查询表中全部或部分记录,格式如下:
SELECT [DISTINCT]
<查询项1> [AS <列标题1>] [,<查询项2> [AS <列标题2>]…] FROM <表名>
说明:
(1)该语句的功能是从表中查询满足条件的记录。
(2)FROM <表名>:表名是要查询数据的表文件名,可以同时查询多个表中的数据。多数情况下,SELECT语句都要与FROM子句结合使用。
(3)<查询项>:查询项指要查询输出的内容,可以是字段名或表达式,还可以使用通配符“*”。通配符“*”表示表中的全部字段。如果有多项,则各项之间用逗号间隔。如果是别名表的字段名,则需要在该字段名前加<别名>。
(4)AS <列标题>:列标题是指为查询项指定显示的列标题,如果省略该项,则系统自动给定一个列标题。
(5)DISTINCT:该选项是指在查询结果中,重复的查询记录只出现一条。
任务6 SELECT查询
【任务1】在“成绩管理”数据库中,使用SELECT语句查询并显示“学生”表中全部记录的“学号”“姓名”“性别”“出生日期”“专业”字段内容。
任务分析:使用SELECT语句查询,大多数情况下与FROM子句结合使用,FROM子句用于标识构成数据源的表,本任务中数据源表为“学生”表,查询显示“学号”等5个字段列表。
任务操作:
(1)新建查询。
(2)输入SELECT语句。
(3)运行查询。
任务6 SELECT查询
【任务2】从“学生”表中查询全部不同的专业名称,相同名称的只输出一条。
任务分析:查询结果中包含全部不同的专业,也就是不同的记录,要在“学生”表中进行查询,只输出专业即可,这样在SELECT语句中使用DISTINCT选项,该选项可以过滤掉相同的查询结果。
任务操作:
(1)新建查询。
(2)输入SELECT语句:SELECT DISTINCT 专业 FROM 学生
(3)运行查询。
任务6 SELECT查询
【任务3】统计全部学生的平均身高、最高身高、最低身高和平均年龄。
任务分析:计算平均身高、最高身高、最低身高和平均年龄,需要分别使用统计函数Avg([身高])、Max([身高])、Min([身高])和Avg(Year(Date())-Year([出生日期])),其中字段名用“[ ]”引起来,数据来源于“学生”表。
任务操作:
(1)新建查询。
(2)输入SELECT语句:
SELECT Avg([身高]) AS 平均身高, Max([身高]) AS 最高身高, Min([身高])
AS 最低身高,Avg(Year(Date())-Year([出生日期])) AS 平均年龄 FROM 学生
(3)运行查询。
相关知识
聚合函数在SELECT查询中的应用
在SELECT语句查询结果中常使用聚合函数,常用的聚合函数有Count()、Sum()、Avg()、Min()、Max()等,其含义分别如下。
● Count([DISTINCT]<表达式>):统计表中记录的个数。<表达式>可以是字段名或由字段名组成。如果选择DISTINCT选项,则统计记录时表达式值相同的记录只统计一条。
● Sum([DISTINCT]<数值表达式>):计算数值表达式的和。如果选择DISTINCT选项,则计算函数值时,数值表达式值相同的记录只有一条参加求和运算。
● Avg([DISTINCT]<数值表达式>):计算数值表达式的平均值。如果选择DISTINCT选项,则计算函数值时,数值表达式值相同的记录只有一条参加求平均值运算。
● Min(<表达式>):计算表达式的最小值。
● Max(<表达式>):计算表达式的最大值。
SELECT语句输出项为表达式时,如果不指定列标题,则系统自动命名一个列标题。例如,上述语句更改为:
SELECT Avg([身高]), Max([身高]), Min([身高]),
Avg(Year(Date())-Year([出生日期])) FROM 学生
任务6 SELECT查询
任务6.2 条件查询
使用SELECT语句可以有条件地查询记录,格式如下:
SELECT [DISTINCT]
<查询项1> [AS <列标题1>] [,<查询项2> [AS <列标题2>]…] FROM <表名>
WHERE <条件>
说明:
(1)该语句的功能是查询满足条件的记录。
(2)WHERE <条件>:指定要查询的条件,可以将关系运算符或BETWEEN结合使用。
任务6 SELECT查询
【任务1】查询“学生”表中2006年出生的学生的记录,只显示“姓名”“性别”“出生日期”“专业”“团员”字段内容。
任务分析:这是一个条件查询,语句中需要使用WHERE指定条件,条件为“WHERE Year([出生日期])=2006”。
任务操作:
(1)新建查询。
(2)输入SELECT语句:
SELECT 姓名,性别,出生日期,专业,团员 FROM 学生
WHERE Year([出生日期])=2006
(3)运行查询。
任务6 SELECT查询
【任务2】查询“学生”表中每位学生的学号、姓名、专业,以及与“成绩”表中对应学生的成绩字段。
任务分析:这是两个表的查询,在查询条件中需要对查询的两个表建立关系,“学生”和“成绩”表的关系字段为“学号”,用“学生.学号”和“成绩.学号”分别表示两个表中的“学号”字段,则查询条件为“WHERE 成绩.学号=学生.学号”。
任务操作:
(1)新建查询。
(2)输入SELECT语句:
SELECT 学生.学号, 姓名, 专业,课程号,成绩 FROM 学生,成绩
WHERE 成绩.学号=学生.学号
(3)运行查询。
任务6 SELECT查询
任务6.3 查询排序
使用SELECT语句可以对查询结果进行排序,格式如下:
SELECT [DISTINCT]
<查询项1> [AS <列标题1>] [,<查询项2> [AS <列标题2>]…]
FROM <表名> [WHERE <条件> ]
ORDER BY <排序项1> [ASC | DESC] [, <排序项2> [ASC | DESC] …]
说明:
(1)该语句对查询结果按照指定的排序项进行升序或降序排列。
(2)ASC 项表示按<排序项>升序排列记录,DESC项表示按<排序项>降序排列记录。如果省略ASC 或 DESC项,则系统默认对查询结果按<排序项>升序排列。
任务6 SELECT查询
【任务】查询“学生”表中“姓名”“性别”“出生日期”“专业”字段内容,按“出生日期”字段降序输出。
任务分析:这是一个对结果进行排序的查询,语句中需要使用“ORDER BY 出生日期”选项。
任务操作:
(1)新建查询。
(2)输入SELECT语句:
SELECT 姓名,性别,出生日期,专业 FROM 学生 ORDER BY 出生日期 DESC
(3)运行查询。
任务6 SELECT查询
任务6.4 查询分组
使用SELECT语句可以对查询结果进行分组,格式如下:
SELECT [DISTINCT]
<查询项1> [AS <列标题1>] [,<查询项2> [AS <列标题2>]…]
FROM <表名> [WHERE <条件> ]
GROUP BY <分组项1>[, <分组项2>] [HAVING <条件>]
说明:
(1)该语句对查询结果进行分组操作。
(2)HAVING <条件>选项表示在分组结果中,对满足条件的组进行操作。HAVING <条件>选项总是跟在GROUP BY之后,不能单独使用。
(3)在分组查询中可以使用COUNT()、SUM()、AVG()、MAX()、MIN()等聚合函数,用于计算每组的汇总值。
任务6 SELECT查询
【任务】统计“学生”表中每个专业的学生的最高入学成绩和平均入学成绩。
任务分析:根据题目要求,需要对“学生”表按“专业”字段进行分组,然后使用聚合函数来计算最高入学成绩“MAX(入学成绩)”和平均入学成绩“AVG(入学成绩)”。
任务操作:
(1)新建查询。
(2)输入SELECT语句:
SELECT 专业,MAX(入学成绩) AS 最高入学成绩,AVG(入学成绩) AS 平均入学成绩
FROM 学生 GROUP BY 专业
(3)运行查询。
做一做
1.使用SELECT语句分别查询“学生”表、“成绩”表中的全部记录。
2.查询“学生”表中每位学生的学号、姓名、专业和“成绩”表中对应学生的成绩,以及“课程”表中对应的课程名。
3.从“成绩”表中统计每位学生所有课程的平均成绩。
4.查询“学生”表中姓名、性别、出生日期和专业信息,按“出生日期”字段降序输出。
5.查询“学生”表中每位学生的学号、姓名、出生日期、专业和“成绩”表中对应记录的学号和成绩,按“专业”字段升序、“出生日期”字段降序输出。
6.统计“成绩”表中每科课程的最高成绩、最低成绩和平均成绩。
$$