数据库SQL语言学习--上机练习4(视图)(持续更新中)

上机练习4
一.实验目的
1. 熟悉和掌握对数据表中视图的查询操作和 SQL 命令的使用;
2. 熟悉和掌握对数据表中视图的更新操作和 SQL 命令的使用,并注意视图更新与基本表更新的区别与联系;
3. 学习灵活熟练的进行视图的操作,认识视图的作用。二.实验内容
(一) 定义视图
以 Student, Course 和SC表为基础完成以下视图定义:
1.    定义信息系学生基本情况视图 V_IS;
CREATE VIEW V_IS AS SELECT * FROM Student WHERE Sdept='信息系';2.    将 Student,Course 和 SC表中学生的学号,姓名,课程号,课程名,成绩定义为视图 V_S_C_G;
CREATE VIEW V_S_C_G AS SELECT Student.Sno,Student.Sname,Course.Cno,Course.Cname ,Cscore FROM Student,Course,Score
WHERE Student.Sno=Score.Sno AND Course.Cno = Score.Cno;3.    将各系学生人数,平均年龄定义为视图 V_NUM_AVG;
CREATE VIEW V_NUM_AVG(A_num,A_age) AS SELECT COUNT(*),AVG(YEAR(GETDATE())-DATENAME(yyyy,Sbirth)) FROM Student GROUP BY Sdept;4.    定义一个反映学生出生年份的视图 V_YEAR;
CREATE VIEW V_YEAR(Birth_year) AS SELECT DATENAME(yyyy,Sbirth) FROM Student;5.    将各位学生选修课程的门数及平均成绩定义为视图 V_AVG_S_G;
CREATE VIEW V_AVG_S_G(Num_of_course,A_grade) AS SELECT COUNT(*),AVG(Cscore) FROM Score GROUP BY Sno;6.    将各门课程的选修人数及平均成绩定义为视图 V_AVG_C_G;
CREATE VIEW V_AVG_C_G(Num_of_student,A_grade) AS SELECT COUNT(*),AVG(Cscore) FROM Score GROUP BY Cno;7.    将各位学生学号、姓名,已选修课程的学分及其已取得的绩点定义为视图V_S_GPA
CREATE VIEW V_S_GPA(Sno,Sname,Credit,gpa) AS SELECT Student.Sno,Sname,Ccredit,
(CASE
WHEN Cscore BETWEEN 90 AND 100 THEN 4.0
WHEN Cscore BETWEEN 85 AND 89 THEN 3.7
WHEN Cscore BETWEEN 82 AND 84 THEN 3.3
WHEN Cscore BETWEEN 78 AND 81 THEN 3.0
WHEN Cscore BETWEEN 75 AND 77 THEN 2.7
WHEN Cscore BETWEEN 71 AND 74 THEN 2.3
WHEN Cscore BETWEEN 66 AND 70 THEN 2.0
WHEN Cscore BETWEEN 62 AND 75 THEN 1.7
WHEN Cscore BETWEEN 60 AND 61 THEN 1.3
WHEN Cscore = 60 THEN 1.0
WHEN Cscore < 60 THEN 0 END)
FROM Student,Course,Score WHERE Student.Sno=Score.Sno AND Course.Cno=Score.Cno;现已知成绩绩点的计算方式如下:
成绩    等级    绩点
90-100    A    4.0
85-89    A-    3.7
82-84    B+    3.3
78-81    B    3.0
75-77    B-    2.7
71-74    C+    2.3
66-70    C    2.0
62-65    C-    1.7
60-61    D    1.3
补考60    D-    1.0
60以下    F    0(二)使用视图
1. 查询以上所建的视图结果;
SELECT * FROM V_AVG_C_G;
SELECT * FROM V_AVG_S_G;
SELECT * FROM V_IS;
SELECT * FROM V_NUM_AVG;
SELECT * FROM V_S_C_G;
SELECT * FROM V_S_GPA;
SELECT * FROM V_YEAR;2.查询平均成绩为 90 分以上的学生学号、姓名和成绩;
SELECT Sno,Sname,Cscore FROM V_S_C_G WHERE Sno IN
(SELECT Sno FROM V_S_C_G GROUP BY Sno HAVING AVG(Cscore)>=90);3. 查询各课成绩均大于平均成绩的学生学号、姓名、课程和成绩;
SELECT * FROM V_S_C_G WHERE Sno IN
(SELECT A.Sno FROM V_S_C_G A WHERE NOT EXISTS (SELECT B.Cscore FROM V_S_C_G B WHERE Cscore <= (SELECT AVG(C.Cscore)FROM V_S_C_G C WHERE B.Cno=C.cno) AND A.Sno=B.Sno)
);4.按系统计各系平均成绩在 80 分以上的人数,结果按降序排列;
5.查询平均绩点在 3.5 分以上的学生信息,结果按系排列显示。
(平均绩点(GPA)是国际通用的学生学习质量评定标准,其计算公式如下:课程学分1*绩点+课程学分2*绩点+......+课程学分n*绩点)/(课程学分1+课程学分2+......+课程学分n。)(三)修改视图
1. 通过视图V_IS,分别将学号为“0001”和“0004”的学生姓名更改为“刘二平”和“马西”,并查询结果;
2. 通过视图 V_IS,新增加一个学生记录 ('1001','韩磊',“男”,19, 'IS'),并查询结果;
3. 通过视图 V_IS,新增加一个学生记录 ('1002','王超',“女”,19, 'FE'),并查询结果;
4. 通过视图 V_IS,删除学号为“0016”和“0003”的学生信息,并查询结果;
5. 要通过视图V_S_C_G,将学号为“S12”的姓名改为“S12_MMM”,是否可以实现?并说明原因;
6. 要通过视图V_AVG_S_G,将学号为“S1”的平均成绩改为90分,是否可以实现?并说明原因。

