2.把对表sc的插入权授予给用户yy,并允许将此权限再授予其他用户 grant insert on sc to yy with option
3. 把在test数据库建表权限授予给用户yy。 grant create table to yy
4. 把查询表s和修改学生编号sno的权限授予给户yy。 grantselect,update(sno) on s to yy
5. 收回用户yy在test数据库中的建表权。 revoke create table from yy 6. yy用户拒绝对C表的查看权限 deny select on c to yy
实验八索引的创建与使用,默认与规则的创建
1. 使用sql语句在表course的cname字段上创建一个唯一性的聚集索引,索引排列顺序为降序。
create unique clustered index index1 on course(cnamedesc)
2. 使用sql语句在表course的credit字段上创建一个非唯一性的非聚集索引。 create nonclustered index index2 on course(credit)
3. 在sm数据库中创建一个学生性别的默认值,并将默认值捆绑到sm数据库表student的sex列上。 usesm
create default df1 as '女'
execsp_bindefault 'df1','student.sex'
4. 在sm数据库中定义规则,使用该规则的列的值被限制为必须大于0,并将规则捆绑到sm数据库表teacher的sal列上。
最后对表teacher执行插入语句,查看执行结果。 usesm
create rule rule1 as @x>0
execsp_bindrule 'rule1','teacher.sal'
实验九存储过程
1.在学生表中,根据姓名查询并显示该同学的信息,否则显示“查无此人”(使用if??else语句)
create proc p2(@sname varchar(20)) --创建存储过程 as
if exists( select * from student where sname=@sname) select * from student where sname=@sname else
print '查无此人'
exec p2 '刘燕' --执行存储过程 2. 查看并显示选修指定课程的人数。 create proc p3(@cno char(4)) as
declare @n int
select @n=count(sno) from sc where cno=@cno
print '有'+convert(varchar(10),@n)+'个人选修这门课'
exec p3 '1001'
3. 1+2+...+100(使用while语句) declare @iint,@s int set @i=1 set @s=0
while (@i<=100) begin
set @s=@s+@i set @i=@i+1 end print @s
4.使用case表达式,判断课程表中ctno列的值,如果为“00”,则显示“专业基础课”;如果为“01”,则显示“公共基础课”;如果为“02”,则显示“专业课”;否则显示“待定”。 select cno课程号, cname课程名,课程类型= casectno
when '00' then '专业基础课' when '01' then '公共基础课' when '02' then '专业课' else '待定' end
from course
5.给定学号,根据该学生的平均分,评定等级,90以上‘一等',80以上‘二等',70分以上'三等',其他'补考'
create proc p4 (@sno char(12)) as
declare @avg decimal
select @avg=AVG(score) from sc wheresno=@sno print(@sno+ case
when @avg>=90 then '一等' when @avg>=80 then '二等' when @avg>=70 then '三等' else '补考'
end
exec p4 '201320180305'
实验十触发器
s(sno,sname,ssex,sbirthday) c(cno,cname,credit,ctime,cnum) sc(sno,cno,score)
1.不允许向数据表s添加数据 create trigger tr1 on s
for insert as
print '任何人不得添加数据' rollback
create trigger tr1 on s
instead of insert as
select * from s
2.不允许修改数据表s中李四的数据
inserted 表格中保存了即将被添加的记录行,结构与原表相同 deleted 表格中保存即将被删除的记录行,结构与原表相同 修改数据相当于删除旧记录添加新记录 create trigger tr2 on s
for update as
if exists(select * from deleted where sname='李四') rollback
3.删除学生信息的同时删除该生的选课信息 create trigger tr3 on s
for delete as
delete from sc wheresno
in (select sno from deleted)
4.每添加一条选课记录,课程表中相应课程的选修人数加1 * create trigger tr4 onsc
for insert as
update c set cnum=cnum+1
wherec.cno = (select cno from inserted)
5. 每当添加、删除、修改s表中数据,相应班级人数进行更新 * s(sno,sname,ssex,sbirthday,clno)
class(clno,cnum)-- 班级表(班级号,班级人数)
create trigger tr5 on s
forinsert,delete,update as
update class set cnum=cnum+1
whereclass.clno=(select clno from inserted) update class set cnum=cnum-1
whereclass.clno=(select clno from deleted)
备注:查找的具体数据可以根据你所创建的具体表做相应调整
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库数据库实验内容--答案(2)在线全文阅读。
相关推荐: