四 视图

1、实验目的

理解SQL成熟设计基本规范,能够熟练使用SQL语句来创建需要的视图,定义数据库外模式,并能使用所创建的视图实现数据管理。

2、实验内容及要求

使用SQL对数据库进行各类查询数据操纵操作,掌握单行数据插入、多行数据插入,理解空值的意义及处理方式;掌握数据的修改,包括单行和多行数据修改,单列修改和多列数据修改;

针对给定的数据库模式以及相应的应用需求,创建视图和带WITH CHECK OPTION的视图,并验证视图WICH CHECK OPTION选项的有效性。

3、实验步骤

create table Student (

Sno char(7) primary key,

Sname char(10) not null,

Ssex char(2),

Sage tinyint,

Sdept char(20)

)

create table Course(

Cno char(6) not null,

Cname char(20) not null,

Credit tinyint,

Semester tinyint,

primary key(Cno)

)

create table SC(

Sno char(7) not null,

Cno char(6) not null,

Grade smallint,

primary key(Sno,Cno),

foreign key(Sno) references Student(Sno),

foreign key(Cno) references Course(Cno)

)

(1)利用Student、Course和SC表,写出创建满足下列要求的视图的SQL语句。

1)建立学生的学号、姓名、所在系、课程号、课程名、课程学分的视图。

CREATE VIEW v1 AS SELECT Student.Sno,Sname,Sdept,SC.Cno,Course.Cname,Course.Credit

FROM Student,SC,Course

WHERE Student.Sno=SC.Sno AND Course.Cno=SC.Cno

2)建立学生的学号、姓名、选修课程名和考试成绩的视图。

CREATE VIEW v2 AS SELECT Student.Sno,Sname,Cname,SC.Grade

from Student,SC,Course

where Student.Sno=SC.Sno and sc.Cno=Course.Cno;

3)建立统计每个学生的选课门数的视图,要求列出学生学号和选课门数。

create view v3 as select Sno '学号', COUNT(Cno) '选课门数' from SC group by Sno;

4)建立统计每个学生的修课总学分的视图,要求列出学生学号和总学分(说明:考试成绩大于等于60才可获得此门课程的学分)。

create view v4 as select SC.Sno, sum(Credit) '总学分' from SC,Course Where SC.Cno=Course.Cno and Grade >=60 group by Sno

(2)利用第(1)题建立的视图,完成如下查询:

1)查询考试成绩大于等于90分的学生的姓名、课程名和成绩。

select Sname,Cname,Grade from v2 where Grade >= 90;

2)查询选课门数超过3门的学生的学号和选课门数。

select 学号,选课门数 from v3 where 选课门数>3;

3)查询计算机系选课门数超过3门的学生的姓名和选课门数。

select Sname,选课门数 FROM Student,v3

WHERE v3.学号=Student.Sno AND Sdept='计算机系' AND 选课门数>3

4)查询修课总学分超过10分的学生的学号、姓名、所在系和修课总学分。

select Student.Sno,Sname,Sdept,总学分 from v4,Student where Student.Sno=v4.Sno and 总学分>10

5)查询年龄大于等于19岁的学生中,修课总学分超过10分的学生的姓名、年龄、所在系和修课总学分。

select Sname,Sage,Sdept,总学分 from v4,Student where Sage>=20 and Student.Sno=v4.Sno and v4.总学分>10;

4、实验小结

本次实验中,我学习了数据库中的视图。视图是一个虚拟表,它是由一个或多个基本表的行或列组合而成的,具有与基本表相同的数据结构。通过这次实验我理解了SQL成熟设计基本规范,能够熟练使用SQL语句来创建需要的视图,定义数据库外模式,并能使用所创建的视图实现数据管理。 使用SQL对数据库进行各类查询数据操纵操作,掌握单行数据插入、多行数据插入,理解空值的意义及处理方式;掌握数据的修改,包括单行和多行数据修改,单列修改和多列数据修改;针对给定的数据库模式以及相应的应用需求,创建视图和带WITH CHECK OPTION的视图,并验证视图WICH CHECK OPTION选项的有效性。在实验过程中,我们通过使用SQL语句创建了视图,并通过查询语句验证了视图的正确性。总的来说,视图是数据库中非常有用的工具,可以提高查询效率、加强数据安全性和保证数据独立性。

相关推荐
与衫1 分钟前
掌握嵌套子查询:复杂 SQL 中 * 列的准确表列关系
android·javascript·sql
看山还是山,看水还是。15 分钟前
MySQL 管理
数据库·笔记·mysql·adb
fishmemory7sec21 分钟前
Koa2项目实战2(路由管理、项目结构优化)
数据库·mongodb·koa
momo小菜pa31 分钟前
【MySQL 09】表的内外连接
数据库·mysql
Jasonakeke40 分钟前
【重学 MySQL】四十九、阿里 MySQL 命名规范及 MySQL8 DDL 的原子化
数据库·mysql
程序猿小D41 分钟前
第二百六十九节 JPA教程 - JPA查询OrderBy两个属性示例
java·开发语言·数据库·windows·jpa
小宇成长录1 小时前
Mysql:数据库和表增删查改基本语句
数据库·mysql·数据库备份
团儿.2 小时前
解锁MySQL高可用新境界:深入探索MHA架构的无限魅力与实战部署
数据库·mysql·架构·mysql之mha架构
程序猿小D2 小时前
第二百六十七节 JPA教程 - JPA查询AND条件示例
java·开发语言·前端·数据库·windows·python·jpa
权^3 小时前
MySQL--聚合查询、联合查询、子查询、合并查询(上万字超详解!!!)
大数据·数据库·学习·mysql