MySQL 第十七章 视图(view)

十七、视图(view)

17.1 什么是视图

view:站在不同的角度去看待同一份数据

注意!!!视图对应的语句只能是DQL语句。但是视图对象创建完成之后,可以对视图进行增删改查等操作。

17.2 视图对象的创建、删除

# 表复制:
mysql> create table dept2 as select * from dept;
Query OK, 4 rows affected (0.01 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> select * from dept2;
+--------+------------+----------+
| DEPTNO | DNAME      | LOC      |
+--------+------------+----------+
|     10 | ACCOUNTING | NEW YORK |
|     20 | RESEARCH   | DALLAS   |
|     30 | SALES      | CHICAGO  |
|     40 | OPERATIONS | BOSTON   |
+--------+------------+----------+
4 rows in set (0.00 sec)

# 创建视图对象
mysql> create view dept2_view as select * from dept2;
Query OK, 0 rows affected (0.00 sec)

# 删除视图对象
mysql> drop view dept2_view;
Query OK, 0 rows affected (0.00 sec)

注意:只有DQL语句才能以view的形式创建。

create view view_name as 这里的语句必须是DQL语句;

17.3 用视图能做什么

可以面向视图对象进行增删改查,对视图对象的增删改查,会导致原表被操作。
(视图的特点:通过对视图的操作,会影响原表数据)

# 创建视图对象
mysql> create view dept2_view as select * from dept2;
Query OK, 0 rows affected (0.00 sec)

# 面向视图查询
mysql> select * from dept2_view;
+--------+------------+----------+
| DEPTNO | DNAME      | LOC      |
+--------+------------+----------+
|     10 | ACCOUNTING | NEW YORK |
|     20 | RESEARCH   | DALLAS   |
|     30 | SALES      | CHICAGO  |
|     40 | OPERATIONS | BOSTON   |
+--------+------------+----------+
4 rows in set (0.02 sec)

# 面向视图插入
mysql> insert into dept2_view(deptno, dname, loc) values(60, 'SALES', 'BEIJING');
Query OK, 1 row affected (0.00 sec)

# 查询原表数据
mysql> select * from dept2;
+--------+------------+----------+
| DEPTNO | DNAME      | LOC      |
+--------+------------+----------+
|     10 | ACCOUNTING | NEW YORK |
|     20 | RESEARCH   | DALLAS   |
|     30 | SALES      | CHICAGO  |
|     40 | OPERATIONS | BOSTON   |
|     60 | SALES      | BEIJING  |
+--------+------------+----------+
5 rows in set (0.00 sec)

# 面向视图删除
mysql> delete from dept2_view;
Query OK, 5 rows affected (0.00 sec)

# 查询原表数据
mysql> select * from dept2;
Empty set (0.00 sec)

17.4 视图对象在实际开发中到底有什么用?

方便,简化开发,利于维护

mysql> create view emp_dept_view
    -> as select e.ename, e.sal, d.dname
    -> from emp e
    -> join dept d
    -> on e.deptno = d.deptno;
Query OK, 0 rows affected (0.00 sec)

实际应用:

假设有一条非常复杂的SQL语句,而这条SQL语句需要在不同的位置上反复使用。每一次使用这个sql语句的时候都需要重新编写,很长,很麻烦,怎么办?

  • 可以把这条复杂的SQL语句以视图对象的形式新建,在需要编写这条SQL语句的位置直接使用视图对象,可以大大简化开发。
    并且利于后期的维护,因为修改的时候也只需要修改一个位置就行,只需要修改视图对象所映射的SQL语句。

以后面向视图开发的时候,使用视图可以像使用table一样。可以对视图进行增删改查等操作。

视图不在内存当中,视图对象也是存储在硬盘上的,不会消失。

猜你喜欢

转载自blog.csdn.net/qq_45893475/article/details/121324176
今日推荐