实验六-sql的数据定义(视图)

这是第二题的题目,下面还有三四两题,就不附上了

-- (1)建立一个包含 00311 班学生记录的视图 S00311,
--      并要求对该视图插删改操作时只能对该班的学生进行。
create view S00311
as select * from student
where clno = '00311'
with check option;
-- (2)建立一个包含所有学生 Sno,Sname,Clno,Cname 和 Grade 字段的视图 Grades。
create view Grades
as select student.sno,sname,clno,cname,Grade
from student,cj,course
where student.sno = cj.sno and cj.cno = course.cno;
-- (3)建立 00311 班选修了 2 号课程学生的成绩视图 Cj2_00311
create view Cj2_00311
as select cj.sno,cno,grade
from student,cj
where student.sno = cj.sno and cno = '2' and clno = '00311';

-- (4)在视图 S00311 上建立能反映出生日期的 00311 班班女学生视图S00311_1
create view S00311_1(sno,sname,birthday)
as select sno,sname,year(getdate()-sage)
from S00311
where ssex = '女';
-- (5)建立一个反映各门课程平均成绩的视图 C_avg。
create view C_avg(cno,avg_grade)
as select cno,avg(grade)
from cj
group by cno;

-- (6)使用 select * from 视图名 对上述各视图进行简单查询
select * from S00311;
select* from S00311_1;
-- (7)在 S00311 视图中查询 00311 班年龄不大于 20 的女生人数
select * from S00311
where ssex = '女' and sage <= 20;
-- (8)在 Grades 视图中查询‘数据库’考 90 分以上的学生姓名和班级
select sname,clno
from Grades
where cname='数据库' and grade > 90;
-- (9)在 C_avg 视图中查询平均成绩不及格的课程。
select cno from C_avg
where avg_grade < 60;

-- (10)在 00311 班学生视图 S00311 中
/* ①插入新学生记录(2000108,刘辉,男,00311)
和(2000109,张强东,男,00312)。*/
insert into S00311(sno,sname,ssex,clno)
values ('2000108','刘辉','男','00311');
insert into S00311(sno,sname,ssex,clno)
values ('2000109','张强东','男','00312');

--  ②将学号为:“2001108”的学生班级从‘00311’改为‘00312’
update S00311
set clno = '00312'
where sno = '2001108';
--  ③从 S00311 中将学号为“2000104”的记录删除。
delete from S00311
where sno = '2000104';
-- (11)通过 Cj2_00311 视图给 00311 班选修了 2 号课程的学生每人加5 分
update Cj2_00311
set grade += 5
where cno = '2' ;
--(12)在 C_avg 视图中将 2 号课程平均成绩减 5 分。
update C_avg
set avg_grade -= 5
where cno = '2';

-- (13)删除 C_avg 视图。
drop view C_avg;
-- (14)删除 S00311 视图后,并再次对视图 Cj2_00311 和 S00311_1 进行查询
drop view S00311;
select * from Cj2_00311;
select * from S00311_1;

代码没有问题,运行报错仔细看其消息提示。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

没心没肺活百岁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值