MySQL视图——学习笔记及实验

MySQL视图

一、视图

1.1、视图概述

视图是从一个或者多个表里导出来的表,是一种虚拟存在的表;

其内容由查询定义,即视图中的数据不需要占用内存空间,而是仅仅保存了一条select语句;

行列数据都来自所引用的表,并随着基本表的变化而变化。使用原因:安全,易于理解和使用。

1.2、视图优势

增强数据安全性:给不同用户分配不同的视图,用户只能操作查看相对应的数据,无法看到数据表的结构,增强了数据安全访问控制。

提高灵活性,操作变简单:由于视图是一种虚拟表,用户可以自由的选择所需要的数据进行定义,操作灵活,简单。

提高数据的逻辑独立性:表结构和应用程序的变化,都可以通过重新定义视图或者修改视图定义来解决。

1.3、执行机制

当调用视图时,才会执行视图中的SQL语句,进行数据操作,视图和表的数据总是一样的。

二、视图定义和管理(以studentinfo为实验例子)

在学生管理系统中,有学生信息表studentinfo表,其表结构如下:

字段名

字段描述

数据类型

主键

外键

非空

唯一

自增

Number

学号

INT(4)

Name

姓名

VARCHAR(20)

Major

专业

VARCHAR(20)

age

年龄

INT(4)

2.1.1、创建视图

使用CREATE VIEW语句来创建视图college_view,显示studentinfo表中的number,name,age,major,并将字段名显示为:student_num,student_name, student_age, department。

mysql> create table studentinfo(

    -> number int(4) primary key not null unique comment '学号',

    -> name varchar(20) not null comment '姓名',

    -> major varchar(20) comment '专业',

    -> age int(4) comment '年龄'

-> );

答: 

Create view college_view(studnet_num,student_name,studnet_age,department) as select number,name,age,major from studentinfo;

2.1.2、查看视图

执行SHOW CREATE VIEW语句来查看视图的详细结构。

Describe college_view;

Show table status like ‘college_view’;

show create view college_view;

答:show create view college_view;

+--------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+

| View         | Create View                                                                                                                                                                                                                                                                           | character_set_client | collation_connection |

+--------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+

| college_view | CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `college_view` AS select `studentinfo`.`number` AS `studnet_num`,`studentinfo`.`name` AS `student_name`,`studentinfo`.`age` AS `studnet_age`,`studentinfo`.`major` AS `department` from `studentinfo` | utf8                 | utf8_general_ci      |

+--------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+

1 row in set

 

2.1.3更新视图插入、更新、删除

向视图中插入如下3条记录:

0901,'张三',20,'外语'

0902,'李四',22,'计算机'

0903,'王五',19,'计算机'

答:

insert into college_view() values

    -> (0901,'张三',20,'外语'),

    -> (0902,'李四',22,'计算机'),

    -> (0903,'王五',19,'计算机');

 

2.1.4修改视图

使视图中只显示专业为“计算机”的信息。

Create or replace view college_view(student_num, student_name, student_age,department) as select number,name,age, major from studentinfo where major='计算机' with local check option;

local check option 是可选参数,表示更新视图是要保证在改视图的权限范围之内,可选属性,为了数据安全性建议使用。

答:或者 alter view

Alter view college_view(student_num,student_name,student_age,department)

    -> as select number,name,age, major

    -> from studentinfo where major='计算机' with local check option;

 

2.1.5删除视图

答:drop view college_view;

 

三、总结

创建视图和修改视图为重点,并且以查看辅助。

原文地址:https://www.cnblogs.com/liyanyinng/p/13962546.html