实验四--数据库的安全性、完整性控制

简介: 实验四--数据库的安全性、完整性控制
--一、创建新的数据库,并且没有任何的约束
--创建三个表 没有任何的约束
create table Student(Sno varchar(20) , Sname varchar(10), Ssex varchar(2), Sage int, Sdept varchar(5) ) --设置Sno为主键
create table Course(Cno int , Cname varchar(20), Cpno int, Ccredit int ); 
create table SC(Sno varchar(20), Cno int, Grade int);
--插入相应的数据
insert into Student(Sno,Sname,Ssex,Sage,Sdept) values('201215121','李勇','男',20,'CS');
insert into Student(Sno,Sname,Ssex,Sage,Sdept) values('201215122','刘晨','女',19,'CS');
insert into Student(Sno,Sname,Ssex,Sage,Sdept) values('201215123','王敏','女',18,'MA');
insert into Student(Sno,Sname,Ssex,Sage,Sdept) values('201215125','张立','男',19,'IS');
insert into Course(Cno,Cname,Cpno,Ccredit) values(1,'数据库','5','4');
insert into Course(Cno,Cname,Cpno,Ccredit) values(2,'数学','','2');
insert into Course(Cno,Cname,Cpno,Ccredit) values(3,'信息系统','1','4');
insert into Course(Cno,Cname,Cpno,Ccredit) values(4,'操作系统','6','3');
insert into Course(Cno,Cname,Cpno,Ccredit) values(5,'数据结构','7','4');
insert into Course(Cno,Cname,Cpno,Ccredit) values(6,'数据处理','','2');
insert into Course(Cno,Cname,Cpno,Ccredit) values(7,'PASCAL语言','6','4');
insert into SC(Sno,Cno,Grade) values('201215121','1','92');
insert into SC(Sno,Cno,Grade) values('201215121','2','85');
insert into SC(Sno,Cno,Grade) values('201215121','3','88');
insert into SC(Sno,Cno,Grade) values('201215122','2','90');
insert into SC(Sno,Cno,Grade) values('201215122','3','80');
--二、设置相应的约束
--1. 参照学生数据库中各表给出的主键、外键设置的设置要求,在自己创建的表中进行相应的设置。
--修改学生表不能为空的字段
alter table Student alter column SNo varchar(20) not null
--修改课程表不能为空的字段
alter table Course alter column Cno int not null 
alter table Course alter column Cpno int  null
--修改成绩表不能为空的字段
alter table SC alter column SNo varchar(20) not null
alter table Sc alter column Sno varchar(10) not null
alter table Sc alter column grade varchar(5) not null
--修改学生表中的Sno学号为主键
alter table Student add constraint Sno primary key(Sno)
--修改课程表的主键和外键
alter table Course add constraint Cno primary key(Cno)
use school
alter table Course add constraint Cpno foreign key(Cpno) references Course(Cno)
exec sp_help Student
--2. 参照以上各表给出的各种约束条件设置要求,在自己创建的表中进行相应的设置。
--3. 输入各种数据以验证约束条件的作用。
--4. 创建三个该数据库的用户。
--首先在数据的服务器级别创建登录账户,密码
create login zhenghui1 with password='123456';
create login zhenghui2 with password='123456';
create login zhenghui3 with password='123456';
--创建数据库用户  在创建数据库用户的时候的前提下是:必须创建好服务器登录账户
create user zhenghui1;
create user zhenghui2;
create user zhenghui3;
--5. 用SQL命令和可视化环境两种方式分别实现为所有用户授予对某个表的查询权限。
--授权所有用户对Student表可查询   
--授权对象可以为用户名和public,public的话,就是把权限授权给所有用户
grant select on  Student to public
--6. 用SQL命令和可视化环境两种方式分别实现为一个用户授予对某表中某字段的查询权限,不允许其将该权限继续传递下去。验证该权限的作用。
grant select(Sno) on Student to zhenghui1
grant select(Sno) on Student to zhenghui3
--sp_addrolemember zhenghui1,zhenghui2
--7. 用SQL命令和可视化环境两种方式分别实现为另一个用户授予对某表中某字段的修改权限,并允许其将该权限继续传递下去。验证该权限的作用。
--授权对学生表的姓名字段可以有修改的权限,并允许将此权限传递下去
grant update(Sname) on  Student to zhenghui2  with grant option;
--sp_addrolemember zhenghui2,zhenghui3;
grant delete(Sname,Sno) on Student to zhenghui3
--8. 收回为所有用户授予的对某表的查询权限。
revoke select  on Student  from public;
--9. 收回为用户授予对某表中某字段的查询权限。
revoke select(Sno) on Student from zhenghui1 ;
--10. 收回为用户授予对某表中某字段的修改权限。
--cascade 是必须的,不然会报错,因为上面已经把zhenghui2用户的权限授权给了zhenghui3,加了cascade命令之后,会把权限全部挨个的收回
revoke update(Sname) on Student from zhenghui2 cascade;
目录
相关文章
|
4月前
|
关系型数据库 MySQL 数据库
深入MySQL数据库进阶实战:性能优化、高可用性与安全性
深入MySQL数据库进阶实战:性能优化、高可用性与安全性
138 0
|
2月前
|
SQL 关系型数据库 MySQL
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
105 1
|
2月前
|
存储 安全 算法
【软件设计师备考 专题 】数据库的控制功能(并发控制、恢复、安全性、完整性)
【软件设计师备考 专题 】数据库的控制功能(并发控制、恢复、安全性、完整性)
58 0
|
2月前
|
存储 监控 安全
|
3月前
|
关系型数据库 分布式数据库 数据库
云原生数据库PolarDB快速入门实验
【2月更文挑战第2天】很基础的PolarDB入门操作实验考试,假期闲着无聊考着玩玩。云原生数据库 PolarDB MySQL 版是阿里云自研产品,100%兼容 MySQL。PolarDB产品具有多主多写、多活容灾、HTAP 等特性,交易性能最高可达开源数据库的6倍,分析性能最高可达开源数据库的400倍,TCO 低于自建数据库50%。
|
4月前
|
SQL 关系型数据库 MySQL
MySQL数据库进阶实战:优化性能、提高安全性和实现高可用性
MySQL数据库进阶实战:优化性能、提高安全性和实现高可用性
109 0
|
4月前
|
存储 关系型数据库 数据库
云数据库如何确保数据的安全性和可靠性?
云数据库如何确保数据的安全性和可靠性?
51 0
|
4月前
|
关系型数据库 网络安全 分布式数据库
如何为PolarDB数据库设置SSL加密以提高链路安全性
如何为PolarDB数据库设置SSL加密以提高链路安全性 为了保障网络安全,提高链路安全性,您可以为PolarDB数据库启用SSL(Secure Sockets Layer)加密,并安装SSL CA证书到相关的应用服务。SSL在传输层对网络连接进行加密,能提升通信数据的安全性和完整性,但可能会增加网络连接响应时间。
59 2
|
5月前
|
存储 SQL 弹性计算
|
5月前
|
SQL 关系型数据库 分布式数据库
西电数据库实验二:XDSQL与PolarDB对比实验
实验二 XDSQL与PolarDB对比实验 姓名:贾瑞  学号:21009201172