随堂测试1
1.数据管理技术发展过程:人工管理阶段,文件系统阶段,数据库系统阶段
2.数据库是长期存储再计算机上的有组织的可共享的数据集合
3.DBS=DB+DBMS
4.一整个数据库系统由计算机硬件,DBMS,数据库,应用程序,用户
5.数据是用来记录信息的可识别的信息;
数据表现形式有很多种
不能把数据简单的和数字等同起来
数据和数据的含义是不可分的
6.数据库管理系统(DBMS)主要功能:数据定义 数据操纵 数据库运行管理功能 数据库建立和维护功能
7.数据库系统的特点:数据结构化 数据共享性高 冗余度差 易扩充,独立性高,数据由DBMS统一管理和控制
随堂测试2
1.关系模型的数据结构是一张二维表
2.构造E-R图的三个要素:实体 属性 联系
随堂测试3
1.关系模型的数据操作是集合操作,操作对象和操作结果都是结果
2.在数据库系统的三级模式结构中,模式描述了数据库中全体数据的全局逻辑结构和特征
3.一个数据库中,外模式/模式映像不只是只能有一个
4.在数据库系统的三级模式中,外模式/模式映像保证了数据与应用程序间的逻辑独立性
5.外模式可以有多个,模式和内模式不只有一个
第一二章作业
1.在数据库中存的是数据及数据间的联系
2.支持数据库各种操作的软件系统是 数据库管理系统
3.DBA 数据库管理员
4.关系数据模型可以表示实体间的1:N 1:1 M:N
5.数据模型的三要素是 数据结构 数据操作 完整性约束
6.关系模型的数据结构是二维表
7.数据库系统的特点 数据冗余度低 易于保存 数据结构化 独立性高 共享性高
8.数据库管理系统的功能是数据定义 ,数据库操作,数据库的建立和维护,数据库的运行管理
9.数据库领域中组要的逻辑数据模型有 关系模型 层次模型 网状模型
10.数据库可以有多个外模式但是只能有一个模式和内模式
11.在三级模式间引入二级映像的主要作用是提高数据的独立性;模式描述了数据库中全体数据的全局逻辑结构和特征
第三章
1.一个关系只能有一个主码
2.关系是笛卡尔积的子集;关系是一张二维表;关系中分量不可再分;关系中元组的次序可以交换
3.数据库管理系统能实现的专门关系运算有连接投影选择
4.设关系R有r个元组,关系S有s个元组,则R×S有( r*s )个元组。
5.并交差要求两个运算对象其属性结构完全相同
6.取出关系中的某些列,并消去重复元组的关系代数运算称为 投影
7.自然连接是构成新关系的有效方法。一般情况下,当对关系R和S使用自然连接时,要求R和S含有一个或多个共有的( 属性 )。
8.关系模型有三类完整性约束:实体完整性 参照完整性 用户定义完整性
9.实体完整性是指主属性非空;参照完整性是指外码要么为NULL要么为被参照表主键某个值
10.在教务管理数据库中,有学生关系 S(SNO,SN,SEX,AGE,DEPT)、
选课关系 SC(SNO,CNO,SCORE)、
课程关系C(CNO,CN,CT)。
上述关系模式中属性定义如下:学号(SNO)、姓名(SN)、性别(SEX)、年龄(AGE)、系别(DEPT)、课程号(CNO)、课程名(CN)、教师号(CT)
问题:
1.[查询年龄大于18岁的所有男同学的信息;](javascript:void(0)😉
2.[查询教师号为T1的老师所教授课程的课程号和课程名;](javascript:void(0)😉
3.[查询选修了全部课程的学生学号和学生姓名](javascript:void(0)😉;
4.[查询"张三"同学所选修的所有课程的课程号、课程名和成绩;](javascript:void(0)😉
5.[查询年龄大于18岁的学生的学号、姓名和系别。](javascript:void(0)😉

随堂测试4
在SQL中,主键和外键约束是用于确保数据完整性的重要机制。请根据要求,在以下SQL语句中添加主键或外键约束。
(1)请为student表中属性Sno添加主键约束
CREATE TABLE student (
Sno char(8) (1) ,
Sname char(20) NOT NULL,
Ssex char(2),
Sage int,
Sdept varchar(20)
);
(2)请为course表中属性Sno添加主键约束
CREATE TABLE course (
Cno char(5) PRIMARY KEY, /Cno是课程号 /
Cname char(20) NOT NULL,
Cpno char(5) ,
Ccredit int,
(2) , /Cpno是先修课程号,取值参照course表中的Cno列/
);
1)primary key
2)foreign key(Cpno) refeerences course(Cno)
随堂测试5
书89页
给定一个教学管理数据库,库中有5个基本表,各表结构请参考教材89页操作题,写出完成下列操作的SQL语句(每题10分)
1、查询女学生的学号和姓名。
2、查询缺少成绩的学生的学号。
3、查询选修了课程的学生学号。
4、查询考试成绩不及格的学生的学号。
5、查询考试成绩在80~90(含80h和 90)的学生的学号和课程号。
6、查询姓"李",最后一个字是"文"的学生的信息。
7、查询选修了课程号是"C2"的学生的学号及成绩,查询结果按成绩降序排列
8、统计课程总门数。
9、统计"C2"课程的总分、最高分。
10、查询每门课程的选择人数。
第四章
-
1.SQL: Structured Query Language
-
2.通过SQL,您如何从"Persons"表中选取"FirstName"列?
select FirstName from Persons
-
3.通过SQL,您如何从"Persons"表中选取所有的列?
select * from Persons
-
通过SQL,您如何从"Persons"表中选取"FirstName"列的值等于"Peter"的所有记录?
select * from Persons where FirstName = 'Peter';
-
通过 SQL,您如何从 "Persons" 表中选取 "FirstName" 列的值以 "a" 开头的所有记录?
select * from Persons where FirstName like 'a%'
-
通过 SQL,您如何在表 Persons 中选择 FirstName 等于 Thomas 而 LastName 等于 Carter 的所有记录?
select * from Persons where FirstName = 'Thomas' and LastName= 'Cater';
-
通过 SQL,您如何按字母顺序选取 Persons 表中 LastName 介于 Adams 和 Carter 的所有记录?
select * from Persons where LastName between 'Admas' and 'Caters';
-
通过 SQL,您如何返回 "Persons" 表中记录的数目?
select count(*) from Persons;
-
通过 SQL,您如何根据 "FirstName" 列降序地从 "Persons" 表返回所有记录?
select * from Persons order by FirstName desc;
-
SQL中,聚集函数COUNT(列名)用于( 计算非空值的个数 )
-
哪个SQL命令用于更新数据库?update
-
哪个SQL命令用于完成删除数据库的数据? delete
-
通过 SQL,您如何向 "Persons" 表插入新的记录?insert
-
通过SQL,您如何把 "Persons" 表中 "LastName" 列的值 "Gates" 改为 "Wilson" ?
update Persons
set LastName = 'Wilson'
where LastName= 'Gates';
-
通过 SQL,您如何在 "Persons" 表中删除 "FirstName" 等于 "Fred" 的纪录?
delete from FirstName
where FIrstName='Fred';
-
现要查找缺少成绩(Grade)的学生的学号(Sno),相应的SQL语句是()。
select Sno fro Sc where Grade is null;
| 序号 | 原语句问题 | 修正后正确语句 | 错误说明 |
|---|---|---|---|
| 1 | select FirsstName from Persons |
select FirstName from Persons |
单词拼写错误:FirsstName → FirstName(多了一个 s) |
| 2 | select * from Persons |
select * from Persons |
语法不影响执行,但from后多了一个空格(建议规范:无多余空格) |
| 3 | select * from Persons where FirstName = 'Peter'; |
正确 | 无错误(语法、拼写均正确) |
| 4 | select * from Persons where FirstName like 'a%' |
正确(建议加分号结尾:select * from Persons where FirstName like 'a%';) |
仅缺少语句结束分号(部分数据库允许,但规范需加) |
| 5 | select * from Persons where FirstName = 'Thomas' and LastName= 'Cater'; |
select * from Persons where FirstName = 'Thomas' and LastName= 'Carter'; |
单词拼写错误:Cater → Carter(少了 r) |
| 6 | select * from Persons where LastName between 'Admas' and 'Caters'; |
select * from Persons where LastName between 'Adams' and 'Carter'; |
拼写错误:1. Admas → Adams(少了 a)2. Caters → Carter(多了 s) |
| 7 | select count(*) from Persons; |
正确 | 无错误(统计总记录数的标准写法) |
| 8 | select * from Persons order by FirstName desc; |
正确 | 无错误(降序排序的标准写法) |
| 9 | 聚集函数 COUNT (列名) 用于 ( 计算非空值的个数 ) | 正确 | 无错误(COUNT (列名) 会忽略 NULL 值,COUNT (*) 统计所有行) |
| 10 | 哪个 SQL 命令用于更新数据库?update | 正确(完整写法:UPDATE 表名 SET 列=值 WHERE 条件;) |
仅写关键词正确,补充完整语法更规范 |
| 11 | 哪个 SQL 命令用于完成删除数据库的数据?delete | 正确(完整写法:DELETE FROM 表名 WHERE 条件;) |
仅写关键词正确,补充完整语法更规范 |
| 12 | 通过 SQL,您如何向 "Persons" 表插入新的记录?insert | 正确(完整写法:INSERT INTO Persons (列1,列2) VALUES (值1,值2);) |
仅写关键词正确,补充完整语法更规范 |
| 13 | update from Persons <br> set LastName = 'Wilson' <br> where LastName= 'Gates'; |
UPDATE Persons <br> SET LastName = 'Wilson' <br> WHERE LastName = 'Gates'; |
语法错误:UPDATE 语句不需要 from(MySQL/Oracle 等主流数据库均不支持 update from) |
| 14 | delete from FirstName <br> where FIrstName='Fred'; |
DELETE FROM Persons <br> WHERE FirstName = 'Fred'; |
两个错误:1. 删除数据需指定表名 ,而非列名:FirstName → Persons2. 拼写错误:FIrstName → FirstName(I 和 r 顺序错) |
| 15 | select Sno fro Sc where Grade is null; |
select Sno from Sc where Grade is null; |
拼写错误:fro → from(少了 m) |
-
已知SN是字符型字段,下列SQL查询语句:
SELECT SN FROM S
WHERE SN LIKE 'AB%'
的执行结果是为(找SN的AB开头)
-
设有关系表S(Sno,Sname,Sage),其中Sage为年龄字段,则表达式
Sage NOT BETWEEN 18 AND 24 等价于(Sage < 18 and Sage > 24)
-
对于基本表EMP(ENO,ENAME,SALARY,DNO),其属性表示职工的工号、姓名、工资和所在部门的编号。基本表DEPT(DNO,DNAME),其属性表示部门的编号和部门名。
有一个SQL语句:
UPDATE EMP
SET SALARY=SALARY*1.05
WHERE DNO='D6' AND SALARY<(SELECT AVG(SALARY)FROM EMP);
请问这条语句的作用是(先算公司的平均工资,然后给D6部门的低于平均工资的员工提薪百分之五)
-
SQL中,与"NOT IN"等价的操作符是(<>= )。
-
用于实现数据存取安全性的SQL语句是( grant revoke)。
-
下列关于视图的作用,描述正确的有(ABCD)
A、
视图能够简化用户的操作。
B、
视图对重构数据库提供了一定程度的逻辑独立性。
C、
视图能够对机密数据提供安全保护。
D、
适当的利用视图可以更清晰地表达查询。
-
在SQL SELECT语句查询中,要去掉查询结果中的重复记录,应该使用关键字distinct。
-
在数据数据定义时,参照表和被参照表可以是同一个表。√
-
视图是一种数据库对象,它是从一个或几个基本表导出的表。它与基本表不同,是一个虚表。数据库中只存放视图的定义,而不存放视图对应的数据。这些数据仍存放在原来的基本表中。√
-
视图一经定义,就可以和基本表一样被查询、被删除,也可以在一个视图上再定义新的视图。√
-
某学院有3个系(IS,CS,MS),某位老师只给IS系的学生教授1号课程,采取下面的措施可以使这位老师只管理IS系选修了1号课程的学生信息
CREATE VIEW IS_Course1(Sno,Sname,Grade)
AS
SELECT Student.Sno,Sname,Grade
FROM Student,SC
WHERE Sdept ='IS' AND Student.Sno = SC.Sno AND SC.Cno='1';
随堂测试6
1.假定学生关系是S(SNo,SName,Sex,Age),课程关系是C(CNo,CName,Teacher),学生选课关系是SC(SNo,CNo,Grade)。
用SQL语句完成下列操作,书写SQL语句时用到的标点符号用英文状态下的符号。
(1)查询所有选课学生及其选课信息。
(2)查询所有选课学生及其选课信息,取消查询结果中重复列。(要求select后面的目标列加表名前缀)
(3)查找选修了课程号是'C2'的学生姓名;
1)select S.*, SC. *
from S,SC
where S.SNo = SC.SNo ;
2)select S.SNo,S.SName,S.Sex,S.Age,SC.CNo,SC.Grade
from S,SC
where S.SNo = SC.SNo ;
3)select SName
from S,SC
where S.SNo = SC.SNo and SC.CNo = 'C2';
| 序号 | 原语句问题 | 修正后正确语句 | 错误说明 |
|---|---|---|---|
| 1 | select S.*, SC. * from S,SC where S.SNo = SC.SNo ; |
SELECT S.*, SC.* FROM S, SC WHERE S.SNo = SC.SNo; |
1. 语法无错误,但存在格式问题:- SC. * 中间多余空格(应写SC.*);- 建议关键词大写(非强制,仅规范);- 标点全为英文(原语句已满足)。 |
| 2 | select S.SNo,S.SName,S.Sex,S.Age,SC.CNo.SC.Grade from S,SC where S.SNo = SC.SNo ; |
SELECT S.SNo, S.SName, S.Sex, S.Age, SC.CNo, SC.Grade FROM S, SC WHERE S.SNo = SC.SNo; |
核心错误:- 列名分隔错误:SC.CNo.SC.Grade 中用了.(点),应改为,(英文逗号);- 要求 "取消重复列":S 和 SC 都有 SNo,只保留 S.SNo(原语句已做到);- 要求 "select 后目标列加表名前缀":原语句列名前缀正确,仅分隔符错误。 |
| 3 | select SName from S,SC where S.SNo = SC.SNo and SC.CNo = 'C2'; |
SELECT S.SName FROM S, SC WHERE S.SNo = SC.SNo AND SC.CNo = 'C2'; |
1. 不满足 "规范(可选)":要求列名加表名前缀(虽题目未强制,但建议补充S.,更清晰);2. 格式优化:关键词大写、表名间加空格(不影响执行,仅规范);3. 原语句语法可执行,但前缀缺失,修正后更符合数据库规范。 |
随堂测试7
1.设关系模式 R(A、B、C、D、E)上 FD 集为 F,并且F={A→BC,CD→E,B→D,E→A}, 下面(A/E)是R的候选键。
2.设有关系模式R(U),其函数依赖集为F,,其中:U={A,B,C,D,E}, F={A→C,C→A,B→AC,D→AC} 则R的候选码为( BDE)。
在最小依赖集F中,下面叙述不正确的是(B )
A、
F中每个FD的右部都是单属性
B、
F中每个FD的左部都是单属性
C、
F中没有冗余的FD
D、
F中每个FD的左部没有冗余的属性
B不是必须的 只要右边是单属性就行
4.一个不好的关系模式,可能存在 数据冗余大 修改异常 更新异常 删除异常
实验一测试
1.设有一个学生------课程数据库,包括学生关系Student、课程关系Course和选修关系SC:
学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
注意:表名前缀必须有的需要加,可有可无的一律不加;不要加多余的空格,除中文字符外,其余字符一律在英文状态下输入
查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。题中数字代表3个空,请完成下列3个填空:
select 1
from 2
where 3 ;
1.sname,sex
2.student
3.sdept in('IS','MA','CS')
sedpt='is' or sdept='ma' or sdept='cs'
2.设有一个学生------课程数据库,包括学生关系Student、课程关系Course和选修关系SC:
学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
注意:表名前缀必须有的需要加,可有可无的一律不加;不要加多余的空格,除中文字符外,其余字符一律在英文状态下输入
查询所有姓李的学生的姓名、学号和性别。题中数字代表3个空,请完成下列3个空:
select 1
from 2
where 3 ;
1.sname,sno,sex
2.student
3.dnsme like '李%'
3.设有一个学生------课程数据库,包括学生关系Student、课程关系Course和选修关系SC:
学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
注意:表名前缀必须有的需要加,可有可无的一律不加;不要加多余的空格,除中文字符外,其余字符一律在英文状态下输入
查询选修了C01号课程的学生的学号及其成绩,查询结果按分数降序排列。题中数字分别表示空的编号,完成下列4空:
select 1
from 2
where 3
order by 4 ;
1.sno,grade
2.student,sc
3.sno =sno and cno='C01'
4.grade desc
4.设有一个学生------课程数据库,包括学生关系Student、课程关系Course和选修关系SC:
学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
注意:表名前缀必须有的需要加,可有可无的一律不加;不要加多余的空格,除中文字符外,其余字符一律在英文状态下输入
查询选修C01号课程的学生平均成绩,显示列的列名用average表示,题中数字代表3个空,请完成下列填空
select 1
from 2
where 3 ;
1.avg(grade) as average
3.cno= 'C01'
5.设有一个学生------课程数据库,包括学生关系Student、课程关系Course和选修关系SC:
学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
注意:表名前缀必须有的需要加,可有可无的一律不加;不要加多余的空格,除中文字符外,其余字符一律在英文状态下输入
查询年龄不在19~22岁之间(包括19和22)的学生姓名、性别和年龄; 完成下列3个空
select 1
from 2
where 3 ;
1.sname,agew,sex
2.student
3.age not between 19 and 22
设有一个学生------课程数据库,包括学生关系Student、课程关系Course和选修关系SC:
学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
注意:表名前缀必须有的需要加,可有可无的一律不加;不要加多余的空格,除中文字符外,其余字符一律在英文状态下输入
查询选修了3门以上课程的学生学号。完成下列4个空:
select 1
from 2
Group by 3
Having 4 ;
1.sno
2.sc ,student
3.sno
4.count(cno)>3
第五章(未写完)
1.在关系模式的五元组R(U,D,DOM,F)中,表示属性间数据依赖的是指F
2.一个低一级范式的关系模式通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程叫规范化
3.在R(U)中,如果X→Y,并且对于X的任何一个真子集X',都有X'不能函数确定Y,称Y对X存在 完全函数依赖
4.规范化一般是通过分解各个关系模式实现的,但有时也有合并 ×
规范化只有分解没有合并
5.设有关系模式R(A,B,C,D,M,N),函数依赖集F={N→D,M→D,D→B,BC→D,DC→N},R的候选码为 (ACM)。
6.关系模式中的候选键可以不止一个
7.规范化的关系模式中,所有属性都必须是不可分解的
8.下表给出的关系R为第几范式?( 1 )

