美文网首页
MySQL视图(view)

MySQL视图(view)

作者: 一个小运维 | 来源:发表于2021-06-12 08:44 被阅读0次
视图概述
  • 视图是由数据库中的一个表或多个表导出的虚拟表,是一种虚拟存在的表,方便用户对数据的操作。
  • 视图是一个虚拟表,是从数据库中一个或多个表中导出来的表,其内容由查询定义。
  • 同真实表一样,视图包含一系列带有名称的列和行数据
  • 数据库中只存放了视图的定义,而并没有存放视图中的数据。这些数据存放在原来的表中。
  • 使用视图查询数据时,数据库系统会从原来的表中取出对应的数据。
  • 一旦表中的数据发生改变,显示在视图中的数据也会发生改变。
使用视图的原因
  • 安全原因,视图可以隐藏一些数据,例如,员工信息表,可以用视图只显示姓名、工龄、地址,而不显示社会保险号和工资数等
  • 另一个原因是可使复杂的查询易于理解和使用。

创建视图

语法格式
CREATE [OR REPLACE] [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]
VIEW 视图名[(属性清单)]
AS SELECT语句
[WITH [CASCADED|LOCAL] CHECK OPTION];
  • REPLACE:替换现有视图
  • ALGORITHM:可选项,表示视图选择的算法。
  • 属性清单:可选项,指定视图中各个属性的名词,默认情况下与SELECT语句中的查询的属性相同。
  • SELECT语句:表示一个完整的查询语句,将查询记录导入视图中。
  • WITH CHECK OPTION:可选项,表示更新视图时要保证在该视图的权限范围之内。
视图示例
  • 创建包含员工名、email和部门名的视图
mysql> use test2021;
mysql> create view emp_view
    -> as
    ->   select name, email, dept_name
    ->   from employees as e
    ->   inner join departments as d
    ->   on e.dept_id=d.dept_id;
Query OK, 0 rows affected (0.01 sec)

# 查询视图中数据
mysql> select * from emp_view;
mysql> select * from emp_view where dept_name='运维部';
+-----------+--------------------+-----------+
| name      | email              | dept_name |
+-----------+--------------------+-----------+
| 廖娜      | liaona@guodong.com  | 运维部    |
| 窦红梅    | douhongmei@guodong.com | 运维部    |
| 聂想      | niexiang@guodong.com | 运维部    |
| 陈阳      | chenyang@guodong.com | 运维部    |
| 戴璐      | dailu@guodong.com | 运维部    |
| 陈斌      | chenbin@guodong.com | 运维部    |
+-----------+--------------------+-----------+
6 rows in set (0.00 sec)
  • 创建包含员工名、工资总额的视图
mysql> create view emp_sal_view
    -> as
    ->   select name, date, basic+bonus as total
    ->   from employees as e
    ->   inner join salary as s
    ->   on e.employee_id=s.employee_id;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from emp_sal_view where year(date)=2020 and month(date)=12;

修改视图

语法格式
方式一:
  • 与创建视图完全一样
CREATE [OR REPLACE] [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]
VIEW 视图名[(属性清单)]
AS SELECT语句
[WITH [CASCADED|LOCAL] CHECK OPTION];
  • 示例:
mysql> create or replace view emp_view
    -> as
    ->   select name, email, d.dept_id, dept_name
    ->   from employees as e
    ->   inner join departments as d
    ->   on e.dept_id=d.dept_id;
    
mysql> select * from emp_view;
方式二
ALTER VIEW 视图名 AS 查询语句
  • 示例:
mysql> alter view emp_sal_view
    -> as
    ->   select name, date, basic, bonus, basic+bonus as total
    ->   from employees as e
    ->   inner join salary as s
    ->   on e.employee_id=s.employee_id;
Query OK, 0 rows affected (0.01 sec)

mysql> select * from emp_sal_view where year(date)=2020 and month(date)=12;

查看视图

  • 语法:
SHOW TABLES
DESC 视图

删除视图

  • 语法
DROP VIEW 视图1, 视图2, ...
  • 示例:
mysql> drop view emp_view, emp_sal_view;
Query OK, 0 rows affected (0.00 sec)

相关文章

  • MySQL视图(view)

    视图概述 视图是由数据库中的一个表或多个表导出的虚拟表,是一种虚拟存在的表,方便用户对数据的操作。 视图是一个虚拟...

  • mysql view(视图)

    mysql 视图是通过sql, 提前从一张表或几张表中查询出来的虚拟表, 视图不会存储数据, 不会对查询的速度产生...

  • mysql 批量修改视图定义者 DEFINER

    原文: MySQL如何批量修改视图(VIEW)的属主(DEFINER)参考: Mysql The user spe...

  • 视图和触发器

    视图 https://dev.mysql.com/doc/refman/5.7/en/create-view.ht...

  • 简介mysql之视图

    前言 我们在前文的事务和前文的mysql语句执行流程中都谈到了视图这个概念,其实Mysql有两个视图:1.view...

  • 视图

    视图1,虚拟表,mysql5.1版本出现的特性,是通过表动态的生成的数据。创建视图CREATE VIEW <视图名...

  • MySQL之视图VIEW

    本文主要介绍MySQL中的视图, 在什么情况下使用视图。 I、视图介绍 1.1 视图的初步理解 视图是虚拟的表,与...

  • MySQL View 视图分析

    为什么MySQL中很少使用视图功能? 首先MySQL使用视图有什么好处: 清晰简单,可以让简单的语句逻辑更清晰 可...

  • mysql视图

    mysql视图 1. 视图可以叫sql语句更简单 2. 保护数据给不同的人看不同的数据 create view v...

  • 视图

    创建视图 创建视图语法:create VIEW 视图名 AS 查询语句; CREATE VIEW view_all...

网友评论

      本文标题:MySQL视图(view)

      本文链接:https://www.haomeiwen.com/subject/suqreltx.html