dream

一个菜鸟程序员的成长历程

0%

数据库系统原理第十二节

数据库系统原理第十二节

数据库安全和保护

数据库完整性

1
2
3
4
5
6
7
8
create table orders
order_id int not null auto_increment,
cust_id int not null default 0,
primary key(order_id),
foreign key(cust_id)
refrences table_name(id)
on delete restrict
on update restrict

用户定义完整性约束

非空 约束 not null
check 约束 check(sex = ‘f’)

命名完整性约束 constraint[指定的约束名字]
只能给基于表的完整性约束指定名字
基于列的不行

更新完整性约束
使用alter table更新与列或表有关的各种约束

  • 完整性约束不能直接修改(先删除,再增加)
  • alter table 独立删除完整性约束,而不会删除表,drop table删除表也会删除完整性约束

触发器

用户定义在关系表上的一类由事件驱动的数据对象,也是一种保证数据完整性的方法

创建触发器

1
2
create trigger 名称 时间 事件
onfor each row 主体

插入数据时改变变量值

1
2
create trigger t_name after insert
on table_name for each row set @str = 'one customer added';

使用触发器

insert 触发器

  • 可引用一个名为 new 的虚拟表,来访问被插入的行
  • before insert , new 中的值可以被更新
    delete 触发器
  • 可引用 old的虚拟表,来访问被删除的行
  • old 只读
    update 触发器
  • 可引用old的虚拟表来访问update执行前的值,也可以引用new访问更新后的值

安全性与访问控制

数据库安全:指保护数据库以防止不合法的使用而造成数据泄露,更改或破坏,所以安全性对于任何一个DBMS来说都是至关重要的

  • 身份验证
  • 数据库用户权限确认

查看用户

1
select user from mysql.user