9.
请指出该关系模式存在下列哪些问题(ABCD )
A、
插入异常
B、
删除异常
C、
数据冗余度大
D、
修改复杂
1. 插入异常
插入异常指 "无法插入某些合理的信息":
- 例:想新增一种材料(材料号 I5,价格 200),但因为原关系的候选键是(工程号,材料号),必须同时填写工程号才能插入 ------ 但此时还没有工程使用该材料,无法填写工程号,导致材料信息无法单独插入。
2. 删除异常
删除异常指 "删除某条信息时,会连带删除其他不需要删除的信息":
- 例:删除工程 P1 使用材料 I1 的记录(工程号 P1,材料号 I1),会同时删除工程 P1 的开工日期(9805)、完工日期(9902)------ 但工程 P1 本身的信息(开工 / 完工日期)是需要保留的,却被连带删除了。
3. 数据冗余度大
数据冗余指 "同一信息被重复存储多次":
- 例:工程 P1 的开工日期(9805)、完工日期(9902),在 P1 对应的 3 条记录(I1、I2、I3)中被重复存储了 3 次;
- 材料 I1 的价格(250),在 P1、P2 对应的记录中被重复存储了 2 次。
4. 修改复杂
修改复杂指 "修改某一信息时,需要修改多个地方,易出错":
- 例:若工程 P1 的完工日期从 9902 改为 9903,需要修改 P1 对应的所有 3 条记录(I1、I2、I3)中的完工日期;
- 若材料 I1 的价格从 250 改为 260,需要修改所有包含 I1 的记录(P1、P2 对应的 2 条)中的价格 ------ 漏改任意一条都会导致数据不一致。
10.1NF要求关系中所有属性都是原子的(即不可再分解的),根据该要求下表不能成为关系数据库中的关系

