『MySQL』视图

1 什么是视图
这里的视图与前文关于事务中所提到的View无关;
视图是MySQL中的一种虚拟表, 临时表, 是MySQL通过视图查询所建立的一张临时表;
虽然是一张临时表, 但也是一张真实存在的表, 为查询结果的一种映射;
当对视图进行修改时, 修改操作会映射至主表, 相对的, 当对主表进行修改时, 同样会映射到视图;
2 视图的使用
-
创建视图
CREATE VIEW view_name AS SELECT xxxx;-
示例
假设存在一张表;
mysql> select * from stu; +----+----------+--------+ | id | name | sex | +----+----------+--------+ | 1 | LiuYi | Female | | 2 | ChenEr | Male | | 3 | ZhangSan | Female | | 4 | LiSi | Male | | 5 | WangWu | Male | | 6 | ZhaoLiu | Female | +----+----------+--------+ 6 rows in set (0.005 sec)对其进行创建视图, 结果为:

当视图创建后, 当前数据库内将会存在一张新表(视图);
-
-
修改视图
通常对视图进行
CURD操作时与正常表无异, 但在上文中, 我们提到, 当修改视图数据时, 原表会受影响, 而当原表数据进行修改时, 同样会影响视图;
可以看到, 当对视图进行
UPDATE操作时, 原表中的数据一样会受影响;相反也是如此, 当对原表进行修改时, 修改同样会映射到视图中;

-
视图的删除
DROP VIEW view_name;该语句与对表的语句类似, 只不过这里的删除对象不是表而是视图, 因此采用
DROP VIEW;
3 视图的规则限制
-
视图与表一样, 需要唯一命名, 不能出现同名视图或表;

-
一张表可以存在无数目限制的视图, 但需要考虑复杂查询为视图之后的性能影响;
-
视图无法添加索引, 也不能有关联的触发器或者默认值;
-
视图可以提高安全性, 但必须有足够的访问权限;
-
创建视图时可以建立
ORDER BY规则, 但若是在视图中进行ORDER BY查询, 那么原有的ORDER BY将被覆盖; -
视图可以与表一起使用;