MySQL学习总结{ 视图概述、视图管理(创建、查看、修改、删除)、视图数据操作(添加、修改、删除、)}

目录

一、视图概述

1、简化查询语句

2、安全性

3、逻辑数据独立性

二、视图管理

1、创建视图

(1)基于单表创建视图

(2)基于多表创建视图

2、查看视图

(1)查看视图的字段信息

(2)查看视图的状态信息

(3)查看视图的创建语句

3、修改视图

(1)使用CREATE OR REPLACE VIEW 语句修改视图

(2)使用ALTER 语句修改视图

 4、删除视图

三、视图数据操作

1、添加数据

2、修改数据

3、删除数据


     学习MySQL的视图概述、视图管理(创建、查看、修改、删除)、视图数据操作(添加、修改、删除、)

一、视图概述

1、简化查询语句

       视图不仅可以简化用户对数据的理解,也可以简化对数据的操作。例如,日常开发需要经常使用一个比较复杂的语句进行查询,此时就可以将该查询语句定义为视图,从而避免大量重复且复杂的操作。

2、安全性

      数据库授权命令可以将每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定列上。通过视图,可以更加方便地进行权限控制,使特定用户只能查询和修改指定的数据,而无法查看和修改数据库中的其他数据。

3、逻辑数据独立性

     视图可以帮助用户屏蔽数据表结构变化带来的影响,例如,数据表增加字段不会影
响基于该数据表查询出数据的视图。

二、视图管理

1、创建视图

       在MySQL中,可以使用CREATE VIEW 语句创建视图。

创建视图的基本语法格式

​CREATE [ OR REPLACE ] VIEW 视图名 [(字段列表)] AS select_statement ;
  • [OR REPLACE]:可选参数,表示若数据库中已经存在这个名称的视图就替换原有的视图,若不存在则创建视图。
  • 视图名:表示要创建的视图名称,该名称在数据库中必须是唯一的,不能与其他数据表或视图同名。
  • select_statement:指一个完整的SELECT语句,表示从某个数据表或视图中查出满足条件的记录,将这些记录导入视图中。一般将SELECT语句所涉及的数据表称为视图的基本表。

      视图的基本表可以是一张数据表,也可以是多张数据表。

(1)基于单表创建视图

      例如,公司想要组建一个开发小组,开发一个资源管理系统,供各部门上传共享资源。该系统需要根据员工工号empno、员工姓名ename、职位job和部门编号deptno进行账户管理和权限授、予。如果将操作员工表的权限直接交给该开发小组,会造成部分敏感信息泄露。此时数据库管理员可以将员工工号empno、员工姓名ename、职位job和部门编号deptno查询出来创建视view_emp,供该开发小组使用。

      示例:将员工工号empno、员工姓名ename、职位job和部门编号deptno查询出来创建视view_emp

通过SELECT 语句查看view_emp视图

MySQL学习总结{ 视图概述、视图管理(创建、查看、修改、删除)、视图数据操作(添加、修改、删除、)}_第1张图片

       从执行结果可以看出,创建的视图view_emp的字段名称和数据表emp的字段名称是一样的。

      视图的字段名称可以使用基本表的字段名称,但也可以根据实际的需求自定义视图字段的名称。例如,数据库管理员觉得将数据表的真实字段名称在视图中暴露不太安全,想要创建一个新的视图view_emp2给开发小组使用。视图view_emp2中包含的字段和视图view_emp相同,但视图view_emp2中的字段名称和员工表中的字段名称不一致。

      示例:视图view_emp2中包含的字段和视图view_emp相同,但视图view_emp2中的字段名称和员工表中的字段名称不一致

通过SELECT 语句查看view_emp2视图

MySQL学习总结{ 视图概述、视图管理(创建、查看、修改、删除)、视图数据操作(添加、修改、删除、)}_第2张图片

       从执行结果可以看出,虽然view_emp和view_emp2两个视图中的字段名称不同,但是数据却是相同的,这是因为这两个视图引用的是同一个数据表中的数据。在实际开发中,用户可以根据自己的需要,通过视图获取基本表中需要的数据,这样既能满足用户的需求,也不需要破坏基本表原来的结构,从而保证了基本表中数据的安全性。

(2)基于多表创建视图

      在MySQL中,除了可以在单表上创建视图,还可以在两个或两个以上的数据表上创建视图。

      例如,经过会议研讨,开发小组开发资源管理系统时,需要使用公司ems数据库中员工编号empno、员工姓名ename、职位job、部门编号 deptno和部门名称dname的信息。

     示例:创建视图view_emp_dept

通过SELECT 语句查看view_emp_dept视图

