数据库安全性和完整性

数据库安全性

数据库的不安全因素

非授权用户对数据库的恶意存取和破坏

数据库中重要或敏感数据被泄露

安全环境的脆弱性

授权

SQL中使用GRANT和REVOKE语句向用户授予或收回对数据的操作权限

root账号

grant select on sc to test
grant select on course to test2
with grant option
/*with grant option 转授权(只能转送一轮次)当用户在把对某个对象的权限
授予给其他用户的使用*/
grant select on student to public
/*一般可以将查询的权限授予给Public 这样所有的用户都可以查询相应的表
但是update和insert这样的命令需要单独授权*/

/*update更新通常时对表的属性进行授权*/
grant update(sno),select on  student to tang

grant insert,select on sc to tang
revoke insert on sc from tang

数据库完整性

实体完整性

在CREATE TABLE中用PRIMARY KEY定义。对单属性构成的码有两种说明方法,一种是定义为列级约束条件,另一种是定义为表级约束条件。对多个属性构成的码只有一种说明方法,即定义为表级约束条件

CRETAE TABLE student
(
	sno CHAR(9) PRIMARY KEY,
	sname CHAR(20) not null,
	ssex CHAR(2),
	sage SMALLINT,
)
CREATE TABLE SC
(
	sno CHAR(9) NOT NULL,
	cno CHAR(4) NOT NULL,
	grade SMALLINT,
	PRIMARY KEY(sno,cno),
)

实体完整性检查和违约处理

检查主码值是否唯一,如果不唯一则拒绝插入或修改

检查主码的各个属性是否为空,只要一个为空就拒绝插入或修改

PS:全表扫描十分耗时,所以关系数据库系统管理一般都在主码上自动建立一个索引(例如B+树),通过索引查找基本表中是否已经存在新的主码值将大大提高效率。

参照完整性

在CREATE TABLE中用FOREIGN KEY短语定义哪些列为外码,用REFERENCES短语指明这些外码参照哪些表的主码

CREATE TABLE SC
(
	sno CHAR(9) NOT NULL,
	cno CHAR(4) NOT NULL,
	grade SMALLINT,
	PRIMARY KEY(sno,cno),
	FOREIGN KEY(sno) REFERENCES student(sno),
	FOREIGN KEY(cno) REFERENCES course(cno),
)

参照完整性检查和违约处理:

用户定义完整性

用户定义的完整性就是针对某一具体应用的数据必须满足的语义要求。

属性上的约束条件

not null

unique

check

ssex CHAR(2) CHECK (ssex in ('男','女')),

如果操作不满足约束条件则拒绝执行

元组上的约束条件

CHECK短语定义元组上的额约束条件,同属性值限制相比,元组级的限制可以设置不同属性之间取值的i相互约束条件

CREATE TABLE Student
(  
    Sno    CHAR(9), 
    Sname  CHAR(8) NOT NULL,
    Ssex    CHAR(2),
    Sage   SMALLINT,
    Sdept  CHAR(20),
    PRIMARY KEY (Sno),
    CHECK (Ssex='女' OR Sname NOT LIKE 'Ms.%')
    /*定义了元组中Sname和 Ssex两个属性值之间的约束条件*/
);

如果操作不满足约束条件则拒绝执行

完整性约束命名子句

约束

CONSTRAINT <完整性约束条件名><完整性约束条件>

CREATE TABLE Student
(   
    Sno  NUMERIC(6)
    CONSTRAINT C1 CHECK (Sno BETWEEN 90000 AND 99999),
    Sname  CHAR(20)  
    CONSTRAINT C2 NOT NULL,
    Sage  NUMERIC(3)
    CONSTRAINT C3 CHECK (Sage < 30),
    Ssex  CHAR(2)
    CONSTRAINT C4 CHECK (Ssex IN ( ‘男’,'女')),
    CONSTRAINT StudentKey PRIMARY KEY(Sno)
);

在Student表上建立了5个约束条件,包括主码约束(命名为StudentKey)以及C1、C2、C3、C4四个列级约束。

修改或删除约束

ALTER TABLE Student 
DROP CONSTRAINT C4;

如果要修改的话可以先把旧的约束条件删除后再进行添加新的约束条件

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值