数据库附加和分离
数据库服务正在运行的时候没法复制数据库(被占用了),可以分离(detach)数据库进行复制,然后再附加(attach)。同理,可以用脱机和联机
数据库结构是抽象的,不要考虑具体的程序实现只要以最简单的方式把所有需要的数据保存下来。
新建视图
选择添加一些表
会显示被添加的表和表之间的关联
查询语句中如果包含WHERE条件,会产生表和表之间的联系
完整性和安全性
关系数据库 三类完整性约束
完整性的定义:正确,有效,一致
实体完整性,参照完整性,用户自定义完整性
对每个Insert/Update/Delete操作,增加检查代码
如果一个属性是主属性(就是主键的一部分),就不能为空(也就是主键不能为空)
实体完整性:
主键
primary key (sno,cno)
参照完整性:
父表-子表
主键-外键
外键的值,要么必须属于对应的主键的值,要么为空
references 父表名(表项)
foreign key(表项) references 父表名(表项)
限制策略:默认策略,违反完整性的操作被拒
级联策略cascade:父表修改和删除,子表也被修改和删除
置空策略set null:受影响的子表的值置空
用户自定义完整性:
CHECK 如果违背了check,系统拒绝插入和修改操作。
触发器
触发器事件有三种
INSERT触发器,UPDATE触发器,DELETE触发
CREATE TRIGGER tri_ins_student
ON student
AFTER INSERT
AS
DECLARE @no char(7)
select @no = sno from inserted
INSERT INTO grade VALUES(@no,'1',0)
INSERT INTO grade VALUES(@no,'2',0)
INSERT INTO grade VALUES(@no,'3',0)
INSERT INTO grade VALUES(@no,'4',0)
在触发器工作的过程中会产生临时表,inserted表和deleted表
(在Oracle中叫做new表和old表)
安全性
没来得及讲