Mysql视图

Posted 枸杞仙人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql视图相关的知识,希望对你有一定的参考价值。

视图

概述

  • 视图是一种根据查询(也就是SELECT表达式)定义的数据库对象,用于获取想要看到和使用的局部数据。
  • 视图有时也被成为“虚拟表”。
  • 视图可以被用来从常规表(称为“基表”)或其他视图中查询数据。
  • 相对于从基表中直接获取数据,视图有以下好处:
    • 访问数据变得简单
    • 可被用来对不同用户显示不同的表的内容

基本语法

创建视图

create view view名 as select ... from ...;

删除视图

drop view view名

视图作用

视图可以隐藏表的实现细节。保密级别较高的系统,数据库只对外提供相关的视图,java程序员只对视图对象进行CRUD。
可以理解为:创建了一张和真实数据表相连的虚表,我们可以通过修改这张虚表更改真实表格的内容,也可以通过更改这张虚表的字段名、数据等隐藏真实表的内容。

面向视图操作

首先创建视图:
create view myview as select empno,ename,sal from emp;
select * from myview;

+-------+----------+---------+
| empno | ename    | sal     |
+-------+----------+---------+
|  7369 | SMITH    |  800.00 |
|  7499 | ALLEN    | 1600.00 |
|  7521 | WARD     | 1250.00 |
|  7566 | JONES    | 2975.00 |
|  7654 | MARTIN   | 1250.00 |
|  7698 | BLAKE    | 2850.00 |
|  7782 | CLARK    | 2450.00 |
|  7788 | SCOTT    | 3000.00 |
|  7839 | KING     | 5000.00 |
|  7844 | TURNER   | 1500.00 |
|  7876 | ADAMS    | 1100.00 |
|  7900 | JAMES    |  950.00 |
|  7902 | FORD     | 3000.00 |
|  7934 | MILLER   | 1300.00 |
|  9995 | zhangsan | 3000.00 |
|  9996 | zhangsan | 3000.00 |
|  9997 | zhangsan | 3000.00 |
+-------+----------+---------+

然后就可以对试图进行操作,需要注意的是==对视图进行增删改查,会影响到原表数据。(通过视图影响原表数据的,不是直接操作的原表)可以对视图进行CRUD操作。==比如:
update myview set ename='hehe',sal=1 where empno = 7369; // 通过视图修改原表数据。
select * from emp;

+-------+----------+-----------+------+------------+---------+---------+--------+
| EMPNO | ENAME    | JOB       | MGR  | HIREDATE   | SAL     | COMM    | DEPTNO |
+-------+----------+-----------+------+------------+---------+---------+--------+
|  7369 | hehe     | CLERK     | 7902 | 1980-12-17 |    1.00 |    NULL |     20 |
|  7499 | ALLEN    | SALESMAN  | 7698 | 1981-02-20 | 1600.00 |  300.00 |     30 |
|  7521 | WARD     | SALESMAN  | 7698 | 1981-02-22 | 1250.00 |  500.00 |     30 |
|  7566 | JONES    | MANAGER   | 7839 | 1981-04-02 | 2975.00 |    NULL |     20 |
|  7654 | MARTIN   | SALESMAN  | 7698 | 1981-09-28 | 1250.00 | 1400.00 |     30 |
|  7698 | BLAKE    | MANAGER   | 7839 | 1981-05-01 | 2850.00 |    NULL |     30 |
|  7782 | CLARK    | MANAGER   | 7839 | 1981-06-09 | 2450.00 |    NULL |     10 |
|  7788 | SCOTT    | ANALYST   | 7566 | 1987-04-19 | 3000.00 |    NULL |     20 |
|  7839 | KING     | PRESIDENT | NULL | 1981-11-17 | 5000.00 |    NULL |     10 |
|  7844 | TURNER   | SALESMAN  | 7698 | 1981-09-08 | 1500.00 |    0.00 |     30 |
|  7876 | ADAMS    | CLERK     | 7788 | 1987-05-23 | 1100.00 |    NULL |     20 |
|  7900 | JAMES    | CLERK     | 7698 | 1981-12-03 |  950.00 |    NULL |     30 |
|  7902 | FORD     | ANALYST   | 7566 | 1981-12-03 | 3000.00 |    NULL |     20 |
|  7934 | MILLER   | CLERK     | 7782 | 1982-01-23 | 1300.00 |    NULL |     10 |
|  9995 | zhangsan | MANAGER   | NULL | 2021-02-04 | 3000.00 |  500.00 |     10 |
|  9996 | zhangsan | MANAGER   | NULL | 1981-06-12 | 3000.00 |  500.00 |     10 |
|  9997 | zhangsan | MANAGER   | NULL | 1981-06-12 | 3000.00 |  500.00 |     10 |
+-------+----------+-----------+------+------------+---------+---------+--------+

delete from myview where empno = 7369; // 通过视图删除原表数据。

以上是关于Mysql视图的主要内容,如果未能解决你的问题,请参考以下文章

Mysql视图

mysql 视图

MySQL(13)-视图

MySQL(13)-视图

MySQL之视图操作

mysql----视图