MySQL学习总结{ 视图概述、视图管理(创建、查看、修改、删除)、视图数据操作(添加、修改、删除、)}_第3张图片

      在上述执行结果中,视图view_emp_dept 中的字段名称和数据表emp及数据表dept中的字段名不一致,但是字段值和数据表中的数据是一致的。

2、查看视图

(1)查看视图的字段信息

     在MySQL中,使用DESCRIBE 语句可以查看视图的字段名、字段类型等字段信息。

DESCRIBE 语句的基本语法格式

DESCRIBE 视图名 ;

或者简写为

DESC 视图名 ;

      示例:查看视图view_emp_dept 的字段信息

MySQL学习总结{ 视图概述、视图管理(创建、查看、修改、删除)、视图数据操作(添加、修改、删除、)}_第4张图片

      上述执行结果显示出视图view_emp_dept的字段信息,其中部分字段信息代表的意思具体如下。

  • Null:表示该列是否可以存储NULL值。
  • Key:表示该列是否已经创建索引。
  • Default:表示该列是否有默认值。
  • Extra:表示获取的与指定列相关的附加信息。

(2)查看视图的状态信息

     在MySQL中,可以使用SHOW TABLE STATUS 语句查看视图和数据表的状态信息。

SHOW TABLE STATUS 语句的基本语法格式

SHOW TABLE STATUS LIKE '视图名' ;

     在上述格式中,LIKE表示后面匹配的是字符串,‘ 视图名 ’表示要查看的视图的名称,视图名称需要使用单引号包裹起来。

     示例:使用SHOW TABLE STATUS语句查看视图view_emp_dept的信息

MySQL学习总结{ 视图概述、视图管理(创建、查看、修改、删除)、视图数据操作(添加、修改、删除、)}_第5张图片

      上述执行结果中显示了视图view_emp_dept的信息,其最后一行的Comment项表示备注说明。它的值为VIEW ,说明我们所查询的view_emp_dept是一个视图。

       示例:使用SHOW TABLE STATUS语句查看数据表dept的信息

MySQL学习总结{ 视图概述、视图管理(创建、查看、修改、删除)、视图数据操作(添加、修改、删除、)}_第6张图片

       上述执行结果显示了数据表dept的信息,包括存储引擎、创建时间等,但是Comment项没有信息,说明所查询的不是视图,这是查询视图信息和数据表信息的最直接区别。

(3)查看视图的创建语句

     在MySQL中,使用 SHOW CREATE VIEW 语句可以查看创建视图时的定义语句。

SHOW CREATE VIEW 语句的基本语法格式

​SHOW CREATE VIEW 视图名 ;

      在上述格式中,视图名指是要查看的视图的名称。

      示例:使用 SHOW CREATE VIEW 语句查看视图 view_emp_dept 的信息

MySQL学习总结{ 视图概述、视图管理(创建、查看、修改、删除)、视图数据操作(添加、修改、删除、)}_第7张图片

       上述执行结果可以查看出,使用 SHOW CREATE VIEW 语句查询到了视图的名称、创建语句、字符编码等信息。

3、修改视图

     视图的修改指的是修改数据库中存在的视图的定义,当视图的基本表中的字段发生变化时,需要对视图进行修改以保证查询的正确性。例如,view_emp视图的基本表emp中的员工姓名字段修改了名称,此时再使用视图就会出错。

(1)使用CREATE OR REPLACE VIEW 语句修改视图

基本语法格式

CREATE OR REPLACE VIEW 视图名 AS SELECT 语句

       使用CREATE OR REPLACE VIEW语句修改视图时,要求被修改的视图在数据库中已经存在,如果视图不存在,那么将创建一个新视图。

示例:开发小组需要在视图view_emp_dept原有的基础上新增员工上级工号的字段,以便对上级赋予更多权限。开发小组的申请得到批准后,数据库管理员对视图view_emp_dept进行修改。

       示例:在原有的基础上新增一个员工表的mgr字段

使用DESC 语句查看修改后的视图表

MySQL学习总结{ 视图概述、视图管理(创建、查看、修改、删除)、视图数据操作(添加、修改、删除、)}_第8张图片

       从上述执行结果可以看出,视图view_emp_dept包含6个字段,新增了字段e_mgr ,表明视图修改成功。此时使用SELECT 语句查询视图 view_emp中的数据

MySQL学习总结{ 视图概述、视图管理(创建、查看、修改、删除)、视图数据操作(添加、修改、删除、)}_第9张图片

       从上述结果可以看出,通过视图view_emp_dept查询到的数据中新增了数据表emp中字段mgr的数据。

(2)使用ALTER 语句修改视图

    ALTER 语句MySQL提供的另一种修改视图的方法,

使用该语句修改视图的基本语法格式

ALTER VIEW < 视图名 > AS