X  
登录

还没有账号?立即注册

忘记密码?
登陆
X  
注册

已经有账号?马上登陆

获取验证码
重新获取(60s)
立即注册
统计
  • 建站日期:2021-03-10
  • 文章总数:518 篇
  • 评论总数:155 条
  • 分类总数:32 个
  • 最后更新:4月20日
文章 mysql语言

MySQL视图--范例,让你更容易记住123

梦幻书涯
首页 mysql语言 正文

11

1、    创建视图v_student1,使其具有功能:“检索“2012自动化1的所有学生学号、姓名、课程号及对应成绩”。

create or replace view v_student1(sno,sname,cno,score) as select student.student_no,student.student_name,choose.course_no,score from student,choose,classes where student.student_no =choose.student_noand student.class_no=classes.class_no and class_name='2012自动化1' ;

 

2、    从视图v_student1中查询“成绩大于60分的学生学号、姓名、课程号及对应成绩”。

select sno,sname,cno,score from v_student1 where score>60;

 

3、    创建视图v_student2,使其具有功能:“检索成绩优秀(>=80)的学生学号、姓名及其选修的课程号和课程名称,分数。”

create or replace view v_student2(sno,sname,cno,cname,score) as

select student.student_no,student_name, choose.course_no, course_name,score from choose,course,student

where student.student_no = choose.student_no and course.course_no =choose.course_no and score >=80;

 

4、    从视图v_student2中查询“姓张的学生的学号、姓名及其选修的课程号和课程名称及分数。

select * from v_student2 where sname like '%';

 

5、    创建视图course_view1,使其具有功能:“统计学生的学号、姓名及平均成绩”。

create or replace view course_view1(sno,sname,avscore) as

select student.student_no,student_name,avg(score)from choose,student

where choose.student_no=student.student_no group bystudent.student_no,student_name;

6、    从视图course_view1中查询“平均成绩>=90分的学生的学号、姓名及平均成绩”

select * from course_view1 where avscore >=90;

 

7、    创建视图course_view2,使其具有功能:“统计平均成绩高于70分的学生的学号、姓名及平均成绩”;

从视图创建视图:create view course_view2(sno,sname,avscore) as select* from course_view1 where avscore >=70; 

或者:  从表创建视图

create view course_view2(sno,sname,avscore) as

select student.student_no,student_name,avg(score)from choose,student

where choose.student_no = student.student_no groupby student.student_no,student_name

having avg(score)>70;

 

8、    使用SQL语句查看以上四个视图的结构;

desc v_student1;

desc v_student2;

desc course_view1;

desc course_view2;

 

9、    使用SQL语句查看以上四个视图的的所有数据;

select * from  v_student1;

select * from v_student2;

select * from course_view1;

select * from course_view2;

10、 删除视图course_view2

 

drop view course_view2;

 

 

实验13  5 -- 9

5. 创建视图available_course_view,使其具有功能:统计每一门课程已经有多少学生选修,还能供多少学生选修

create orreplace view available_course_view(已有人数,剩余名额) as

select count(choose.course_no),up_limit-count(choose.course_no) from choose,course where choose.course_no = course.course_no group bychoose.course_no;



5. 使用SQL语句查看视图available_course_view的结构;

describeavailable_course_view;

6. 使用SQL语句查看视图available_course_view的数据值;

select *from  available_course_view;

7. 使用SQL语句像课程表course中新增字段available,默认值为0

altertable course add available_test int default 0;(因为给的数据库备份里面已有available字段,请使用其他字段名测试这个命令)

8. 使用SQL语句将每一门课程的available字段值设置为“剩余的学生名额Available字段值从available_course_view视图中获取。

1alter table course change available_test 剩余的学生名额 int;

2)需要重新创建view ,因为缺少参照比对的字段course_no

1步:create or replace view available_course_view(course_no,已有人数,剩余名额) as select choose.course_no,count(choose.course_no),up_limit-count(choose.course_no) from choose,course wherechoose.course_no=course.course_no group by choose.course_no;

2步:update course set 剩余的学生名额=(select 剩余名额 from available_course_view where available_course_view.course_no=course.course_no);

版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。
版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!

-- 展开阅读全文 --
这篇文章最后更新于2020-7-3,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
MySQL索引--范例,让你更容易
« 上一篇
厚墨书源仓库地址
下一篇 »

发表评论

HI ! 请登录
注册会员,享受下载全站资源特权。
登陆 注册
永远的少年,永远的梦

热门文章