第七章
- 约束
DBMS需要执行的数据元素之间的关系;一个存储在数据库中的表达式或语句;一个主动元素,它在某个事件发生或数据库改变时执行
- 触发器
是主动元素的一种形式,在某个特定事件发生时被调用
- 完整性约束
3.1、三种定义主键的方法
3.2、可能违反完整性约束的操作(插入和修改)
3.3、定义外键的方法
第一,在外键属性后面加定义RERERENCES <references table>(references attribute)
第二,在所有属性列表的后面加上定义 FOREING KEY <references attributes> REFERENCES<reference table>(<referencee attribute>)
被参照的属性应该是被参照表的主键或唯一属性
CREATE table department(
depid integer PRIMARY KEY,
Name char(40) NOT NULL,
Headerid char(10) REFERENCES saleman(empid)
);
可以定义一个表自己参照自己,外键的属性上可以取NULL
3.4、当我们对参照表进行插入(insert)和修改(update)操作的时候可能违反参照完整性;对被参照表进行删除(delete)和修改(update)操作可能违反参照完整性。
对于被参照关系,有三种选择:
- 默认策略(缺省原则):拒绝违法更新
- 级联策略(原则):delete一个被参照表中的元组,那么参照表中的参照这个元组取值的所有元组都被级联删除,update一个被参照表中的一个元组的属性值,那么参照表中参照这个元组取值的所有元组的属性值也被级联修改。
- 置空策略:首先,参照表中的参照属性可以被设置为NULL,delete一个被参照表中的元组,那么参照表中参照这个元组取值的所有元组的属性的属性值都被设置为NULL;update一个被参照表中的元组的属性值,那么参照表中参照这个元组取值的所有元组的属性值都被设置为NULL。
一个外键上可以对UPdate和DELETE分别设置不同的策略
Restrict 默认限制 cascade 级联 set NULL 置空
Eg:CREATE table department(
depid integer PRIMARY KEY,
Name char(40) NOT NULL,
Headerid char(10) REFERENCES saleman(empid)
ON DELETE CASCADE
ON UPDATECASCADE
);
- 限制某些属性的分量汇总可能出现的值(非空值约束、基于属性的check约束,基于元组的check约束)
4.1、定义NOT NULL约束(默认约束是NOT NULL但是主键的默认就是NOT NULL)
在属性后加上关键字NOT NULL
4.2、CHECK(限定一个属性的值必须在一个限定的范围内)
Eg:custid INT CHECK(custid>0)
Gender INT CHECK(gender IN (0,1))
4.3、给约束命名(在约束前面加上关键字CONSTRAIN+约束名字)
Eg:Gender INT CONSTRAINT name CHECK(gender IN (0,1))
4.4、修改表上的约束
Alter table...drop constraint
Alter table...add constraint
参照完整性
第八章
- 视图(为了简化计算,不同用户对关系中不同属性的有不同的访问要求)
视图是一种虚拟关系,一种并不实际物理存在的sql关系。视图的定义类似于在sql中查询的定义。
-
- 定义视图
GREATE vIew orderamount As select salesorder.orderno,signdate,empid,custid,Sum(quantity) as qty, Sum(unitprice * quantiy)as amount FROM dba.salesitem,dba.salesorder WHERE saleorder.oderno = salesitem.orderno GROUP BY saleorder.orderno,signdate,empid,custid;
-
- 对视图的查询语法和对基本表的查询语法一样
- 如何修改和删除一个视图的定义
ALTER VIEW[owner.]view-name[(colume-name,...)] AS select-without-order-by [with-check option]
DROP VIEW[owner.]view-name[(colume-name,...)]
-
- 什么样的视图是能更新的
单表查询;SELECT子句中的属性列表必须包括所有的非空属性;不能有GROUP BY子句;不能有聚集函数;不能有UNION操作;不能有DISTINCT;WHERE在子查询中不能再次使用关系R(不能使用相关子查询)
第十章
- 数据库的安全性
用户标志和坚定,试图权限控制,操作系统级安全性保护机制,加密储存
文件系统标识它管理的对象上的某些权限;文件系统也能标识某些能够授予权限的用户
- 授权和收权操作
2.1、把权限授予一个或一组用户
Grant inset,delete,update,select ON dba,customer to commonuser如果希望此权限继续传播,加上子句, 【WITH GRANY OPTION】
2.2、收回权限工作
REVOKE语句
REVOKE{CONNECT,
DBA,
INTEGRATED LOGIN,
GROUP,
MEMBERSHIP IN GROUP
Userid,...
RESOURCE,}..FROM userid,...
[CASCADE|RESTRICT] CASCADE级联收回 RESTRICT受限收回