11.设有关系模式 R,存储运动员比赛成绩及比赛类别、主管等信息。
R(运动员编号,比赛项目,成绩,比赛类别,比赛主管)
如果规定:每个运动员每参加一个比赛项目,只有一个成绩;每个比赛项目只属于一个比赛类别;每个比赛类别只有一个比赛主管。
将R分解为:
R1(比赛项目 ,比赛类别,比赛主管)
R2(运动员编号,比赛项目,成绩)
分解后所得的 R1 和 R2 都是2NF
对
12
已知某数据库系统中职工关系定义如下:
职工(职工编号,姓名,基本工资,职务,职务工资),其中:职工编号不重复,每种职务有固定的职务工资
函数依赖为:职工编号->姓名,职工编号->基本工资,职工编号->职务,职工编号->职务工资, 职务->职务工资
(1)请指出该关系中的码( 职工编号 )。
(2)请指出该关系中的主属性有( 职工编号 )。
(3)请指出该关系中的非主属性有( 姓名,基本工资,职务,职务工资 )。说明:书写时按属性在职工关系表中出现的顺序排列,中间用顿号隔开,不要加多余的字符
(4)指出该关系模式最高属于第几范式?说明:请填写1NF或2NF或3NF 2NF
(5)请将其分解为更高一级的范式。说明:分解出的新关系用R1、R2等表示,关系中的属性按其在 职工(职工编号,姓名,基本工资,职务,职务工资)中出现的顺序排列,多个关系中间用顿号隔开
- R1 (职工编号,姓名,基本工资,职务)
- R2 (职务,职务工资)
第七章
-
保护数据库,防止未授权的或不合法的使用造成的数据泄漏、更改破坏,这是指数据库的( 安全性 )。
-
SQL语言中的GRANT和REVOKE语句用来维护数据库的(安全性)。
-
某高校6个系的学生信息存放在同一个基本表中,采取(只能让管理员读取本系的行数据)的措施可使各系的管理员只能读取本系学生信息。
-
若将tb_Student表的插入权限赋予用户user1,并允许其将该权限授予他人,那么对应的SQL语句为:
GRANT INSERT ON TABLE tb_Student To user1(wjth grant option)
-
事务是一个(进程)。
-
事务对DB的修改,应该在数据库中留下痕迹,永不消逝。这个性质称为事务的(持久性)。
-
后备副本的主要用途是(数据恢复)
-
在DB技术中,"脏数据"是指(未提交还被回滚)。
-
"所有事务都是两段式"与"事务的并发调度是可串行化"两者之间的关系是(前者包含后者)。
-
在SQL中,用户可以直接进行查询操作的是(实表和虚表/基本表和视图)。
-
如果有n个事务串行调度,那么不同的有效调度有(n!)。
-
在事务依赖图中,如果两个事务的依赖关系形成一个循环,那么就会(形成死锁)。
-
数据库技术中,"日志"和操作的关系是( 先日志后操作 )
-
把对表SC的插入权限授予用户U1并允许传递此权限。
GRANT INSERT ON TABLE SC TO U1 ( with grant option );
-
如事务T对数据对象R实现X封锁,则T对R是( 只能读不能写 )
-
在第一个事务以S封锁方式读数据A时,第二个事务对数据A的读方式会遭到失败的是( 加x锁 )。
-
设有两个事务T1、T2,其并发操作如图所示,下列评价正确的是( B)。
-

