数据库系统原理第十二节
数据库安全和保护
数据库完整性
1 | create table orders |
用户定义完整性约束
非空 约束 not null
check 约束 check(sex = ‘f’)
命名完整性约束 constraint[指定的约束名字]
只能给基于表的完整性约束指定名字
基于列的不行
更新完整性约束
使用alter table
更新与列或表有关的各种约束
- 完整性约束不能直接修改(先删除,再增加)
- alter table 独立删除完整性约束,而不会删除表,drop table删除表也会删除完整性约束
触发器
用户定义在关系表上的一类由事件驱动的数据对象,也是一种保证数据完整性的方法
创建触发器
1 | create trigger 名称 时间 事件 |
插入数据时改变变量值
1 | create trigger t_name after insert |
使用触发器
insert 触发器
- 可引用一个名为
new
的虚拟表,来访问被插入的行 - before insert , new 中的值
可以被更新
delete 触发器 - 可引用
old
的虚拟表,来访问被删除的行 - old 只读
update 触发器 - 可引用
old
的虚拟表来访问update执行前的值,也可以引用new
访问更新后的值
安全性与访问控制
数据库安全:指保护数据库以防止不合法的使用而造成数据泄露,更改或破坏,所以安全性对于任何一个DBMS来说都是至关重要的
- 身份验证
- 数据库用户权限确认
查看用户
1 | select user from mysql.user |