文档内容
~ 2025年教师资格证·《信息技术》~
数 据 库 技 术 3 / 3
主讲老师 孙珍珍
粉笔教师教育 粉笔教师P236
(四)单表查询
【格式】 【说明】
SELECT [ALL|DISTINCT] <列名> ①SELECT进行查询,后接要显示的列名
FROM <表名> ②FROM查询对应的表格
[WHERE <条件1>] ③WHERE进行筛选条件
[GROUP BY <列名1> [HAVING <条件2>] ] ④GROUP BY进行分组,HAVING根据条件进行分组
[ORDER BY <列名2> [ASC|DESC]] ⑤ORDER BY进行排序;ASC升序(可省)、DESC降序P236
(四)单表查询
1.无条件查询【格式】 【实例】
【例7-1】从学生表S中查询所有学生的学号、姓名和性
别。
SELECT [ALL|DISTINCT] <列名> [ AS <列别名>]
*************************************************
FROM <表名>
SELECT SNo,SN,Sex
FROM S
*************************************************
说明:
①DISTINCT 代表在结果中,去除重复值
②若查询全部列,<列名>可以用*代替
③可以通过AS给列名和表起别名P237
(四)单表查询
1.无条件查询【格式】 【实例】
【例7-2】从学生表S中查询所有学生信息。
*************************************************
SELECT *
SELECT [ALL|DISTINCT] <列名> [ AS <列别名>]
FROM <表名> FROM S
*************************************************
说明:
①DISTINCT 代表在结果中,去除重复值
②若查询全部列,<列名>可以用*代替
③可以通过AS给列名和表起别名P237
(四)单表查询
2.条件查询【格式】 (1)比较查询【实例】
【例8-1】从选课表 SC 中查询成绩大于80的学生选课
SELECT [ALL|DISTINCT] <列名> [ AS <列别名>]
信息。
FROM <表名>
WHERE <条件1> *************************************************
SELECT *
说明:
FROM SC
①若查询全部列,<列名>可以用*代替
WHERE Grade>80
②查询条件及运算符对应表格
*************************************************
查询条件 运 算 符
比较 >,<,=,>=,<=,<>
多重条件 AND,OR,NOT
BETWEEN AND,
确定范围
NOT BETWEEN AND
确定集合 IN,NOT IN
字符匹配 LIKE,NOT LIKE
空值 IS NULL,IS NOT NULLP238
(四)单表查询
2.条件查询【格式】 (2)多重条件查询【实例】
【例8-2】从选课表 SC 中查询选修了课号“C0201”
SELECT [ALL|DISTINCT] <列名> [ AS <列别名>]
并且 成绩高于80分的学生的学号与成绩。
FROM <表名>
WHERE <条件1> *************************************************
SELECT SNo, Grade
说明:
FROM SC
①若查询全部列,<列名>可以用*代替
WHERE CNo='C0201' AND Grade>80
②查询条件及运算符对应表格
*************************************************
查询条件 运 算 符
比较 >,<,=,>=,<=,<>
多重条件 AND,OR,NOT
BETWEEN AND,
确定范围
NOT BETWEEN AND
确定集合 IN,NOT IN
字符匹配 LIKE,NOT LIKE
空值 IS NULL,IS NOT NULLP238
(四)单表查询
2.条件查询【格式】 (3)确定范围查询【实例】
【例8-3】从学生表 S 中查询年龄在[16,19]之间的学生
SELECT [ALL|DISTINCT] <列名> [ AS <列别名>]
学号、姓名和年龄。
FROM <表名>
WHERE <条件1> *************************************************
SELECT SNo, SN, Age
说明:
FROM S
①若查询全部列,<列名>可以用*代替
WHERE Age BETWEEN 16 AND 19
②查询条件及运算符对应表格
*************************************************
查询条件 运 算 符
比较 >,<,=,>=,<=,<>
多重条件 AND,OR,NOT
BETWEEN AND,
确定范围
NOT BETWEEN AND
确定集合 IN,NOT IN
字符匹配 LIKE,NOT LIKE
空值 IS NULL,IS NOT NULLP238
(四)单表查询
2.条件查询【格式】 (4)确定集合查询【实例】
【例8-4】从选课表 SC 中查询选修了课号“C0204”
SELECT [ALL|DISTINCT] <列名> [ AS <列别名>]
或“D0101”的学生的选课信息 。
FROM <表名>
WHERE <条件1> *************************************************
SELECT *
说明:
FROM SC
①若查询全部列,<列名>可以用*代替
WHERE CNo IN ('C0204','D0101')
②查询条件及运算符对应表格
*************************************************
查询条件 运 算 符
比较 >,<,=,>=,<=,<>
多重条件 AND,OR,NOT
BETWEEN AND,
确定范围
NOT BETWEEN AND
确定集合 IN,NOT IN
字符匹配 LIKE,NOT LIKE
空值 IS NULL,IS NOT NULLP239
(四)单表查询
2.条件查询【格式】 (5)字符匹配查询【实例】
【例8-5】从课程表C中查询课号以“C”开头的所有
SELECT [ALL|DISTINCT] <列名> [ AS <列别名>]
课号及课程名 。
FROM <表名>
WHERE <条件1> *************************************************
SELECT Cno, CN
说明:
FROM C
①若查询全部列,<列名>可以用*代替
WHERE CNo like 'C*'
②查询条件及运算符对应表格
*************************************************
查询条件 运 算 符
比较 >,<,=,>=,<=,<>
多重条件 AND,OR,NOT
BETWEEN AND,
确定范围
NOT BETWEEN AND
确定集合 IN,NOT IN
字符匹配 LIKE,NOT LIKE
空值 IS NULL,IS NOT NULLP239
(四)单表查询
2.条件查询-【格式】 (6)空值查询【实例】
【例8-6】从选课表 SC中查询考试成绩有效(有数值)
SELECT [ALL|DISTINCT] <列名> [ AS <列别名>]
的学生选课信息 。
FROM <表名>
WHERE <条件1> *************************************************
SELECT *
说明:
FROM SC
①若查询全部列,<列名>可以用*代替
WHERE Grade IS NOT NULL
②查询条件及运算符对应表格
*************************************************
查询条件 运 算 符
比较 >,<,=,>=,<=,<>
多重条件 AND,OR,NOT
BETWEEN AND,
确定范围
NOT BETWEEN AND
确定集合 IN,NOT IN
字符匹配 LIKE,NOT LIKE
空值 IS NULL,IS NOT NULL书上无
试题巩固
(2019下 · 初中)在Access中,与图所示查询执行结果相同的SQL语句是( )。
A.SELECT 作品名称 FROM hj
B.SELECT 作品名称,评审得分 FROM hj
C.SELECT 作品名称 FROM hj WHERE 评审得分 >=60
D.SELECT 作品名称,评审得分 FROM hj WHERE 评审得分 >=60P240
(四)单表查询
3.聚集函数【格式】 【实例】
【例9】从学生表 S 中查询计算机系学生的人数以及这些
SELECT [ALL|DISTINCT] <列名> [ AS <列别名>]
FROM <表名> 学生年龄的总和及平均值 。
WHERE <条件1> *************************************************
SELECT COUNT(*), SUM(Age), AVG(Age)
说明:
FROM S
①可以通过AS给列名和表起别名
WHERE Dept='计算机';
②函数及功能对应表格
函数名称 功 能 *************************************************
AVG(列名) 计算列值平均值
SELECT COUNT(*) AS 个数, SUM(Age) AS 年龄和,
SUM(列名) 计算列值的总和
AVG(Age) AS 平均年龄
MAX(列名) 求列值中的最大值
FROM S
MIN(列名) 求列值中的最小值
WHERE Dept='计算机';
COUNT(*) 统计元组个数书上无
试题巩固
(2019上 · 高中)根据关系模型Stu(学号,姓名,性别,出生年月)。统计学生平均年龄应使用
的SQL语句是( )。
A.SELECT AVG(YEAR(DATE( ) ) ) AS 平均年龄 FROM Stu
B.SELECT AVG(YEAR(出生年月( ) ) ) AS 平均年龄 FROM Stu
C.SELECT AVG(YEAR(DATE( ) )+YEAR(出生年月) ) AS 平均年龄 FROM Stu
D.SELECT AVG(YEAR(DATE( ) )-YEAR(出生年月) ) AS 平均年龄 FROM StuP241
(四)单表查询
4.分组查询【格式】 【实例】
SELECT [ALL|DISTINCT] <列名> [ AS <列别名>] 【例10-1】统计不同性别的学生人数 。
FROM <表名>
*************************************************
[ WHERE <条件1> ]
SELECT Sex, COUNT(*) AS 人数
GROUP BY <列名1>
FROM S
[ HAVING <条件2> ]
GROUP BY Sex
说明:
*************************************************
①GROUP BY进行分组
②分组之前有条件进行过滤,用WHERE
③分组之后有条件进行过滤,用HAVINGP241
(四)单表查询
4.分组查询【格式】 【实例】
SELECT [ALL|DISTINCT] <列名> [ AS <列别名>] 【例10-2】查询至少有2名男同学所在的系名 。
FROM <表名>
*************************************************
[ WHERE <条件1> ]
SELECT Dept
GROUP BY <列名1>
FROM S
[ HAVING <条件2> ]
WHERE Sex='男'
说明:
GROUP BY Dept
①GROUP BY进行分组
HAVING Count(*)>=2
②分组之前有条件进行过滤,用WHERE
*************************************************
③分组之后有条件进行过滤,用HAVING书上无
试题巩固
(2023上·高中)SQL的查询语句“SELECT 所属部门,AVG(工资) AS 平均工资 FROM 员工数
据库 WHERE 所属部门 NOT LIKE "销售部门" GROUP BY 所属部门”的含义为( )。
A.从员工数据库中检索销售部门的平均工资
B.从员工数据库中检索销售部门和其他部门的平均工资
C.从员工数据库中检索销售部门和其他部门的总工资
D.从员工数据库中检索除了销售部门以外其他部门的平均工资P241
(四)单表查询
5.排序查询【格式】 【实例】
【例11】从学生表S中查询学生的学号、姓名和年龄,并
SELECT [ALL|DISTINCT] <列名> [ AS <列别名>]
按年龄降序排列 。
FROM <表名>
*************************************************
[WHERE <条件1>]
SELECT SNo, SN, Age
ORDER BY <列名2> [ASC|DESC]
FROM S
ORDER BY Age DESC;
说明:
*************************************************
• ORDER BY进行排序;
• ASC升序(可省)、DESC降序书上无
试题巩固
(2021 下· 高中)SQL 的查询语句“SELECT 员工姓名, 所属部门, 工资 FROM 员工数据库
ORDER BY 所属部门 COMPUTE SUM ( 工资) BY 所属部门”的含义为( )。
A. 把员工数据库按照员工姓名排序后,计算每个部门的工资总和
B. 把员工数据库按照所属部门排序后,计算每个部门的工资总和
C. 把员工数据库按员工姓名排序后,计算每个部门的平均工资
D. 把员工数据库按照所属部门排序后,计算每个部门的平均工资P242
(五)多表查询
1.使用单表查询的SQL命令-【格式】 查询【实例】
【例12-1】查询学生冯明的学号、姓名、课号和成绩 。
SELECT [ALL|DISTINCT] <列名> [ AS <列别名>]
*************************************************
FROM <表名1> ,<表名2>
SELECT S.SNo, SN, CNo, Grade
WHERE <条件1>
FROM S, SC
[GROUP BY <列名1> [HAVING <条件2>] ]
[ORDER BY <列名2> [ASC|DESC]] WHERE S.SNO=SC.SNO AND SN='冯明'
*************************************************
说明:
①FROM子句,需要连接多个表
②SELECT后列名,如果两个表中均有,需要指明表名
③WHERE子句,需要指明两表建立联系的条件P242
(五)多表查询
2.使用JOIN子句-【格式】 查询【实例】
【例12-2】查询学生冯明的学号、姓名、课号和成绩 。
SELECT [ALL|DISTINCT] <列名> [ AS <列别名>]
FROM <表名1> INNER JOIN <表名2> *************************************************
ON <连接条件>
SELECT S.SNo, SN, CNo, Grade
[WHERE <条件1>]
FROM S INNER JOIN SC
[GROUP BY <列名1> [HAVING <条件2>] ]
ON S.SNO=SC.SNO
[ORDER BY <列名2> [ASC|DESC] ]
WHERE SN='冯明'
说明:
*************************************************
①两表之间用INNER JOIN进行连接
②两表建立连接的条件,使用ON子句第六节 关系数据的设计P243
一、设计基础
(一)设计步骤
设计步骤 主要功能
准确了解和分析用户的需求 ,是基础环节
需求分析
对用户需求进行归纳与抽象,并形成概念模型
概念结构设计
将概念模型转化成数据库管理系统所支持的逻辑模型
逻辑结构设计
为逻辑模型选取合适的物理结构(即物理模型)
物理结构设计
用数据库语言和宿主语言,建立数据库,编写与调试应用程序
数据库实施
投入运行并不断对其进行评估、调整
数据库运行和维护P244
(二)设计方法
1.基于 E-R 模型的数据库设计方法
2.基于3NF的数据库设计方法
Ø单一关系模式 → 投影 → 若干关系模式
学号 姓名 性别 系别 课程编号 课程名称 学分 成绩
-- -- -- -- -- -- -- --
学生表 课程表 选课表
学号 姓名 性别 系别 课程编号 课程名称 学分 学号 课程编号 成绩
-- -- -- -- -- -- -- -- -- --【了解出题角度】
(2021上·高中)下列关于函数依赖的描述中,不正确的是( )。
A.若A→B,A→C,则A→BC B.若A→C,则AB→C
C.若A→B,DB→C,则DA→C D.若AB→C,则A→C,B→C
(2023上·高中)设有关系模式R(A,B,C,D,E),R的函数依赖集:F={A→B,E→D,
BC→D,CD→A}。R的候选码为( )。
A.AE B.BE C.CE D.DE
(2021下·高中)关系模式R(A,B,C,D,E),根据语义有如下函数依赖集:F={A→C,
BC→D,CD→A,AB→E}。关系模式R的规范化程度最高达到( )。
A. 1NF B. 2NF C. 3NF D. BCNFP244
二、函数依赖
(一)定义
Ø设关系模式 R(U),U 是属性集,X 和 Y 是 U 的子集。
ØX确定Y,Y依赖于X,记作 X → Y 。X 为决定因子,Y 为依赖因子。
Ø当 Y 不依赖于 X 时,记作 X ↛ Y;
Ø当 X→Y 且 Y → X时,则记作 X ↔ Y。
学生(学号,身份证号,姓名,身高,年龄)P245
(二)推理规则书上无
试题巩固
(2021上·高中)下列关于函数依赖的描述中,不正确的是( )。
A.若A→B,A→C,则A→BC
B.若A→C,则AB→C
C.若A→B,DB→C,则DA→C
D.若AB→C,则A→C,B→CP245
(三)类型
1.完全函数依赖
!
ØX → Y,且对于 X 的任何一个真子集 X' ,都有 X' ↛ Y,记为X → Y
【例】关系模式S1(学号,姓名,性别,年龄,课号,课名,成绩)中
!
(学号,课号)→ 成绩
学号 姓名 性别 年龄 课号 课名 成绩
11001 冯明 男 18 C0201 数据库原理及应用 85
11001 冯明 男 18 C0204 计算机网络 80
11002 陈月 女 19 C0302 算法设计与分析 65
12001 褚共 男 18 C0201 数据库原理及应用 70
12001 褚共 男 18 D0101 信息安全基础 76P245
(三)类型
2.部分函数依赖
"
ØX → Y,且对于 X 的某一个真子集 X ' ,有 X ' → Y,记为X → Y
【例】关系模式S1(学号,姓名,性别,年龄,课号,课名,成绩)中
"
(学号,课号)→ 姓名
学号 姓名 性别 年龄 课号 课名 成绩
11001 冯明 男 18 C0201 数据库原理及应用 85
11001 冯明 男 18 C0204 计算机网络 80
11002 陈月 女 19 C0302 算法设计与分析 65
12001 褚共 男 18 C0201 数据库原理及应用 70
12001 褚共 男 18 D0101 信息安全基础 76P245
(三)类型
3.传递函数依赖
#
ØX → Y, Y → Z,且X不包含Y,Y不包含Z,Y ↛ X则X → Z,记为X → Z
【例】关系模式 学生(学号,姓名,系别,系主任)中
#
学号 → 系主任
学号 姓名 系别 系主任
11001 冯明 计算机系 张三
11002 陈月 计算机系 张三
12001 褚共 自动化系 李四P245
(四)属性集的闭包
F 中所有 X → A 的A 的集合称为 X 的闭包,记为 X +
u
【例】设有关系模式 R(M,N,X,Y,Z),其 F={M → X,X → Z,Y → Z,N → Y, Z → M }。
计算各属性的闭包。P246
(五)候选码的求解
设有关系模式 R(U),F 是函数依赖集,可将其中的属性分为以下四类。
(1)L 类:仅出现在函数依赖左边的属性。
(2)R 类:仅出现在函数依赖右边的属性。
(3)N 类:在函数依赖左右两边均未出现的属性。
(4)LR 类:在函数依赖左右两边均出现的属性。
【例】关系模式 R(M,N,X,Y,Z),F={M → X,X → Z,Y → Z,N → Y,Z → M }。求分类。P246
(五)候选码的求解
(2023上·高中)设有关系模式R(A,B,C,D,E),
R的函数依赖集:F={A→B,E→D, BC→D,CD→A}。
R的候选码为( )。 A.AE B.BE C.CE D.DEP246
(五)候选码的求解
【例2】设有 R(A,B,C,D),它的函数依
赖集 F={AB → C,D → B,C → A,C→D},
求 R 的候选码。书上无
(五)候选码的求解
(2021下·高中)关系模式R(A,B,C,D,E),
根据语义有如下函数依赖集:
F={A→C,BC→D,CD→A,AB→E}。
关系模式R的规范化程度最高达到( )。P247
三、范式
5种范式的包含关系:5NF ⊂ 4NF ⊂ BCNF ⊂ 3NF ⊂ 2NF ⊂ 1NF
u
(一)第一范式 1NF
Ø关系模式 R 的所有属性均为原子属性(不可再分)。最起码条件
工资
教师号 姓名 性别 职称 教师号 姓名 性别 职称 底薪 奖金
底薪 奖金
01001 赵乾 女 讲师 6000 500 01001 赵乾 女 讲师 6000 500
01002 钱坤 男 讲师 6000 1000 01002 钱坤 男 讲师 6000 1000
01003 孙震 女 副教授 7000 1200 01003 孙震 女 副教授 7000 1200
02011 李离 女 教授 8000 800 02011 李离 女 教授 8000 800
02013 周巽 男 教授 8000 2000 02013 周巽 男 教授 8000 2000P247
三、范式
(二)第二范式 2NF
Ø关系模式 R ∈ 1NF,且每个非主属性都完全依赖于 R 的主码/候选码
【例】将关系模式 选课(学号,课程号,姓名,成绩)规范化为 2NF
①主键:学号和课程号
②依赖关系:(学号,课程号)→ 姓名;(学号,课程号)→ 成绩
③调整:学生(学号,姓名) 选课(学号,课程号,成绩)P248
三、范式
(三)第三范式 3NF
Ø关系模式 R ∈ 2NF,且每个非主属性都不传递依赖于 R 的主码/候选码
【例】将关系模式学生(学号,姓名,系别,系主任)规范化为 3NF
①主键:学号
②依赖关系:学号 → 姓名;学号 → 系别;学号 → 系主任
③调整:学生(学号,姓名,系别) 系管理( 系别 , 系主任 )P248
三、范式
(四)BC范式 BCNF
Ø关系模式 R ∈ 3NF,且不存在主属性对非主属性的函数依赖,简称 BCNF
【例】假设该学校中每名教师只讲授一门课程,但一门课程可由多个教师讲授。
要求:将关系模式 学生(学号,课程号,教师,成绩)规范化为 BCNF
①主键:学号和课程号
②依赖关系:(学号,课程号)→ 教师;(学号,课程号)→ 成绩
③调整:学生(学号,课程号,成绩) 授课(教师,课程号)书上无
试题巩固
候选码:AB、BC
(2021下·高中)关系模式R(A,B,C,D,E),根据语义有如下函数依赖集:
F={A→C,BC→D,CD→A,AB→E}。关系模式R的规范化程度最高达到( )。
A. 1NF
B. 2NF
C. 3NF
D. BCNF下
节
内
容在 粉 笔
遇 见 不 一 样 的 自 己
粉笔教师教育 粉笔教师