A、
该操作不存在问题
B、
该操作丢失修改
C、
该操作不能重复读
D、
该操作读"脏"数据
-
设有两个事务T1、T2,其并发操作如图所示,下列评价正确的是( D )。

A、
该操作不存在问题
B、
该操作丢失修改
C、该操作不能重复读
D、
该操作读"脏"数据
-
"所有事务调度均遵循两段锁协议"与"事务的并发调度是可串行化"两者之间的关系是( 前者包含后者 )。
-
数据库的安全性是指保护数据库以防止非法使用所造成的(数据泄露 数据更改 数据破坏)。
-
计算机统有3类安全性问题,分别是(技术安全 管理安全 政策法规)
-
数据库安全性控制的手段有(用户标识和确定,用户存取权限控制,定义视图,数据加密,数据审计)。
-
关于视图的作用,描述正确的是(ABCD)。
A、
视图能够简化用户的操作。
B、
视图对重构数据库提供了一定程度的逻辑独立性。
C、
视图能够对机密数据提供安全保护。
D、
适当的利用视图可以更清晰的表达查询。
-
视图定义后,用户就可对基本表一样对视图进行查询。
-
一个给定的并发调度,当且仅当它是可串行化的,才认为是正确的调度策略。 √
实验二测试
1.设有一个学生------课程数据库,包括学生关系Student、课程关系Course和选修关系SC:
学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
使用SQL语句完成下列操作:
查询选修了2号课程而且成绩在90以上的所有学生的学号和姓名。
SELECT 1
FROM 2
WHERE 3 AND SC.Cno = '2' AND SC.Grade >= 90;
1.sno,sname
2.sc,student
3.sno =sno
2.设有一个学生------课程数据库,包括学生关系Student、课程关系Course和选修关系SC:
学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
查询每个学生的学号、姓名、选修的课程名及成绩。题中数字代表3个空,请完成下列3个填空:
SELECT 1
FROM Student, 2
WHERE Student.Sno = SC.Sno AND 3 ;
1.sno,sname,cname,grade
2.course,sc
3.cno =cno
3.设有一个学生------课程数据库,包括学生关系Student、课程关系Course和选修关系SC:
学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
查询选修C4课程的女学生的平均年龄。
SELECT 1
FROM Student, SC
WHERE 2 AND Cno='C4' AND Ssex='女';
1.avg(age)
2.sno=sno
实验三测试
1.设有数据表Student(Sno,Sname,Ssex,Sdept, Sage),下列语句的功能是将学生200215131的姓名改为"张莉莉",请将语句补充完整:
1 Student
2
WHERE Sno='200215131';
1.update
2.set Sname='张'
2.设有数据表Student(Sno,Sname,Ssex,Sdept, Sage),以下语句的功能是:删除学号为200215133的学生记录。
1
2 Student
WHERE Sno='200215133';
1.delete
2.from
3.设有选课表SC(Sno,Cno,grade),以下语句的功能是:将所有成绩为空值的选课记录删除掉。
DELETE
FROM SC
WHERE 1 ;
1.grade is null
实验四测试
对学生关系Student(Sno,Sname,Ssex,Sage,Sdept)、课程关系Course(Cno,Cname,Cpno,Credit)和选修关系SC(Sno,Cno,Grade)进行视图的定义(创建)、查询、更新、删除等操作。
1、创建信息系(IS)学生的视图。
1 IS_Student
AS
SELECT Sno,Sname,Ssex,Sage
FROM Student
WHERE Sdept='IS'
2 ;/更新视图时所进行的修改都需要符合SELECT语句中的限制条件/
2、将学生的学号(Sno)及平均成绩(Gavg)定义为一个视图,视图名为S_G。
CREATE VIEW 3
AS
SELECT Sno, 4
FROM SC
5 Sno;
1.create view
2.with check option
3.S_G(Sno,Gavg)
4.avg(grade) as Gavg
5.group by
第六章
1.数据库设计可划分为六个阶段,每个阶段都有自己的设计内容,"为哪些关系在哪些属性上建什么样的索引"这一设计内容应该属于(物理设计 )阶段。
2.在关系数据库设计中,设计关系模式是数据库设计中( 逻辑设计)阶段的任务。
3.在关系数据库设计中,对关系进行规范化处理,使关系达到一定的范式,例如达到3NF,这是(逻辑设计 )阶段的任务。
4.在概念模型中的客观存在并可相互区别的事物称(实体 ) 。
5.在ER模型中,如果有3个不同的实体型,3个M:N联系,根据ER模型转换为关系模型的规则,转换为关系的数目是( 6)。
6.数据流程图是用于数据库设计中( 需求分析)阶段的工具。
7.需求分析阶段设计数据流程图(DFD)通常采用( 自顶向下的方法 )。
8.在E-R模型转换成关系模型的过程中,下列叙述不正确的是( B )。
A、
每个实体型转换成一个关系模式
B、
每个联系都必须转换成一个关系模式
C、
每个M:N联系类型转换一个关系模式
D、
在处理1:1和1:N联系时,可以生成新的关系模式,也可以不生成新的关系模式
9.某体育运动锦标赛有来自世界各国运动员组成的体育代表团参赛各类比赛项目。下面是为该锦标赛各个代表团、运动员、比赛项目、比赛情况设计一个E-R模型。
现将上述E-R转换成对应的关系模型,正确的有哪些?( ABCE )
A、
代表团(团编号,地区,住所)
运动员(编号,姓名,年龄,性别)
比赛项目(项目编号,项目名,级别)
比赛类别(类别编号,类别名,主管)
成员(团编号,运动员)
属于(类别编号,项目编号)
参加(编号,项目编号,比赛时间,得分)
B、
代表团(团编号,地区,住所)
运动员(编号,姓名,年龄,性别)
比赛项目(项目编号,项目名,级别,类别编号)
比赛类别(类别编号,类别名,主管)
成员(团编号,运动员)
参加(编号,项目编号,比赛时间,得分)
C、
代表团(团编号,地区,住所)
运动员(编号,姓名,年龄,性别,团编号)
比赛项目(项目编号,项目名,级别)
比赛类别(类别编号,类别名,主管)
属于(类别编号,项目编号)
参加(编号,项目编号,比赛时间,得分)
D、
代表团(团编号,地区,住所)
运动员(编号,姓名,年龄,性别)
比赛项目(项目编号,项目名,级别)
比赛类别(类别编号,类别名,主管)
成员(团编号,运动员)
属于(类别编号,项目编号)
参加(项目编号,比赛时间,得分)
E、
代表团(团编号,地区,住所)
运动员(编号,姓名,年龄,性别,团编号)
比赛项目(项目编号,项目名,级别,类别编号)
比赛类别(类别编号,类别名,主管)
参加(编号,项目编号,比赛时间,得分)
10.数据库试运行合格后,就可以投入正式运行了。但是由于应用环境的不断变化,数据库运行过程中物理存储也不断变化,所以数据库的运行和维护是一个长期的任务。经常性的维护工作主要包括( )。
A、
数据句的转储和恢复
B、
数据库的安全性控制
C、
数据库性能的监督、分析和改进
D、
数据库完整性控制
E、
数据库的重组织和重构造。
| 特性 | 活锁(Live Lock) | 死锁(Dead Lock) |
|---|---|---|
| 本质 | 事务长期处于 "等待资源" 状态,但资源被其他事务轮流占用,自身始终抢不到资源 | 多个事务互相持有对方需要的资源,且都不释放,形成循环等待 |
| 状态 | 事务没有阻塞,一直在尝试获取资源,只是持续失败 | 事务完全阻塞,互相等待,无法继续执行 |
| 自行恢复 | 有机会(比如调整调度策略,让等待的事务优先获取资源) | 无机会,必须人工或系统干预才能解除 |
| 典型场景 | 多个事务争抢同一资源,采用 "先来后到" 以外的调度策略(如优先级调度),低优先级事务永远抢不到 | 事务 T1 持有资源 A,等待资源 B;事务 T2 持有资源 B,等待资源 A |


