一、选择题
1、【关系代数】
SQL语句中select
对应投影运算,where
语句对应选择运算,from
后面的表对应连接运算,其中from a,b
表示笛卡尔集,from a join b on a.A=b.A
对应自然连接。
2、【空值查询】
- 某个字段没有值称为具有空值(NULL)。
3、【数值定义和数据操纵】
数据定义:
- 数字类型:整数类型(int)、数值类型(float、double)。
- 字符串类型:char、varchar 。
- 时间类型:time(存储时间值)、date(日期值)、year(年份值)。
【格式】<字段名> <数据类型> [{<列约束>}]
`sno` char(10) NOT NULL,
`sn` varchar(45) NOT NULL,
`sex` enum('男','女') NOT NULL,
`age` int NOT NULL,
`maj` varchar(45) NOT NULL,
`dept` varchar(45) NOT NULL,
数据操纵:
1、向数据表中添加数据
(1)添加一行新记录
INSERT|REPLACE INTO <表名>[(<字段名1>[,<字段名2>…])] VALUES(<值>);
【例】使用INSERT语句在学生表s中添加一条学生记录(学号为“s9”,姓名为“郑冬”,性别为“女”,年龄为“21”,专业为“计算机”,院系为“信息学院”)。
INSERT INTO s(sno, sn, age, sex,maj, dept)
VALUES('s9', '郑冬', 21, '女', '计算机','信息学院');
(2)添加一行记录的部分数据值
【例】在选课关系表sc中添加一条选课记录(‘s7’, ‘c1’)。
INSERT INTO sc(sno, cno)
VALUES('s7', 'c1');
(3)添加多行记录
INSERT|REPLACE INTO <表名> [(<字段名1>[,<字段名2>…])] VALUES(<值列表1>[,<值列表2>…])
【例】在选课关系表sc中添加3条选课记录(‘s8, ‘c1’)、(‘s8, ‘c2’)、(‘s8, ‘c5’)。
INSERT INTO sc(sno, cno)
VALUES('s8', 'c1'),
('s8', 'c2'),
('s8', 'c5');
2、修改数据表中数据
使用SQL语句修改数据表中数据
UPDATE <表名>
SET <字段名>=<表达式>[,<字段名>=<表达式>]…
[WHERE <条件>]
【例】(修改一行记录)把刘杨老师转到工学院。
UPDATE t
SET dept= '工学院'
WHERE tn= '刘杨';
【例】(修改多行记录)把所有学生的年龄增加1岁
UPDATE s
SET age=age+1;
- 删除数据表中数据
使用SQL语句删除数据表中数据
【例】(删除一行记录)删除成绩为90.5分的记录。DELETE
FROM <表名>
[WHERE <条件>]
【例】(删除多行记录)删除所有教师的授课记录。DELETE
FROM sc
WHERE score = 90.5;
DELETE
FROM tc;
4、【DBS和DBMS】
数据库(DataBase,DB
)、数据库系统(DataBase System,DBS
)、数据库管理系统(DataBase Management System,DBMS
)。5、【三级模式】
根据数据抽象的3个不同级别,DBMS也应该提供观察数据库的3个不同角度,以方便不同的用户使用数据库的需要。这就是数据库的三级模式结构 :
**模式**
- 也称为逻辑模式,对应于逻辑层数据抽象,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
- 模式的一个具体值称为模式的一个实例(instance)
- 它是DBMS模式结构的中间层,既不涉及数据的物理存储细节和硬件环境,也与具体的应用程序、所使用的应用开发工具及高级程序设计语言无关
**外模式**
- 也称子模式或用户模式,对应于视图层数据抽象
- 是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一具体应用有关的数据的逻辑表示
- 外模式是保证数据库安全性的一个有力措施,每个用户只能看见和访问所对应的外模式中的数据,数据库中的其余数据是不可见的
**内模式**
- 也称存储模式,对应于物理层数据抽象,它是数据的物理结构和存储方式的描述,是数据在数据库内部的表示方式
6、【事务】
MySQL中对事务的管理的操作包括启动
、结束
和回滚
,常用的语法格式:
7、【范式】
第一范式的定义:
如果关系模式R所有的属性均为原子属性,即每个属性都是不可再分的,则称R属于第一范式。
【解释说明】属性不可拆分或无重复的列,就是一个属性不允许再分成多个属性来建立列。
第二范式的定义:
如果关系模式符合第一范式,且每个非主属性都完全函数依赖于R的主码,则称R属性第二范式。
【解释说明】就是在第一范式的基础上符合完全函数依赖,先讲讲什么是部分函数依赖,部分函数依赖,就是多个属性决定另一个属性,但事实上,这多个属性是有冗余的。例如,(学号,班级)->姓名,事实上,只需要学号就能决定姓名,因此班级是冗余的,应该去掉。第二范式的目标就是消除函数依赖关系中左边存在的冗余属性,就是把班级去掉,使得(学号)-> 姓名。
第三范式的定义:
如果关系模式符合第二范式,且每个非主属性都非传递函数依赖于R的主码,则称R属性第三范式。
【解释说明】就是在第二范式的基础上消除传递依赖。不依赖于其他非主属性也就是,数据库中的属性依赖仅能依赖于主属性,不存在于其他非主属性的关联。例如,图书,图书室的关系。图书包括编号、出版商、页码等信息,图书室包括图书室编号、所存图书(外键)。其中,图书室的表中不应该存储任何图书的具体信息(例如,出版商),而只能通过主键图书编号来获得对应图书的信息。
8、【物理独立/逻辑独立】
数据库的两层映像功能与数据独立性
外模式/模式映像
- 对应于一个模式可以有多个外模式。对于每一个外模式,数据库管理系统都有一个模式/外模式映像,它定义了该外模式与模式之间的对应关系
- 在各自的外模式描述中定义外模式/模式映像
- 保证了数据与应用程序的逻辑独立性,简称为
数据的逻辑独立性
模式/内模式映像
- 数据库中只有一个模式,也只有一个内模式,模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系
- 在模式描述中定义模式/内模式映像
- 保证了数据与应用程序的物理独立性,简称为
数据的物理独立性
在数据库的三级模式结构中,模式即全局逻辑结构是数据库的核心和关键,它独立于数据库的其他层次。因此,设计数据库模式结构时,应首先确定数据库的逻辑模式
总结:
- 一方面由于数据与应用程序之间的独立性,使得数据的定义和描述可以从应用程序中分离出来
- 另一方面由于数据的存取由DBMS管理,用户不必考虑存取路径等细节
从而大大简化了应用程序的编制,也大大提高了应用程序的维护和修改的效率
9、【子查询】
1、普通子查询
普通子查询的执行顺序是:首先执行子查询,然后把子查询的结果作为父查询的查询条件的值。
- 普通子查询只执行一次,而父查询所涉及的所有记录行都与其查询结果进行比较以确定查询结果集合。
(一)返回一个值的普通子查询
(二)返回一组值的普通子查询(比较运算符的子查询)
元素与集合元素之间还存在更为复杂的关系,如比较关系,常用到谓词ANY(或SOME)和ALL。
- ANY表示子查询结果中的某个值
- ALL表示子查询结果中的所有值
注意:
- 如果子查询中的结果关系仅包含一个元组,则可将ALL和ANY去掉,直接使用比较运算符;
- ANY也可以用SOME替代 。
(三)使用IN的子查询
2. 相关子查询
- 普通子查询,子查询中的查询条件不涉及父查询中的基本表的属性;
- 有些查询任务中,子查询**的查询条件需要引用父查询表中的属性值,这类查询称为相关子查询**;
- 相关子查询的执行顺序是:
- 首先,选取父查询表中的第一行记录,子查询利用此行中相关的属性值在子查询设计的基本表中进行查询;
- 然后,父查询根据子查询返回的结果判断父查询表中的此行是否满足查询条件。如果满足条件,则把该行放入父查询的查询结果集合中;
- 重复执行这一过程,直到处理完父查询表中的每一行数据。
- 由此可以看出,相关子查询的执行次数是由父查询表的行数决定的。
- EXISTS是表示存在的量词,带有EXISTS的子查询不返回任何实际数据,它只得到逻辑值“真”或“假”;
- 当子查询的查询结果集合为非空时,外层的WHERE子句返回真值,否则返回假值。NOT EXISTS与此相反。
10、【关系代数】
**并运算**
能够使用并运算的两个前提:
- 两张表格的元一样; (解释:两张表格列数一样)
- 相同的属性取自同一个域。(解释:属性都一样)
如图,在合并了之后呢,两个原始的表格和合并之后的新表格元数一样(列数一样)
- 如果两个表之间有重复的元组,并运算会做去重处理,类似于集合的之间的并集
**差运算**
能够使用差运算的两个前提:
- 两个表格列数一样;
- 两个表格的属性都相同。
两个表进行了差运算之后,都仍然是n列。
S-R表:S表中有任意一个元组和R表的一样,S表就去掉这个元组
R-S表:R表中有任意一个元组和S表的一样,R表就去掉这个元组
简言之:就是一张表,嫌弃另外一张表,我身上有那里和你一样,我改还不行嘛!
**交运算**
交运算能够使用的两个前提:
- 表格的列数相同
- 表格的属性都相同
简言之:两个表格进行并运算,就是把两个表格中一样的元素找出来,找出两张表格的共性
** 笛卡尔积(万能运算)**
没有任何使用限制,万物皆可笛卡尔积。
R表:n元关系,k1个元组(k1行,n列)
S表:m元关系,k2个元组(k2行,m列)
R表和S表进行笛卡尔积
得到一个(k1 k2)元,(n + m)列的新表,如下:
→ 两个表进行了*笛卡尔积运算之后
11、【两种锁机制】
封锁类型:封锁分为排它锁和共享锁两种。排它锁,简称X锁,又称独占锁或写锁;共享锁,简称S锁,又称读锁。
12、【事务ACID】
事务的性质
为了保证事务并发执行或发生故障时数据库的一致性(完整性),事务应具有以下ACID特性:
原子性(atomicity)
。事务的所有操作要么全部都被执行,要么都不被执行。一致性(consistency)
。一个单独执行的事务应保证其执行结果的一致性,即总是将数据库从一个一致性状态转化到另一个一致性状态。隔离性(isolation)
。当多个事务并发执行时,一个事务的执行不能影响另一个事务,即并发执行的各个事务不能互相干扰。持久性(durability)
。一个事务成功提交后,它对数据库的改变必须是永久的,即使随后系统出现故障也不会受到影响。13、【完整性规则】
为了维护数据库中的数据与现实的一致性,关系数据库的数据与更新操作必须遵守下列三类完整性规则:实体完整性规则
,参照完整性规则
,用户定义的完整性
。
1.完整实体性规则这个规则要求关系中元组在组成主键的属性上不能有空值,如果出现空值,那么主键值就起不了唯一表示元组的作用。
2.参照完整性规则
如果属性集K是关系模式R1的主键,K也是关系模式的R2的外键,那么在R2的关系中,K的取值只允许两种可能,或者为空值,或者等于R1的关系中某个主键值。 这条规则的实质是“不允许引用不存在的实体”,这条规则在具体的使用时,有三点变通: 1)外键和相应的主键可以不同名,只要定义在相同值域上即可; 2)R1和R2也可以是同一个关系模式,此时表示了同一个关系中的不同元组之之间的联系; 3)外键值是否允许空,应视具体问题而定;
3.用户定义的完整性规则
在建立关系模式时,对属性定义了数据类型,即使这样可能满足不了用户的需求,此时,用于可以针对具体的数据约束,设置完整性规则,由系统来检验实施,以使用统一的方式处理他们,不再由应用程序承担这项工作。 例如:学生的定义为两位数,范围还太大,我们可以写如下规则把年龄限制在15~30岁之间: CHECK (AGE,BETWEEN,15,AND,30)
14、【触发器两个特殊表】
在触发程序执行的过程中,MySQL可以分别使用NEW和OLD关键字来创建与原表属性完全一样的两个临时表NEW和OLD表。其中,NEW表
用于存放数据修改过程中将要更新的数据,OLD表
则用于存放数据修改过程中的原有数据。
15、【三个模型】
数据库系统的三种数据模型:数据模型按不同的应用层次分成三种类型:分别是概念数据模型、逻辑数据模型、物理数据模型。
二、填空题
1、【数据库发展阶段】
数据库技术的发展:人工管理阶段、文件系统阶段、数据库系统阶段。
2、【数据模型三要素】
数据模型所描述的内容包括三个部分:数据结构、数据操作、数据约束。
3、【并发所带来的数据不一致】
并发操作带来数据不一致性包括:丢失更新、读取脏数据、不可重复读、幻象读。
4、【SQL语言包括哪几种】
SQL语言 共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。
5、【范式判断】
第一范式的定义:
如果关系模式R所有的属性均为原子属性,即每个属性都是不可再分的,则称R属于第一范式。
【解释说明】属性不可拆分或无重复的列,就是一个属性不允许再分成多个属性来建立列。
第二范式的定义:
如果关系模式符合第一范式,且每个非主属性都完全函数依赖于R的主码,则称R属性第二范式。
【解释说明】就是在第一范式的基础上符合完全函数依赖,先讲讲什么是部分函数依赖,部分函数依赖,就是多个属性决定另一个属性,但事实上,这多个属性是有冗余的。例如,(学号,班级)->姓名,事实上,只需要学号就能决定姓名,因此班级是冗余的,应该去掉。第二范式的目标就是消除函数依赖关系中左边存在的冗余属性,就是把班级去掉,使得(学号)-> 姓名。
第三范式的定义:
如果关系模式符合第二范式,且每个非主属性都非传递函数依赖于R的主码,则称R属性第三范式。
【解释说明】就是在第二范式的基础上消除传递依赖。不依赖于其他非主属性也就是,数据库中的属性依赖仅能依赖于主属性,不存在于其他非主属性的关联。例如,图书,图书室的关系。图书包括编号、出版商、页码等信息,图书室包括图书室编号、所存图书(外键)。其中,图书室的表中不应该存储任何图书的具体信息(例如,出版商),而只能通过主键图书编号来获得对应图书的信息。
6、【关系模式完整性的表示】
为了维护数据库中的数据与现实的一致性,关系数据库的数据与更新操作必须遵守下列三类完整性规则:实体完整性规则,参照完整性规则,用户定义的完整性规则。
7、【合并分E-R图产生的冲突】
各个局部应用所面向的问题不同,各个子系统的E-R图之间必定会存在许多不一致的地方,称之为冲突。子系统E-R图之间的冲突主要有三类:①属性冲突;②命名冲突;③结构冲突。
三、简答题
1、【数据库设计的五个步骤】
数据库的设计过程大致分为哪五个步骤:1.需求分析、2.概念设计、3.逻辑设计、4.物理设计、5.验证设计。
2、【数据库故障分类】
(1)事务内部的故障:事务内部的故障有的是可以通过事务程序本身发现的,有的是非预期的,不能由事务程序处理。如运算溢出,并发事务发生死锁而被选中撤销该事务,违反了某些完整性限制而被终止等。
(2)系统故障:也称为软故障,是指数据库在运行过程中,由于硬件故障、数据库软件及操作系统的漏洞、突然停电灯情况,导致系统停止运转,所有正在运行的事务以非正常方式终止,需要系统重新启动的一类故障。这类事务不破坏数据库,但是影响正在运行的所有事务。
(3)介质故障:介质故障也称为硬故障,主要指数据库在运行过程中,由于磁头碰撞、磁盘损坏、强磁干扰、天灾人祸等情况,使得数据库中的数据部分或全部丢失的一类故障。
(4)计算机病毒故障:计算机病毒故障是一种恶意的计算机程序,它可以像病毒一样繁殖和传播,在对计算机系统造成破坏的同时也可能对数据库系统造成破坏(破坏方式以数据库文件为主)。
3、【三级模式和两级映像】
数据库的三级模式
根据数据抽象的3个不同级别,DBMS也应该提供观察数据库的3个不同角度,以方便不同的用户使用数据库的需要。这就是数据库的三级模式结构 。
- 模式
- 也称为逻辑模式,对应于逻辑层数据抽象,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
- 外模式
- 也称子模式或用户模式,对应于视图层数据抽象
- 内模式
- 也称存储模式,对应于物理层数据抽象,它是数据的物理结构和存储方式的描述,是数据在数据库内部的表示方式
数据库的两层映像功能与数据独立性
外模式/模式映像
- 对应于一个模式可以有多个外模式。对于每一个外模式,数据库管理系统都有一个模式/外模式映像,它定义了该外模式与模式之间的对应关系、保证了数据与应用程序的逻辑独立性,简称为数据的逻辑独立性 。
模式/内模式映像
- 数据库中只有一个模式,也只有一个内模式,模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系、保证了数据与应用程序的物理独立性,简称为数据的物理独立性 。
4、【不合理的关系模式所带来的问题】
不合理的数据库模式设计,一方面会造成大量的数据冗余存在;而且对模式进行操作会引起操作异常。主要包括:插入异常、删除异常和更新异常三类。引起以上问题的原因在于:关系模式的属性间存在各种依赖关系,因此,需要通过数据规范化,消除模式中不合理的依赖,从而使模式中的各种关系模式达到某种程度的“分离”。5、【读锁和写锁如何解决数据不一致】
一、共享锁(S锁)又称读锁:
若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A。其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S 锁。这保证了其他事务可以读A,但在事务T释放A上的S锁之前不能对A做任何修改。
二、排他锁(X锁)又称写锁:
若事务T对数据对象A加上X锁,事务T可以读A也可以修改A。其他事务不能再对A加任何锁,直到T释放A上的锁,确保不会同时同一资源进行多重更新。这保证了其他事务在T释放A上的锁之前不能再读取和修改A。6、【mysql角色的使用步骤】
1、创建角色;
2、为角色授权;
3、为用户分配角色;
4、角色激活。7、【三级锁协议和三级锁协议所解决数据不一致问题】
三段锁协议:
共享锁(S锁):共享 (S) 用于不更改或不更新数据的操作(只读操作),如 SELECT 语句。如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。获准共享锁的事务只能读数据,不能修改数据。
排他锁(X锁):用于数据修改操作,例如 INSERT、UPDATE 或 DELETE。确保不会同时同一资源进行多重更新。如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的封锁。获准排他锁的事务既能读数据,又能修改数据。
用三段锁协议来解决数据不一致的三种情况:
1.一级封锁协议解决丢失修改:
当事务在更新数据的时候给数据加上排他锁;
原理:加上排他锁之后,其他事务不能对该数据加上任意锁,在当前事务没有释放锁时其他事务不能进行对该数据的读写操作,只有当前事务释放排他锁之后,才能对该数据进行操作
2.二级封锁协议解决读脏数据:
在一级封锁协议的基础上,当事务在读取数据的时候加共享锁,读取完成后释放锁;
原理:加入共享锁之后,不能对该数据加排他锁,即其他事务不能进行修改数据。所以此时读取的数据一定是与数据库一致的。
3.三级封锁线协议解决不可重复读:
在一级封锁协议的基础上,当事务在读取数据的时候加共享锁,事务结束后释放;
原理:加入共享锁之后,不能对该数据加排他锁,即其他事务不能进行修改数据。如果读取完成后就释放,那么其他事务此时可以修改该数据。当延迟到事务结束后释放,其他事务就无法修改该数据了。8、【判断数据不一致的情况】
对模式进行操作会引起操作异常。主要包括:插入异常、删除异常和更新异常三类。引起以上问题的原因在于:关系模式的属性间存在各种依赖关系,因此,需要通过数据规范化,消除模式中不合理的依赖,从而使模式中的各种关系模式达到某种程度的“分离”。9、【并运算和差运算实现插入和删除的步骤】
1、插入-集合的并运算
设有兼容关系R、S(即R、S具有相同的关系模式),则二者的并运算定义为:
式中“∪”为并运算符,t为元组变量,结果R∪S为一个新的与R、S兼容的关系,该关系是由属于R或属于S的元组构成的集合。
2.删除-集合的差运算
设有兼容关系R、S,则二者的差运算定义为:
式中“-”为差运算符,t为元组变量,结果R-S为一个新的与R、S兼容的关系,该关系是由属于R而且不属于S的元组构成的集合,即在R中减去与S中相同的那些元组。10、【属性之间联系的类别和函数依赖的关系】
一个关系模式内部各属性间存在的联系分为三种情况:一对一、一对多、多对多;属性间的联系是最基本的函数依赖。四、应用题
1、【关系代数】
关系代数相关知识链接【含相关例题】2、【查询】
单关系数据查询相关知识链接【含相关例题】
多关系数据查询相关知识链接【含相关例题】3、【E-R图】
相关例题:
4、【候选码、三范式分解、Armstrong公理系统】
相关例题: