专栏首页猿计划实验四--数据库的安全性、完整性控制

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

--一、创建新的数据库,并且没有任何的约束
--创建三个表 没有任何的约束
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;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 分治策略之归并排序(Python实现)

    比如数组 A ={3, 41, 52, 26, 38, 57, 9, 49},输出为{3,9,26,38,41,49.51,57}。

    TrueDei
  • 安卓最后一个大题复习

    TrueDei
  • 蓝桥杯-试题 算法训练 数据交换

    编写一个程序,输入两个整数,分别存放在变量x和y当中,然后使用自己定义的函数swap来交换这两个变量的值。   输入格式:输入只有一行,包括两个整数。   ...

    TrueDei
  • SQL Server 2008 R2 主数据服务

    主数据服务(Master Data Services,MDS)既是一个概念又是一个产品,主数据服务的概念是对核心业务数据有一个集中的数据入口看守人,数据项如客户...

    张善友
  • 【明星自动大变脸,嬉笑怒骂加变性】最新StarGAN对抗生成网络实现多领域图像变换(附代码)

    【导读】图像之间的风格迁移和翻译是近年来最受关注的人工智能研究方向之一,这个任务在具有趣味性的同时也是很有挑战的。相关的研究成果也层出不穷,有的甚至引起了全世界...

    WZEARW
  • 重回1912,在《Titanic VR》中探索泰坦尼克号的秘密

    VR内容若想要引人注目,那么就应该为人们实现一些现实生活中不太可能实现的事情。这些事情,要么特别昂贵,要么特别危险。如今,一款由Immersive VR Edu...

    VRPinea
  • 光说不做不叫爱,VR为你和她带来最佳Valentine体验!

    VRPinea
  • 业界 | 苹果发文:全局语义信息能否改进神经语言模型?

    在 iPhone 上输入文本、发掘用户可能感兴趣的新闻、查明用户遇到问题的答案,以及其他语言相关的任务都取决于稳健的自然语言处理(NLP)模型。词嵌入是一类 N...

    机器之心
  • 第016课 Nand Flash操作原理及裸机程序分析

    NAND FLASH原理图 NAND FLASH是一个存储芯片 那么: 这样的操作很合理”读地址A的数据,把数据B写到地址A”

    韦东山
  • 泛娱乐趋势下,未来VR会和体育擦出怎样的火花?

    VRPinea

扫码关注云+社区

领取腾讯云代金券