MySQL 视图

一、什么是视图

视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成


二、为什么使用视图

  • 为了提高复杂SQL语句的复用性和表操作的安全性,MySQL数据库管理系统提供了视图特性。所谓视图,本质上是一种虚拟表,在物理上是不存在的,其内容与真实的表相似,包含一系列带有名称的列和行数据。但是,视图并不在数据库中以储存的数据值形式存在。行和列数据来自定义视图的查询所引用基本表,并且在具体引用视图时动态生成
  • 视图使开发者只关心感兴趣的某些特定数据和所负责的特定任务,只能看到视图中所定义的数据,而不是视图所引用表中的数据,从而提高了数据库中数据的安全性

三、特点

  • 视图的列可以来自不同的表,是表的抽象和在逻辑意义上建立的新关系
  • 视图是由基本表(实表)产生的表(虚表)
  • 视图的建立和删除不影响基本表
  • 对视图内容的更新(添加,删除和修改)直接影响基本表
  • 当视图来自多个基本表时,不允许添加和删除数据

四、使用场景

  • 重用SQL语句
  • 简化复杂的SQL操作。在编写查询后,可以方便的重用它而不必知道它的基本查询细节
  • 使用表的组成部分而不是整个表
  • 保护数据。可以给用户授予表的特定部分的访问权限而不是整个表的访问权限
  • 更改数据格式和表示。视图可返回与底层表的表示和格式不同的数据

四、优缺点

4-1、优点

  • 查询简单化。视图能简化用户的操作
  • 数据安全性。视图使用户能以多种角度看待同一数据,能够对机密数据提供安全保护
  • 逻辑数据独立性。视图对重构数据库提供了一定程度的逻辑独立性

4-2、缺点

  • 性能。数据库必须把视图的查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,数据库也把它变成一个复杂的结合体,需要花费一定的时间
  • 修改限制。当用户试图修改视图的某些行时,数据库必须把它转化为对基本表的某些行的修改

五、常用命令

5-1、前提条件

# 查看系统是否开启视图
select SELECT_priv,create_view_priv from mysql. user where user = 'root';
+-------------+------------------+
| SELECT_priv | create_view_priv |
+-------------+------------------+
| Y           | Y                |
+-------------+------------------+

5-2、创建视图

# 单表创建视图
create view v_emplyee_view(ID, NAME , SEX, AGE,DEPARTMENT) AS
SELECT ID, NAME , SEX, AGE,DEPARTMENT FROM tbl_employee;

# 多表创建视图
CREATE VIEW v_employee_detail_view(ID, NAME , SEX, AGE,DEPARTMENT,POS,EXPERENCE) AS
SELECT a.ID, a. NAME ,a.SEX, a.AGE,a.DEPARTMENT,b.POS,b.EXPERENCE
FROM tbl_employee a,tbl_employee_detail b WHERE a.ID=b.ID;

5-3、查看视图

SELECT * FROM v_employee_view;

5-4、修改视图

CREATE OR REPLACE VIEW v_employee_view(ID, NAME , SEX) AS
SELECT ID, NAME , SEX  FROM tbl_employee;

5-5、删除视图

# 删除视图
DROP VIEW IF EXISTS v_employee_view
posted @ 2021-05-05 11:29  q-linyu  阅读(294)  评论(0)    收藏  举报