在关系代数中,无括号时,选择(σ)、投影(Π)、连接(▷◁)、除法(÷)的执行优先级 / 顺序遵循「先行筛选→再表关联→最后列筛选」的核心逻辑,具体规则和优先级排序如下:
一、核心优先级(从先到后,无括号时)
- 选择(σ):行筛选(最高优先级)
- 笛卡尔积(×)/ 连接(▷◁)/ 除法(÷)(同级优先级,按「从左到右」执行)
- 投影(Π):列筛选(最低优先级)
1.在教务管理数据库中,有学生关系 S(SNO,SN,SEX,AGE,DEPT)、选课关系 SC(SNO,CNO,SCORE)、
课程关系C(CNO,CN,CT)。上述关系模式中属性定义如下:学号(SNO)、姓名(SN)、性别(SEX)、年龄(AGE)、系别(DEPT)、
课程号(CNO)、课程名(CN)、教师号(CT)
问题:
1.查询年龄大于18岁的所有男同学的信息;
2.查询教师号为T1的老师所教授课程的课程号和课程名;
3.查询选修了全部课程的学生学号和学生姓名
4.查询"张三"同学所选修的所有课程的课程号、课程名和成绩;
5.查询年龄大于18岁的学生的学号、姓名和系别。
2.在SQL中,主键和外键约束是用于确保数据完整性的重要机制。请根据要求,在以下SQL语句中添加主键或外键约束。
(1)请为student表中属性Sno添加主键约束
CREATE TABLE student (
Sno char(8) (1) ,
Sname char(20) NOT NULL,
Ssex char(2),
Sage int,
Sdept varchar(20)
);
(2)请为course表中属性Sno添加主键约束
CREATE TABLE course (
Cno char(5) PRIMARY KEY, /Cno是课程号 /
Cname char(20) NOT NULL,
Cpno char(5) ,
Ccredit int,
(2) , /Cpno是先修课程号,取值参照course表中的Cno列/
);
1)PRIMARY KEY
2)FOREIGN KEY(Cpno) REFERENCES course(Cno);
3.给定一个教学管理数据库,库中有5个基本表,各表结构请参考教材89页操作题,写出完成下列操作的SQL语句(每题10分)
1、查询女学生的学号和姓名。
2、查询缺少成绩的学生的学号。
3、查询选修了课程的学生学号。
4、查询考试成绩不及格的学生的学号。
5、查询考试成绩在80~90(含80h和 90)的学生的学号和课程号。
6、查询姓"李",最后一个字是"文"的学生的信息。
7、查询选修了课程号是"C2"的学生的学号及成绩,查询结果按成绩降序排列
8、统计课程总门数。
9、统计"C2"课程的总分、最高分。
10、查询每门课程的选择人数。

4.sql指的是 Structured Query Language
5.通过SQL,您如何从"Persons"表中选取"FirstName"列?
select FirstName from Persons;
6.通过SQL,您如何从"Persons"获取所有信息
select * from Persons;
7.通过SQL,您如何从"Persons"表中选取"FirstName"列的值等于"Peter"的所有记录?
select *from Persons where FirstName = 'Peter';
8.通过 SQL,您如何从 "Persons" 表中选取 "FirstName" 列的值以 "a" 开头的所有记录?
select * from Persons where FisrstName like 'a%';
9.通过 SQL,您如何在表 Persons 中选择 FirstName 等于 Thomas 而 LastName 等于 Carter 的所有记录?
select * from Persons where FirstName = 'Thomas' and LastName='Carter';
10.通过 SQL,您如何按字母顺序选取 Persons 表中 LastName 介于 Adams 和 Carter 的所有记录?
select *from Persons where LastName between 'Adams' and 'Carter';
select * from Persons where LastName >='Adams' and LastName<='Carter';
11.通过 SQL,您如何返回 "Persons" 表中记录的数目?
select count(*) from Persons;
12.通过 SQL,您如何根据 "FirstName" 列降序地从 "Persons" 表返回所有记录?
select * from Persons order by FirstName desc;
13.SQL中,聚集函数COUNT(列名)用于( )
计算一列非空值的个数
14.update用于更新数据库,delete用于删除数据库的数据
15通过 SQL,您如何向 "Persons" 表插入新的记录?
insert into Persons
values('jimmy',19);
16.通过SQL,您如何把 "Persons" 表中 "LastName" 列的值 "Gates" 改为 "Wilson" ?
update Persons set LastName = 'Gates' where LastName ='Wiston';(错误写法,应该是新的名字在前,where后面跟旧的)
update Persons set LastName='Wiston' where LastName ='Gates';
-
通过 SQL,您如何在 "Persons" 表中删除 "FirstName" 等于 "Fred" 的纪录?
delete FirstName ='Fred' from Persons;(错误写法,delete from 表名 where 条件)
delete from Persons where FirstName = 'Fred';
18.现要查找缺少成绩(Grade)的学生的学号(Sno),相应的SQL语句是()。
selelct Sno from SC where Grade is null;
19.已知SN是字符型字段,下列SQL查询语句:
SELECT SN FROM S
WHERE SN LIKE 'AB%'
的执行结果是为()
从S找SN前两个字是AB然后输出他们的名字
20.between and 是闭区间
21.对于基本表EMP(ENO,ENAME,SALARY,DNO),其属性表示职工的工号、姓名、工资和所在部门的编号。基本表DEPT(DNO,DNAME),其属性表示部门的编号和部门名。为在D6部门工作、工资低于整个企业平均工资的职工加薪5%。
update EMP set salary = salary*1.05 where DNO='D6' and salary <(select avg(salary) from EMP);
22.设有关系R(A,B,C)和S(C,D),与关系代数表达式 含义相同的sql语句