posted on 2019-04-10 15:11 蔡军帅_ACM 阅读(...) 评论(...) 编辑 收藏

数据库SQL语言学习--上机练习4(视图)(持续更新中)相关推荐

  1. 数据库SQL语言学习--上机练习2(连接查询 嵌套查询)(持续更新中)

    数据库SQL语言学习--上机练习2(连接查询 嵌套查询)(持续更新中) 上机练习2 1.              启动SQL Server 2008中的 SQL Server Management ...

  2. 数据库SQL语言学习--上机练习2(连接查询 嵌套查询)

    上机练习2 1.              启动SQL Server 2008中的 SQL Server Management Studio. 2.              针对下面三张基本表进行操 ...

  3. 数据库SQL语言学习--数据查询(持续更新中)

    数据库SQL语言学习--数据查询(持续更新中) 上机练习1 1.              启动SQL Server 2008中的 SQL Server Management Studio. 2.   ...

  4. C++学习笔记目录链接(持续更新中)

    学习目标: C++学习笔记目录链接(持续更新中,未完待续) 学习内容: 序号 链接 0 C++ 常见bug记录(持续记录中) 1 C++学习笔记1[数据类型] 2 C++学习笔记2[表达式与语句] 3 ...

  5. [源码、文档、分享] iOS/iPhone学习系列、代码教程----~~~持续更新中~~~

    转自:http://www.devdiv.com/iOS_iPhone-iOS_iPhone%E5%AD%A6%E4%B9%A0%E7%B3%BB%E5%88%97%E3%80%81%E4%BB%A3 ...

  6. 数据库SQL语言学习--上级练习1(数据查询)

    上机练习1 1.              启动SQL Server 2008中的 SQL Server Management Studio. 2.              创建数据库Student ...

  7. iOS/iPhone学习系列、代码教程----~~~持续更新中~~~

    http://www.devdiv.com/forum.php?mod=viewthread&tid=48165   part 1--入门: 1. xcode 版本下载 以及 iphone s ...

  8. 【WAF剖析】——sql注入之奇淫巧技bypass(持续更新中)

    作者名:Demo不是emo  主页面链接:主页传送门 创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷 座右铭:不要让时代的悲哀 ...

  9. jQuery学习总结之基础知识----持续更新中

    语法总结和注意事项 1.关于页面元素的引用 通过jquery的$()引用元素包括通过id.class.元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象 ...

最新文章

  1. 边缘计算 — 与硬件厂商
  2. 看看数据科学家们都在用什么:Github上的十大深度学习项目
  3. 从零开始学习OpenGL ES之五 – 材质
  4. vue常见知识点整理
  5. Java与本机代理–他们所做的强大功能
  6. spark 设置主类_最近Kafka这么火,聊一聊Kafka:Kafka与Spark的集成
  7. matlab 动画_MATLAB的动画制作和视频录制
  8. 修改mysql的最大连接数
  9. ttc文件linux安装,Linux当中如何安装字体?
  10. 简述导线平差计算的五个步骤_附合导线平差计算过程说明
  11. python输入一个三位数输出百位十位个位_编程实现:输入一个三位数,输出其百位、十位、个位上的数字。_学小易找答案...
  12. 在线生成透明ICO图标
  13. echo和narcissus寓意_【故事】三毛的英文名Echo,有什么含义?
  14. latex 定理环境,引理,定义,自定义 proof 环境
  15. springAop原理之(三)Advised接口族
  16. linux生成xorg,生成xorg.conf文件
  17. 麒麟操作系统iso文件中的img文件的解压与压缩
  18. mac安装java开发环境-包含JDK、Maven、Svn、Idea
  19. 天正当前比例怎么设置_天正模型空间怎么设置(天正7图纸空间中如何改变当前比例)...
  20. Python 螺旋正方形

热门文章

  1. PHP+新浪微博开放平台+新浪云平台(SAE)开发微博应用基础
  2. 国家网信办发布APP管理规定:记录用户日志信息并保存60天
  3. 崛起币区块链解决方案助教育部门打击全球文凭造假
  4. pytorch 34 mmdetection配置文件中指定backbone与neck
  5. Grub for DOS 分区号
  6. layui时间范围选择
  7. 计算机存储器的种类有哪些,计算机存储器的种类和特点
  8. 笔记本触摸板失灵修复小技巧_手机屏幕突然失灵怎么办?这几个维修小技巧,一定要知道!...
  9. Git的作用和常用git命令
  10. Python机器学习:Scikit-learn入门指南