实验 6 视图创建与管理
一、实验目的
1.理解视图的概念。
2.掌握创建、更改、删除视图的方法。
3.掌握使用视图来访问数据的方法。
二、实验内容
1.验证性实验:在job数据库中,有聘任人员信息表:Work_lnfo表对其视图的操作。
2.设计性试验:在学生管理系统中,有学生信息表studentinfo表对其视图的操作。
三、实验步骤与实验结果
(一)验证性实验
在job数据库中,有聘任人员信息表:Work_lnfo表,其表结构如下表所示:
字段名
字段描述
数据类型
主键
外键
非空
唯一
自增
Id
编号
INT(4)
是
否
是
是
否
Name
名称
VARCHAR(20)
否
否
是
否
否
Sex
性别
VARCHAR(4)
否
否
是
否
否
Age
年龄
INT(4)
否
否
否
否
否
Address
家庭地址
VARCHAR(50)
否
否
否
否
否
Tel
电话号码
VARCHAR(20)
否
否
否
否
否
1.创建work_info表
CREATE TABLE work_info(
id INT(4) NOT NULL UNIQUE PRIMARY KEY,
name VARCHAR(20) NOT NULL,
sex VARCHAR(4) NOT NULL,
age INT(4),
address VARCHAR(50),
tel VARCHAR(20)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
![](https://img-blog.csdnimg.cn/2223e6eb706b4809ba3151a493fbefe8.png)
2.向work_info插入数据
INSERT INTO work_info
VALUES
(1001,'张明','男',19,'北京市朝阳区','1234567'),
(1002,'李广','男',21,'北京市昌平区','2345678'),
(1003,'王丹','女',18,'湖南省永州市','3456789'),
(1004,'赵一枚','女',24,'浙江宁波市','4567890');
3.创建视图info_view,显示年龄大于20岁的聘任人员id,name,sex,address信息。
CREATE VIEW info_view(id,name,sex,address)AS
SELECT id,name,sex,address
FROM
work_info
WHERE
age>20 WITH LOCAL CHECK OPTION;
![](https://img-blog.csdnimg.cn/5fb68104111d43de80a5037e708d8121.png)
4.查看视图info_view的基本结构和详细结构。
(1)查看基本结构:
DESC info_view;
![](https://img-blog.csdnimg.cn/b84368d12204453ea2cf25477926229c.png)
(2)查看详细结构:
SHOW CREATE VIEW info_view;
![](https://img-blog.csdnimg.cn/2b1feede716e46089f4d6662ede7cbf3.png)
5.查看视图info_view的所有记录。
SELECT * FROM info_view;
![](https://img-blog.csdnimg.cn/c22a5695d147403aac6266d5ef587609.png)
6.修改视图info_view,满足年龄小于20岁的聘任人员id,name,sex,address信息。
ALTER VIEW info_view(id,name,sex,address) AS
SELECT id,name,sex,address
FROM work_info
WHERE
age<20 WITH LOCAL CHECK OPTION;
![](https://img-blog.csdnimg.cn/7b49049568564d1da3f66bd0a5dcaebd.png)
7.更新视图,将id号为1001的聘任员的性别,由“男“改为“女”。
UPDATE info_view SET sex='女' WHERE id=1001;
![](https://img-blog.csdnimg.cn/c518b470288e4c8fb44af8196c5ac18e.png)
8.删除info_view视图。
DROP VIEW info_view;
![](https://img-blog.csdnimg.cn/c8d31ddda218495ebaac3f417d5ae9a9.png)
(二)设计性试验
在学生管理系统中,有学生信息表studentinfo表,其表结构如下:
字段名
字段描述
数据类型
主键
外键
非空
唯一
自增
Number
学号
INT(4)
是
否
是
是
否
Name
姓名
VARCHAR(20)
否
否
是
否
否
Major
专业
VARCHAR(20)
否
否
否
否
否
age
年龄
INT(4)
否
否
否
否
否
1.创建studentinfo表
CREATE TABLE studentinfo(
number INT(4) NOT NULL UNIQUE PRIMARY KEY,
name VARCHAR(20) NOT NULL,
major VARCHAR(20),
age INT(4)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
![](https://img-blog.csdnimg.cn/f7c8d1f1c84e45bc994ff82ab9fb861d.png)
2.使用CREATE VIEW语句来创建视图college_view,显示studentinfo表中的number,name,age,major,并将字段名显示为:
student_num,student_name,student_age,department。
CREATE VIEW college_view
(student_num,student_name,student_age,department)
AS
SELECT number,name,age,major
FROM studentinfo;
![](https://img-blog.csdnimg.cn/83c18cb45bbf455eb4ce2dcc0ac34582.png)
3.执行SHOW CREATE VIEW语句来查看视图的详细结构
SHOW CREATE VIEW college_view;
![](https://img-blog.csdnimg.cn/ce7577d9e64745a3a4fa5837f7ba75e5.png)
4.更新视图。向视图中插入如下3条记录:
0901,'张三',20,'外语'
0902,'李四',22,'计算机'
0903,'王五',19,'计算机‘
INSERT INTO college_view VALUES
(0901,'张三',20,'外语'),
(0902,'李四',22,'计算机'),
(0903,'王五',19,'计算机');
![](https://img-blog.csdnimg.cn/e21edf4e0f3941c9a8ebeb78328c73eb.png)
5.修改视图,使视图中只显示专业为“计算机”的信息。
ALTER VIEW college_view
(student_num,student_name,student_age,department)
AS
SELECT number,name,age,major
FROM studentinfo
WHERE major='计算机';
![](https://img-blog.csdnimg.cn/d2ef6f9026ec4b02a9cca05eae50c222.png)
6.删除视图。
DROP VIEW college_view ;
![](https://img-blog.csdnimg.cn/e8c307806e564e7aa376d8a9ba474de0.png)
四、观察与思考
1.通过视图中插入的数据能进入到基本表中去吗?
答:可以的,因为视图不保存数据,只保存数据来源的内容。
2.WITH CHECK OPTION能起什么作用?
答:可以防止在更新视图时不满足视图条件的数据插入到视图中。
3.修改基本表的数据会自动反映到相应的视图中去吗?
答:修改基本表视图也会发生变化。
4.哪些视图中的数据不可以增删改操作?
(1)视图中包含SUM、COUNT等聚集函数。
(2)视图中包含UNION、UNION ALL、DISTINCT、GROUP BY、HAVING等关键字。
(3)常量视图,比如:CREATE VIEW view_now AS SELECT NOW().
(4)视图中包含子查询。
(5)由不可更新的视图导出的视图。
(6)创建视图时ALGORITHM为TEMPTABLE类型。
(7)视图对应的表上存在没有默认值的列,而且该列没有包含在视图里。
(8)WITH CHECK OPTION 也决定视图是否可以更新,LOCAL参数表示更新视图时要满足该视图本身定义的条件即可;CASCADED参数表示更新视图时要满足所有相关视图和表的条件,是默认值。
五、实验要求
按要求完成,详细记录操作步骤,书写实验报告。所有实验环节均由每位学 生独立完成,认真记录操作过程,严禁抄袭他人实验结果。
六、实验总结
通过本次实验学习了对视图的增删改查的操作,了解了视图的优势,在统一数据库可以创建不同的视图,为用户分配不同的视图,可以实现不同用户只能查询或修改对应的数据,增加了数据的安全访问控制。
版权归原作者 小孙同学1024 所有, 如有侵权,请联系我们删除。