select A,B,D from R,S where R.C =S.C;
23.已知选修关系数据库中的基本表SC(Sno,Sname,Grade),在SQL Server 2008中,如果要从SC表删除选修课程后没有参加考试的元组(即:SC中尚无成绩的选课元组),下列()是正确的。
delete from SC where Grade =null;
24.用于实现数据存取安全性的SQL语句是( )
grant/revoke
25.假定学生关系是S(SNo,SName,Sex,Age),课程关系是C(CNo,CName,Teacher),学生选课关系是SC(SNo,CNo,Grade)。
用SQL语句完成下列操作,书写SQL语句时用到的标点符号用英文状态下的符号。
(1)查询所有选课学生及其选课信息。
(2)查询所有选课学生及其选课信息,取消查询结果中重复列。(要求select后面的目标列加表名前缀)
(3)查找选修了课程号是'C2'的学生姓名;
1).select Sno,Cno from SC;(错误想法)
select * from S,SC where S.Sno =SC.Sno;(错误,要分开写*)
select S.,SC. from S,SC where S.Sno =SC.Sno;
2).select S.Sno,S.Sname,S.Sex,S.Age,SC.Cno,SC.grade from S,SC where S.Sno= SC.Sno;
3).select S.Sname from S,SC where S.Sno =SC.Sno and SC.Cno ='C2';
26.假定学生关系是S(SNo,SName,Sex,Age),课程关系是C(CNo,CName,Teacher),学生选课关系是SC(SNo,CNo,Grade)。
用SQL语句完成下列操作,书写SQL语句时用到的标点符号用英文状态下的符号。
(1)在学生表S中插入一个学生信息(学号:09001,姓名:王力,性别:男,年龄:20)。
(2)在选课表SC中插入一个选课信息(学号:09001,课程号:C2)。
1).insert into S
values(09001,'王力','男',20);
2)insert into SC(Sno,Cbo)
values(09001,'C2');
27.设关系模式 R(A、B、C、D、E)上 FD 集为 F,并且F={A→BC,CD→E,B→D,E→A}, 下面()是R的候选键。
验证选项 A(属性 A)
- 由 A→BC,可得 A→B、A→C;
- 由 B→D,结合 A→B,可得 A→D;
- 由 CD→E,结合 A→C、A→D,可得 A→E;
- 综上:A 能推导出 A、B、C、D、E(所有属性),且 A 是单属性,无冗余,因此 A 是候选键。
验证选项 E(属性 E)
- 由 E→A,可得 E→A;
- 由 A→BC,结合 E→A,可得 E→B、E→C;
- 由 B→D,结合 E→B,可得 E→D;
- 由 CD→E(此处 E 是已知属性,且已推出 C、D),可验证闭环;
- 综上:E 能推导出 A、B、C、D、E(所有属性),且 E 是单属性,无冗余,因此 E 也是候选键。
28.设有关系模式R(U),其函数依赖集为F,,其中:U={A,B,C,D,E}, F={A→C,C→A,B→AC,D→AC} 则R的候选码为(B,D,E )。
29.设有一个学生------课程数据库,包括学生关系Student、课程关系Course和选修关系SC:
学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
注意:表名前缀必须有的需要加,可有可无的一律不加;不要加多余的空格,除中文字符外,其余字符一律在英文状态下输入
查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。题中数字代表3个空,请完成下列3个填空:
select 1
from 2
where 3 ;
1).Ssex,Sname
2).Student
3).Sdept ='IS' or Sdept = 'MA' or Sdept='CS'
Sdept in('IS','MA','CS')
30设有一个学生------课程数据库,包括学生关系Student、课程关系Course和选修关系SC:
学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
注意:表名前缀必须有的需要加,可有可无的一律不加;不要加多余的空格,除中文字符外,其余字符一律在英文状态下输入
查询所有姓李的学生的姓名、学号和性别。题中数字代表3个空,请完成下列3个空:
select 1
from 2
where 3 ;
1).Sname,Sno,Sex
2).student
3)student.sname like '李%';
31.设有一个学生------课程数据库,包括学生关系Student、课程关系Course和选修关系SC:
学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
注意:表名前缀必须有的需要加,可有可无的一律不加;不要加多余的空格,除中文字符外,其余字符一律在英文状态下输入
查询选修了C01号课程的学生的学号及其成绩,查询结果按分数降序排列。题中数字分别表示空的编号,完成下列4空:
select 1
from 2
where 3
order by 4 ;
1)sno,grade
2)sc
3)sc.sno = 'C01'
4)grade desc
32.设有一个学生------课程数据库,包括学生关系Student、课程关系Course和选修关系SC:
学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
注意:表名前缀必须有的需要加,可有可无的一律不加;不要加多余的空格,除中文字符外,其余字符一律在英文状态下输入
查询选修C01号课程的学生平均成绩,显示列的列名用average表示,题中数字代表3个空,请完成下列填空
select 1
from 2
where 3 ;
1). avg(grade) as average
2).SC
3).Cno = 'C01'
33.设有一个学生------课程数据库,包括学生关系Student、课程关系Course和选修关系SC:
学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
注意:表名前缀必须有的需要加,可有可无的一律不加;不要加多余的空格,除中文字符外,其余字符一律在英文状态下输入
查询年龄不在19~22岁之间(包括19和22)的学生姓名、性别和年龄; 完成下列3个空
select 1
from 2
where 3 ;
1).sname,sex,age
2).student
3).age not between 19 and 20
34.设有一个学生------课程数据库,包括学生关系Student、课程关系Course和选修关系SC:
学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
注意:表名前缀必须有的需要加,可有可无的一律不加;不要加多余的空格,除中文字符外,其余字符一律在英文状态下输入
查询选修了3门以上课程的学生学号。完成下列4个空:
select 1
from 2
Group by 3
Having 4 ;
1)sno
2)sc
3)sno(按学生学号分组才能统计学生选课数量)
4)count(Cno>3)
35.设有关系模式R(A,B,C,D,M,N),函数依赖集F={N→D,M→D,D→B,BC→D,DC→N},R的候选码为 (A,C,M)。
36.
首先,满足第一范式,原子性满足
其次,找主键,工程号和材料号都是,开工日期部份依赖于工程号,完工日期部份依赖于材料号,不是完全依赖,不属于2NF
36.设有关系模式 R,存储运动员比赛成绩及比赛类别、主管等信息。
R(运动员编号,比赛项目,成绩,比赛类别,比赛主管)
如果规定:每个运动员每参加一个比赛项目,只有一个成绩;每个比赛项目只属于一个比赛类别;每个比赛类别只有一个比赛主管。
请指出该关系模式的候选码( (运动员编号,比赛项目) )。、
37.
该表存在的问题:
A、插入异常
如果要插入一个新工程(还未采购任何材料) ,由于主键是 "工程号 + 材料号",材料号为空时无法插入;同理,插入一个新材料(还未被任何工程使用) ,工程号为空也无法插入。因此存在插入异常。
B、删除异常
如果删除某工程的所有材料记录 (比如删除 P1 的所有材料),会同时丢失该工程的 "开工日期、完工日期" 信息;同理,删除某材料的所有工程记录 ,会丢失该材料的 "价格" 信息。因此存在删除异常。
C、数据冗余度大
- 同一工程的 "开工日期、完工日期" 会重复存储(如 P1 的开工日 期 "9805" 重复 3 次);
- 同一材料的 "价格" 会重复存储(如 I1 的价格 "250" 重复 2 次)。因此数据冗余度大。
D、修改复杂
如果要修改某工程的 "开工日期",需要修改该工程所有材料记录的 "开工日期"(如 P1 有 3 条记录,需改 3 次);同理,修改某材料的 "价格",需要修改该材料所有工程记录的 "价格"(如 I1 有 2 条记录,需改 2 次),容易漏改或出错。因此修改复杂。
38.设有关系模式 R,存储运动员比赛成绩及比赛类别、主管等信息。
R(运动员编号,比赛项目,成绩,比赛类别,比赛主管)
如果规定:每个运动员每参加一个比赛项目,只有一个成绩;每个比赛项目只属于一个比赛类别;每个比赛类别只有一个比赛主管。
将R分解为:
R1(比赛项目 ,比赛类别,比赛主管)
R2(运动员编号,比赛项目,成绩)
分解后所得的 R1 和 R2 都是2NF
对
39.已知某数据库系统中职工关系定义如下:
职工(职工编号,姓名,基本工资,职务,职务工资),其中:职工编号不重复,每种职务有固定的职务工资
函数依赖为:职工编号->姓名,职工编号->基本工资,职工编号->职务,职工编号->职务工资, 职务->职务工资
(1)请指出该关系中的码( 职工编号 )。
(2)请指出该关系中的主属性有( 职工编号 )。
(3)请指出该关系中的非主属性有( 姓名,基本工资,职务,职务工资 )。说明:书写时按属性在职工关系表中出现的顺序排列,中间用顿号隔开,不要加多余的字符
(4)指出该关系模式最高属于第几范式?说明:请填写1NF或2NF或3NF
2NF,因为主码只有一个所以肯定是完全依赖
(5)请将其分解为更高一级的范式。说明:分解出的新关系用R1、R2等表示,关系中的属性按其在 职工(职工编号,姓名,基本工资,职务,职务工资)中出现的顺序排列,多个关系中间用顿号隔开
R1(职务,职务工资)
R2(职工编号,基本工资,职务,姓名)
40.若将tb_Student表的插入权限赋予用户user1,并允许其将该权限授予他人,那么对应的SQL语句为:
GRANT INSERT ON TABLE tb_Student To user1(with grant option);
| 关键字 | 适用场景 | 核心作用 |
|---|---|---|
WITH GRANT OPTION |
权限授予(GRANT语句) |
允许被授权者将获得的权限再转授给其他用户 |
WITH CHECK OPTION |
视图创建(CREATE VIEW) |
保证通过视图修改数据时,修改后的数据仍能被该视图查询到 |
41.事务是一个操作序列
42.在SQL中,用户可以直接进行查询操作的是()。
实表和虚表 基本表和视图
43.如果有n个事务串行调度,那么不同的有效调度有()
n!
44.把对表SC的插入权限授予用户U1并允许传递此权限。
GRANT INSERT ON TABLE SC TO U1 (with grant option );
45.设有一个学生------课程数据库,包括学生关系Student、课程关系Course和选修关系SC:
学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
使用SQL语句完成下列操作:
查询选修了2号课程而且成绩在90以上的所有学生的学号和姓名。
SELECT 1
FROM 2
WHERE 3 AND SC.Cno = '2' AND SC.Grade >= 90;
1).sno,sname
2)SC,Student
3)Student.sno = SC.Sno
46.设有一个学生------课程数据库,包括学生关系Student、课程关系Course和选修关系SC:
学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
查询每个学生的学号、姓名、选修的课程名及成绩。题中数字代表3个空,请完成下列3个填空:
SELECT 1
FROM Student, 2
WHERE Student.Sno = SC.Sno AND 3 ;
1)Sno,Sname,Cname,Grade
2).Course,SC
3).Course.Cno = SC.Cno
47.设有一个学生------课程数据库,包括学生关系Student、课程关系Course和选修关系SC:
学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
查询选修C4课程的女学生的平均年龄。
SELECT 1
FROM Student, SC
WHERE 2 AND Cno='C4' AND Ssex='女';
1).avg(Sage)
2).Student.Sno = SC.Sno
48.设有数据表Student(Sno,Sname,Ssex,Sdept, Sage),下列语句的功能是将学生200215131的姓名改为"张莉莉",请将语句补充完整:
1 Student
2
WHERE Sno='200215131';
1).update
2)set Sno='张莉莉'
49.设有数据表Student(Sno,Sname,Ssex,Sdept, Sage),以下语句的功能是:删除学号为200215133的学生记录。
1
2 Student
WHERE Sno='200215133';
1)delete
2)from
50.设有选课表SC(Sno,Cno,grade),以下语句的功能是:将所有成绩为空值的选课记录删除掉。
DELETE
FROM SC
WHERE 1 ;
1).grade =null
51.在ER模型中,如果有3个不同的实体型,3个M:N联系,根据ER模型转换为关系模型的规则,转换为关系的数目是(6 )
52.需求分析阶段设计数据流程图(DFD)通常采用(D )。
A、
面向对象的方法
B、
回溯的方法
C、
自底向上的方法
D、
自顶向下的方法

现将上述E-R转换成对应的关系模型,正确的有哪些?( ABCE)
A、
代表团(团编号,地区,住所)
运动员(编号,姓名,年龄,性别)
比赛项目(项目编号,项目名,级别)
比赛类别(类别编号,类别名,主管)
成员(团编号,运动员)
属于(类别编号,项目编号)
参加(编号,项目编号,比赛时间,得分)
B、
代表团(团编号,地区,住所)
运动员(编号,姓名,年龄,性别)
比赛项目(项目编号,项目名,级别,类别编号)
比赛类别(类别编号,类别名,主管)
成员(团编号,运动员)
参加(编号,项目编号,比赛时间,得分)
C、
代表团(团编号,地区,住所)
运动员(编号,姓名,年龄,性别,团编号)
比赛项目(项目编号,项目名,级别)
比赛类别(类别编号,类别名,主管)
属于(类别编号,项目编号)
参加(编号,项目编号,比赛时间,得分)
D、
代表团(团编号,地区,住所)
运动员(编号,姓名,年龄,性别)
比赛项目(项目编号,项目名,级别)
比赛类别(类别编号,类别名,主管)
成员(团编号,运动员)
属于(类别编号,项目编号)
参加(项目编号,比赛时间,得分)
E、
代表团(团编号,地区,住所)
运动员(编号,姓名,年龄,性别,团编号)
比赛项目(项目编号,项目名,级别,类别编号)
比赛类别(类别编号,类别名,主管)
参加(编号,项目编号,比赛时间,得分)
54.对学生关系Student(Sno,Sname,Ssex,Sage,Sdept)、课程关系Course(Cno,Cname,Cpno,Credit)和选修关系SC(Sno,Cno,Grade)进行视图的定义(创建)、查询、更新、删除等操作。
1、创建信息系(IS)学生的视图。
1 IS_Student
AS
SELECT Sno,Sname,Ssex,Sage
FROM Student
WHERE Sdept='IS'
2 ;/更新视图时所进行的修改都需要符合SELECT语句中的限制条件/
2、将学生的学号(Sno)及平均成绩(Gavg)定义为一个视图,视图名为S_G。
CREATE VIEW 3
AS
SELECT Sno, 4
FROM SC
5 Sno;
1).create view
2).with check option
3)S_G
4)avg(Grade) ad Gavg
5)group by
| 关键字 | 作用对象 | 执行顺序 | 是否依赖 GROUP BY |
能否用聚合函数 | 典型场景 |
|---|---|---|---|---|---|
GROUP BY |
行 → 分组 | 3 | 否(但聚合函数依赖它) | 是(分组后用) | 按学生统计平均成绩 |
HAVING |
分组 → 筛选组 | 4 | 是 | 是 | 筛选平均成绩≥80 的学生 |
ORDER BY |
最终结果集 → 排序 | 6 | 否 | 是 | 按平均成绩降序排列结果 |
WHERE |
行 → 筛选行 | 2 | 否 | 否 | 筛选成绩≥60 的选课记录 |
进阶篇
存储引擎
连接层,服务层,引擎层,存储层
默认存储引擎:InnoDb
- 在创建表时,指定存储引擎
sql
CREATE TABLE 表名(
字段1 字段1类型 [COMMENT 字段1注释],
......
字段n 字段n类型 [COMMENT 字段n注释]
) ENGINE = INNODB [COMMENT 表注释];
-
查看当前数据库支持的存储引擎
SHOW ENGINES ;
CREATE TABLE my_myisam(
id int,
NAME VARCHAR(10)
)ENGINE = MyISAM;
InnoDB
可靠性 高性能
特点
-
DML操作遵循ACID模型,支持事务;
-
行级锁,提高并发访问性能;
-
支持外键 FOREIGN KEY约束,保证数据的完整性和正确性;
-
XXX.ibd: XXX代表的是表名,InnoDB引擎的每一张表都会对应这样一个表空间文件,包含该表的表结构(frm, sdi)、数据和索引。
-
参数: innodb_file_per_table
如果这个参数打开,则一张表对应一个表空间
逻辑存储结构:
一个表空间里面包含一个段;
一个段里面包含一个区;
一个区里面包含很多页;
一个页里面包含很多行;
行里面包含:指针;最后一次操作的id
页是最小单元
页和区的大小是固定的,所以一个区能包含64个页
MyISAM
介绍
MyISAM是MySQL早期的默认存储引擎。
特点
- 不支持事务,不支持外键
- 支持表锁,不支持行锁
- 访问速度
文件
- xxx.sdi: 存储表结构信息
- xxx.MYD: 存储数据
- xxx.MYI: 存储索引
Memory
介绍
Memory引擎的表数据是存储在内存中的,由于受到硬件问题、或断电问题的影响,只能将这些表作为临时表或缓存使用。
特点
- 内存存放
- hash索引(默认)
文件
- xxx.sdi:存储表结构信息
引擎区别
| 特点 | InnoDB | MyISAM | Memory |
|---|---|---|---|
| 存储限制 | 64TB | 有 | 有 |
| 事务安全 | 支持 | - | - |
| 锁机制 | 行锁 | 表锁 | 表锁 |
| B+tree索引 | 支持 | 支持 | 支持 |
| Hash索引 | - | - | 支持 |
| 全文索引 | 支持(5.6版本之后) | 支持 | - |
| 空间使用 | 高 | 低 | N/A |
| 内存使用 | 高 | 低 | 中等 |
| 批量插入速度 | 低 | 高 | 高 |
| 支持外键 | 支持 | - | - |
如何选择
markdown
在选择存储引擎时,应该根据应用系统的特点选择合适的存储引擎。对于复杂的应用系统,还可以根据实际情况选择多种存储引擎进行组合。
## InnoDB
- 是 MySQL 的默认存储引擎,支持事务、外键。
- 如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新、删除操作,那么 InnoDB 存储引擎是比较合适的选择。
## MyISAM
- 如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那么选择这个存储引擎是非常合适的。
## MEMORY
- 将所有数据保存在内存中,访问速度快,通常用于临时表及缓存。
- MEMORY 的缺陷就是对表的大小有限制,太大的表无法缓存在内存中,而且无法保障数据的安全性。
索引(index)
一种数据结构,用来高效获取数据
| 优势 | 劣势 |
|---|---|
| 提高数据检索的效率,降低数据库的IO成本 | 索引列也是要占用空间的。 |
| 通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗。 | 索引大大提高了查询效率,同时却也降低更新表的速度,如对表进行INSERT、UPDATE、DELETE时,效率降低 |
MySQL的索引是在存储引擎层实现的,不同的存储引擎有不同的结构,主要包含以下几种:
| 索引结构 | 描述 |
|---|---|
| B+Tree索引 | 最常见的索引类型,大部分引擎都支持 B+ 树索引 |
| Hash索引 | 底层数据结构是用哈希表实现的,只有精确匹配索引列的查询才有效,不支持范围查询 |
| R-tree(空间索引) | 空间索引是MyISAM引擎的一个特殊索引类型,主要用于地理空间数据类型,通常使用较少 |
| Full-text(全文索引) | 是一种通过建立倒排索引,快速匹配文档的方式。类似于Lucene,Solr,ES |
| 索引 | InnoDB | MyISAM | Memory |
|---|---|---|---|
| B-tree索引 | 支持 | 支持 | 支持 |
| Hash 索引 | 不支持 | 不支持 | 支持 |
| R-tree 索引 | 不支持 | 支持 | 不支持 |
| Full-text | 5.6版本之后支持 | 支持 | 不支持 |
B树:多路平衡二叉树
B+树:
二者区别:
B+树 所有数据都会出现在叶子节点,因此可能出现一棵树存在两个相同数据的现象
叶子结点形成一个单向链表
MySQL索引数据结构对经典的B+Tree进行了优化。在原B+Tree的基础上,增加一个指向相邻叶子节点的链表指针,就形成了带有顺序指针的B+Tree,提高区间访问的性能。
Hash索引
-
Hash索引只能用于对等比较(=, in),不支持范围查询(between, >, <, ...)
-
无法利用索引完成排序操作
-
查询效率高,通常只需要一次检索就可以了(如果出现哈希碰撞,还需要去链表继续查找),效率通常要高于B+tree索引
在 MySQL 中,支持 hash 索引的是 Memory 引擎,而 InnoDB 中具有自适应 hash 功能,hash 索引是存储引擎根据 B+Tree 索引在指定条件下自动构建的。
为什么 InnoDB 存储引擎选择使用 B+tree 索引结构?
- 相对于二叉树,层级更少,搜索效率高;
- 对于 B-tree,无论是叶子节点还是非叶子节点,都会保存数据,这样导致一页中存储的键值减少,指针跟着减少,要同样保存大量数据,只能增加树的高度,导致性能降低;
- 相对Hash索引,B+支持范围匹配及排序操作
索引分类
| 分类 | 含义 | 特点 | 关键字 |
|---|---|---|---|
| 主键索引 | 针对于表中主键创建的索引 | 默认自动创建,只能有一个 | PRIMARY |
| 唯一索引 | 避免同一个表中某数据列中的值重复 | 可以有多个 | UNIQUE |
| 常规索引 | 快速定位特定数据 | 可以有多个 | |
| 全文索引 | 全文索引查找的是文本中的关键词,而不是比较索引中的值 | 可以有多个 | FULLTEXT |
在 InnoDB 存储引擎中,根据索引的存储形式,又可以分为以下两种:
| 分类 | 含义 | 特点 |
|---|---|---|
| 聚集索引 (Clustered Index) | 将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据 | 必须有,而且只有一个 |
| 二级索引 (Secondary Index) | 将数据与索引分开存储,索引结构的叶子节点关联的是对应的主键(比如id) | 可以存在多个 |
聚集索引选取规则:
- 如果存在主键,主键索引就是聚集索引。
- 如果不存在主键,将使用第一个唯一(UNIQUE)索引作为聚集索引。
- 如果表没有主键,或没有合适的唯一索引,则 InnoDB 会自动生成一个 rowid 作为隐藏的聚集索引。
MySQL卸载文档-Windows版
1. 停止MySQL服务
win+R 打开运行,输入 services.msc 点击 "确定" 调出系统服务。


2. 卸载MySQL相关组件
打开控制面板 ---> 卸载程序 ---> 卸载MySQL相关所有组件


3. 删除MySQL安装目录

4. 删除MySQL数据目录
数据存放目录是在 C:\ProgramData\MySQL,直接将该文件夹删除。

5. 再次打开服务,查看是否有MySQL卸载残留
如果已将MySQL卸载,但是通过任务管理器--->服务,查看到MySQL服务仍然残留在系统服务里。
解决办法:
以管理员方式运行cmd命令行,输入以下命令:
sc delete 服务名称(如MySQL80)
这样可以实现删除服务。