第四次数据库实验代码(赋权)(自用)

/*1) 用用户名为“sa”的用户登录,在“SQL Server Management Studio”中将 SQL Server
的身份验证模式设置为“Windows 身份验证模式”,断开与对象资源管理器的连接,再
连接对象资源管理器时分别用“Windows 身份验证”和“SQL Server 身份验证”两种
模式登录,再将数据库的身份验证模式设置为“SQL Server 和 Windows 身份验证模式”,
再分别用两种模式登录,分析两种不同的身份验证模式下登录结果。
7
2) 用用户名为“sa”的用户登录,在“SQL Server Management Studio”中创建名称为
“Liping”的登录名,再创建用户名为“Liping”的用户,用用户名为“Liping”的
用户登录,对学生表执行一个查询语句,分析查询失败的原因。
3) 用用户名为“sa”的用户登录,在“SQL Server Management Studio”中给用户名为
“Liping”的用户授予查询学生表的权限,再用用户名为“Liping”的用户登录,对
学生表执行一个查询语句,分析查询成功的原因。
4) 用用户名为“sa”的用户登录,在“SQL Server Management Studio”中创建名称为
“Lili”的登录名,再创建用户名为“Lili”的用户,分别用用户名为“Liping”和
“Lili”的用户登录,对课程表执行一个查询语句,分析查询失败的原因。
5) 用用户名为“sa”的用户登录,在“SQL Server Management Studio”中创建名称为
“MyRole”的角色,将用户名为“Liping”的用户和用户名为“Lili”的用户加入该
角色中,对该角色授予查询课程表的权限,分别用用户名为“Liping”和“Lili”的
用户登录,对课程表执行一个查询语句,分析查询成功的原因。
6) 用用户名为“sa”的用户登录,创建一个规则,约束值为“男”或“女”,将该规则绑
定到学生表的“性别”列。在学生表中输入一条非法学生记录(性别值不为“男”和
“女”),体验规则的作用。
7) 用用户名为“sa”的用户登录,创建一个默认值,值为“20”,将该默认值绑定到学生
表的“年龄”列。在学生表中输入一条学生记录(不输入年龄值),体验默认的作用。
8) 用用户名为“sa”的用户登录,对选课表定义一个“insert”触发器,要求插入到选
课表中的记录满足参照完整性约束。
9) 用用户名为“sa”的用户登录,对学生表定义一个“Delete”触发器,要求删除学生
记录的同时把学生的选课记录也删除。*/

--2.创建登录名:
exec SP_addlogin 'Liping','whatshenme2'
--创建用户名:
exec Sp_adduser 'Liping','Liping'
--查询学生表
use XSXK;
select * from student;

3. --赋予权限
use XSXK;
grant select on student to Liping;
select * from student;

4.--创建登录名:
exec SP_addlogin 'Lili','whatshenme2'
--创建用户名:
exec Sp_adduser 'Lili','Lili'
--liping:
use XSXK;
select * from Course;
--lili:
use XSXK;
select * from Course;

5.--创建角色
exec sp_addrole 'MyRole' 
--将Liping和Lili加入该角色
Exec sp_addrolemember 'MyRole','Liping'
Exec sp_addrolemember 'MyRole','Lili'
--对该角色授予查询课程表的权限
grant select on Course to MyRole 

--lili:
use XSXK;
select * from Course;

--liping:
use XSXK;
select cno from Course;

6.--创建规则:
create rule rule_ssex 
as @Value in('男','女')
go

exec sp_bindrule 'rule_ssex','student.ssex'

insert into student values('00100','张66',null,'20','数计','0000');

7.--创建一个默认值:
create default default_sage
as 20
go
exec sp_bindefault 'default_sage','student.sage'
--插入数据:
insert into student(sno)values('00101');
select * from student where sno='00101';

8.create trigger trigger_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 
	End

insert into SC values('002','3','80');
insert into SC values('002','6666','80');

9.create trigger trigger_shanChu on student for delete
as if
(select count(*) 
from deleted a,SC b 
where a.sno=b.sno) >0
begin
delete SC from SC inner join deleted
on SC.sno=deleted.sno 
End

delete from student where sno='001';

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值