SQL Server 安全管理实验习题详解

–用用户名为“sa”的用户登录,在“SQL Server Management Studio”中创建名称为
–“Liping”的登录名,再创建用户名为“Liping”的用户,用用户名为“Liping”的
–用户登录,对学生表执行一个查询语句,分析查询失败的原因

SP_addlogin 'Liping','123','数据库的定义'
--use 数据库的定义
SP_adduser 'Liping'
select * from student

/3) 用用户名为“sa”的用户登录,在“SQL Server Management Studio”中给用户名为
“Liping”的用户授予查询学生表的权限,再用用户名为“Liping”的用户登录,对
学生表执行一个查询语句,分析查询成功的原因
/

grant select on student to Liping with grant option

/4) 用用户名为“sa”的用户登录,在“SQL Server Management Studio”中创建名称为
“Lili”的登录名,再创建用户名为“Lili”的用户,分别用用户名为“Liping”和
“Lili”的用户登录,对课程表执行一个查询语句,分析查询失败的原因。
/

SP_addlogin 'Lili','123','数据库的定义'
SP_adduser 'Lili'

/5) 用用户名为“sa”的用户登录,在“SQL Server Management Studio”中创建名称为
“MyRole”的角色,将用户名为“Liping”的用户和用户名为“Lili”的用户加入该
角色中,对该角色授予查询课程表的权限,分别用用户名为“Liping”和“Lili”的
用户登录,对课程表执行一个查询语句,分析查询成功的原因。
/
use 数据库的定义

sp_addrole  'MyRole'

sp_addrolemember 'MyRole','Liping'

sp_addrolemember 'MyRole','Lili'

grant select on course to MyRole with grant option

/*
6) 用用户名为“sa”的用户登录,在“SQL Server Management Studio”中创建一个规
则,约束值为“男”或“女”,将该规则绑定到学生表的“性别”列。在学生表中输入
一条非法学生记录(性别值不为“男”和“女”),体验规则的作用
*/

insert into student values('1111','张三','保',21,'数计学院','12345678901')
select * from student
delete from student where sno = '1111'

create rule stu_sex
as
@ssex = '男' or @ssex = '女'

sp_bindrule 'stu_sex','student.ssex'

insert into student values('1111','张三','保',21,'数计学院','12345678901')

/*
7) 用用户名为“sa”的用户登录,在“SQL Server Management Studio”中创建一个默
认值,值为“男”,将该默认值绑定到学生表的“性别”列。在学生表中输入一条学生
记录(不输入性别值),体验默认的作用
*/

create default s_ssex
as
	'男'
sp_bindefault 's_ssex','student.ssex'

insert into student(sno,sname,sage,sdept,stel) values('1111','张三',21,'数计学院','12345678901')
select * from student


/8) 用用户名为“sa”的用户登录,在“SQL Server Management Studio”中对选课表定
义一个“insert”触发器,要求插入到选课表中的记录满足参照完整性约束。
/

create trigger sc_insert on sc for insert
	as if (select count(*) 
			from student a,inserted b,course c 
			where a.sno = b.sno and c.cno=b.cno) = 0
begin
ROLLBACK TRANSACTION
	raiserror('不能插入!',16,10)
	end
insert into sc values('1003','100005',80)
select *  from sc

/9) 用用户名为“sa”的用户登录,在“SQL Server Management Studio”中对学生表定
义一个“Delete”触发器,要求删除学生记录的同时把学生的选课记录也删除
/

create trigger student_delete on sc for delete
as
declare @sno varchar(11)
select @sno=sno from deleted
delete from student where sno=@sno

select * from student
select * from  sc 
delete from sc where sno='1002'

你可能感兴趣的:(sql,server数据库操作)