数据库实验(sqlServer)sql语句(实验3)

界面

1
2
3
4
5
6
//1-1 (建立视图)  建立计算机系的学生的视图STUDENT_CS。
create view student_cs
as
select *
from student
where sdept='CS';
1
2
3
4
//1-2 (建立视图)  建立由学号和他的平均成绩两个字段的视图STUDENT_GR。
create view STUDENT_GR
as
select sno,sum(score)/count(*) as '平均成绩'from score group by sno
1
2
//1-3 (视图查询)  利用视图STUDENT_CS,求年龄大于19岁的学生的全部信息。
select * from student_cs where sage>19
1
2
//1-4(视图查询)  利用视图STUDENT_GR,求平均成绩为88分以上的学生的学号和平均成绩。
select * from STUDENT_GR where 平均成绩>88;
1
2
//1-5 (视图更新)  利用视图STUDENT_CS,增加学生( ‘96006’,‘张然’,‘CS’,‘02’,‘男’,19 )。
insert into STUDENT_CS values('96006','张然','CS','02',19,'男')
1
2
3
//1-6 (视图更新)  利用视图STUDENT_GR,将平均成绩增加2分。观察其运行结果并分析原因
update STUDENT_GR set 平均成绩=平均成绩+2;
//视图或函数 'STUDENT_GR' 不可更新,因为它包含聚合。
1
2
//1-7(视图更新)  删除视图STUDENT_CS中学号为 ‘96006’ 的学生的全部数据。
delete STUDENT_CS where sno='96006';
1
2
3
//1-8(删除视图)  删除视图STUDENT_CS和STUDENT_GR。
drop view STUDENT_CS;
drop view STUDENT_GR;

sql数据控制语句

1
2
3
4
5
//2新建四个用户“studenta”、“studentb”、“studentc”和“studentd”。
exec sp_addlogin 'studenta','123','cheerui';
exec sp_addlogin 'studentb','123','cheerui';
exec sp_addlogin 'studentc','123','cheerui';
exec sp_addlogin 'studentd','123','cheerui';

1
2
3
4
5
//2-1 (授权)  给用户“studenta”和“studentb”授予在表Student上的SELECT权限,
//并使这两个用户具有给其他用户授予相同权限的权限。
use cheerui
grant select on student to studenta,studentb
with grant option;
1
2
3
4
5
//2-2  (授权)  给用户“studentc”授予Teach表上的所有权限。
use cheerui
grant all
on teach
to studentc
1
2
3
4
5
//2-3 (授权)  给所有用户授予Score表上的SELECT权限
use cheerui
grant select
on score
to public
1
2
3
4
//2-5  (收回授权)  收回上面例子中的所有授予的权限
REVOKE all ON teach FROM studentc;
REVOKE select ON score from public;
REVOKE select ON student from studenta,studentb;

事务

1
2
3
4
5
6
7
8
9
10
11
3-1
//(事务回退) 将课程名称表中的 ‘程序设计’课程学时数修改为80、
//‘编译原理’ 课程学时数修改为70学时,
//查询全部课程的总学时数后,
//取消所有修改(ROLLBACK)。再次查询全部课程的总学时数。
//注意比较分析两次查询的结果
begin tran
update course set ctime=80 where cname='程序设计';
update course set ctime=70 where cname='编译原理';
rollback;
//结果分析 修改后数据发生了变化 ,但是经过rollback(回滚)后,数据又恢复了.

//3-2
// (事务提交)  将课程名称表中的 ‘程序设计’ 课程学时数修改为80、
//‘编译原理’ 课程学时数修改为70学时,
//查询全部课程的总学时数后,
//确认所有修改(COMMIT)。再次查询全部课程的总学时数。
//注意比较分析两次查询的结果。
begin tran
update course set ctime=80 where cname='程序设计';
update course set ctime=70 where cname='编译原理';
commit;
//结果分析 修改后数据发生了变化,经过commit(提交)之后,数据便确定了,不会在恢复.

实验三结束

咦~~~~ 这是嘛呀!!!
0%