MySQL数据库实验:任务五 数据库的视图设计

任务五 数据库的视图设计



【实训目的与要求】

1、视图的概念;
2、创建视图的方法;
3、对视图的基本操作。


【实训原理】

MySQL视图的定义与查询。


【实训步骤】

参考任务二中提供的表数据内容,编写相应SQL语句,实现对视图的基本操作。参考教材《数据库系统概论》P121-127的例题,以及《MySQL数据库入门》第7章内容。

一、创建视图(注意WITH CHECK OPTION子句用法)

1.创建行列子集视图

(1)功能:建立信息系的学生,并要求进行修改和插入操作时仍需保证该视图只有信息系的学生。
命令:

CREATE VIEW IS_student
AS
SELECT SNo,SName,SSex
FROM student
WHERE Sdept='IS'
WITH CHECK OPTION;

截图:
在这里插入图片描述

2.在多表上建立视图

(1)功能:建立信息系选修了5号课程的学生的视图(包括学号,姓名,成绩)
命令:

CREATE VIEW IS_S1(SNo,SName,Score)
AS
SELECT student.SNo,SName,Score
FROM student,sc
WHERE Sdept='IS' AND student.SNo=sc.SNo AND sc.CNo='00005';

截图:
在这里插入图片描述

(2)功能:建立信息系选修了5号课程且成绩在80分以上的学生视图。
命令:

CREATE VIEW IS_S2
AS
SELECT SNo,SName,Score
FROM IS_S1
WHERE Score>=80;

截图:
在这里插入图片描述

扫描二维码关注公众号,回复: 6059960 查看本文章

3.创建带表达式的视图

(1)功能:定义一个反映学生年龄的视图
命令:

CREATE VIEW BT_A(SNo,SName,SBir)
AS
SELECT SNo,SName,2018-SBir
FROM student;

截图:
在这里插入图片描述

4.创建分组视图

(1)功能:将学生的学号及平均成绩定义为一个视图
命令:

CREATE VIEW S_G(SNo,Gavg)
AS
SELECT SNo,AVG(Score)
FROM sc
GROUP BY SNo;

截图:
在这里插入图片描述

(2)功能:将student表中所有女生记录定义为一个视图
命令:

CREATE VIEW F_student(F_sno,name,sex,bir,credits,dept)
AS
SELECT *
FROM student
WHERE Ssex='女'; 

截图:
在这里插入图片描述


二、查看视图

1.使用DESC语句查看视图

(1)功能:查看信息系学生视图
命令:DESC IS_student;
截图:
在这里插入图片描述

2.使用SHOW TABLE STATUS语句查看视图

(1)功能:查看学生年龄的视图
命令:SHOW TABLE STATUS LIKE 'BT_A'\G
截图:
在这里插入图片描述

3.使用SHOW CREATE VIEW查看视图

(1)功能:
命令:SHOW CREATE VIEW F_student\G
截图:
在这里插入图片描述


三、查询视图

(1)功能:查询选修了5号课程的信息系学生。
命令:

SELECT IS_student.SNo,SName
FROM IS_student,sc
WHERE IS_student.SNo=sc.SNo AND sc.CNo='00005';

截图:
在这里插入图片描述

(2)功能:在S_G视图中查询平均成绩在80分以上的学生学号和平均成绩。
命令:

SELECT *
FROM S_G
WHERE Gavg>=80;

截图:
在这里插入图片描述

四、更新视图(若使用了UPDATE、DELETE命令,操作后请将基本表数据恢复为原来的值)

(1)功能:将信息系学生视图IS_student中学号为16041101的学生姓名改为“艾舒安”。
命令:
UPDATE IS_student
SET SName=‘艾舒安’
-> WHERE SNo=‘16041101’;

截图:
在这里插入图片描述
在这里插入图片描述

(2)功能:向信息系学生视图IS_student中插入一个新的学生记录,其中学号为16041000,姓名为艾舒安,性别为男.
命令:

INSERT 
INTO student(SNo,SName,SSex)
VALUES(’16041101’,’艾舒安’,’男’);

截图:
在这里插入图片描述


【实训总结】

在写查询视图的过程中,cmd命令行方式输出字符集不对应,所以显示乱码,所以改用navicat查询视图。

猜你喜欢

转载自blog.csdn.net/qq_39394264/article/details/89674275