【自考必背】数据库系统原理第六章

1、对数据库施加数据完整性约束的作用

防止数据库中存在不符合语义的数据,维护数据库完整性

随时检测更新状态数据库内容是否符合完整性约束,保障数据一致性与正确性

防止对数据库的恶意破坏,体改完整性检测的效率,减轻数据库编程人员负担

2、完整性约束条件的作用对象可以是列、元祖、表

列:字段的类型、空值、取值范围、精度等约束

元祖:字段之间的约束,开始日期小于结束期

表:主键和外键之间的约束

3、定义与实现完整性约束

(1)实体完整性约束:指关系的主属性,即主码的组成不能为空,也就是关系的主属性不能是NULL

(2)参照完整性约束:定义外码和主码之间的引用规则,它是对关系间引用数据的一种限制

(3)用户定义的完整性约束:针对某一应用环境的完整性约束条件,它反应了某一具体应用所涉及的数据应满足的条件

check约束:在创建表或更新表同时,根据用户的实际完整性要求定义的。

4、使用SQL实现命名完整性约束

5、使用SQL实现更新完整性约束

CREATE TABLE table_name(

id INT NOT NULL AUTO_INCREMENT,

name VARCHAR(50) NOT NULL DEFAULT "",

PRIMARY KEY(id),

FOREIGN KEY(shcool_id)

REFERENCE school(id)

ON DELETE RESTRICT

ON UPDATE RESTRICT

);

CASCADE:父表delete、update的时候,子表会delete、update掉关联记录;

SET NULL:父表delete、update的时候,子表会将关联记录的外键字段所在列设为null,所以注意在设计子表时外键不能设为not null;

RESTRICT:如果想要删除父表的记录时,而在子表中有关联该父表的记录,则不允许删除父表中的记录;

NO ACTION:同 RESTRICT,也是首先先检查外键;

6、触发器

CREATE TRIGGER trigger_name AFTER UPDATE ON table_name FOR EACH ROW SET NEW.name = OLD.name;

DROP TRIGGER IF EXISTS trigger_name;

7、SQL语言安全控制中的访问控制的作用,两种方式用户账号和权限管理

存储在名为mysql的数据库user表中,包含所有用户帐号。

需要为用户分配访问适当的权限。

8、用户账号管理

CREATE USER 'admin'@'127.0.0.1' IDENTIFIELD BY '123456',

'hongda'@'127.0.0.1' IDENTIFIELD BY PASSWORD 'afrwefwe';

DROP USER [email protected];

RENAME USER 'hongda'@'127.0.0.1' TO 'hong'@'127.0.0.1';

SET PASSWORD FOR 'hongda'@'127.0.0.1' = 'asfohwoiefhowihefoiw';

9、用户权限管理

GRANT SELECT(id,name) ON table_name TO 'hongda'@'127.0.0.1';

GRANT SELECT,UPDATE ON table_name TO 'hongda'@'127.0.0.1',

'admin'@'127.0.0.1'

WITH GRANT OPTION;

10、事务与并发控制的概念

并发控制:对并发操作提供一定的控制,防止他们互相干扰,从而保证数据库的正确性不被破坏,避免数据库不一致性;

事务:用户定义的一个数据操作序列,这些操作可以作为一个完整的工作单元,要么全部执行,要么全部不执行,是一个不可分割的工作单位;

11、事务的特征ACID

原子性、一致性、隔离性、持续性

12、并发操作的问题

丢失更新

不可重复读

读脏数据

13、封锁

封锁作为一种常用的并发控制技术,用于解决并发操作所带来的数据不一致性问题

基本思想:事务通过向系统请求对它所希望的数据对象加锁,以确保它不被非预期修改

(1)锁:允许或阻止一个事务对一个数据对象的存取特权。排它锁(X锁)、共享锁(S锁)

(2)用封锁进行并发控制:

事务对数据加了X锁,只有当事务结束后,才可对数据做存取

事务对数据加了S锁,其他事务可以继续施加S锁。X锁必读等待S锁全部释放才可请求

事务执行数据库操作时先请求相应的锁,由DBMS隐式执行

事务一直战友获得的锁,当ROLLBACK或COMMIT时释放

(3)封锁的粒度

粒度描述封锁的数据单元的大小。粒度越细,并发越高,软件复杂性和系统够开销也大。对数据库加锁,粒度最大,数据存取只能顺序执行,性能大大下降。

(4)封锁的级别

又称为一致性级别或隔离度。与封锁期限有关,有的只是数据单元的存取期,有的是整个事务的存取期。

0级封锁:封锁的事务不重复写其他非0级封锁事务的为提交的更新数据

1级封锁:被封锁的事务不允许重写未提交的更新数据

2级封锁:被封锁的事务既不重写也不读未提交的更新数据

3级封锁:被封锁的事务不读未提交的更新数据,不写任何未提交数据

(5)活锁与死锁

活锁:并发事务处理过程中,由于锁会使一事务处于等待状态而调度其他事务,因而该事务可能因为优先级低永远等待下去。

死锁:两个以上事务循环等待被同组中另一事物锁住的数据单元的情形

死锁解决方法:一次性锁请求、锁请求排序、序列化处理、资源剥夺

(6)可串行性

一组事务的一个调度就是他们基本操作的一个排序。一个调度中,任意两个事务T1和T2,要么T1所有操作都在T2之前,要么之后,则该调度是可串行的。

(7)两段封锁法

任意一个事务中,所有加锁操作都必须在所有释放锁操作之前。

14、备份与恢复

概念:备份是指通过导出数据或复制表文件的方式制作数据库的副本;恢复是指当前数据库遭到破坏时,将备份加载到系统中,使数据库从错误状态恢复到正确状态。

作用:

保证数据库的可靠性和完整性

可以用于数据恢复

通过导出数据或者复制表文件的方式制作数据库的副本

SELECT * FROM table_name INTO OUTFILE 'C://table_name.txt';

LOAD DATA INFILE 'C://table_name.txt' INTO TABLE table_name;

更多自考笔记:点击跳转

你可能感兴趣的:(数据库系统原理,自考)