MySQL视图
2021/7/16 2:06:11
本文主要是介绍MySQL视图,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
MySQL从5.0.1版本开始提供视图功能。
视图(View)是一种虚拟存在的表,对于使用视图的用户来说基本上是透明的。视图并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成。
视图相对于普通表的优势主要表现在:
-
简单
使用视图的用户完全不需要关心后面对应的表的结构、关联条件、和筛选条件。
-
安全
使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个行某个列,而通过视图可以轻松实现。
-
数据独立
一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加列对视图没有影响;源表修改列名,可通过修改视图来解决,不会对访问者造成影响。
视图的操作包括创建、修改、删除及查看视图定义。
创建视图
创建视图需要有CREATE VIEW的权限,并且对于查询涉及到的列有SELECT权限。如果使用CREATE OR REPLACE,那么哈需要有该视图的DROP权限。
创建视图的语法为:
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED|MERGE|TEMPTABLE}] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION]
eg:
mysql> SHOW tables; mysql> create view v_demo as select * from demo; mysql> show tables; mysql> desc v_demo;
MySQL视图的定义有一些限制,在from子句中不能有子查询,这和其他数据库是不同的。如果视图是从其他数据库迁移过来的,那么,可以将自查徐你的内容先定义一个视图,然后对该视图在创建视图就可以实现类似功能。
视图的可更新性和视图中查询的定义有关系,如下类型的的视图是不可更新的。
- 包含以下关键字的SQL语句:聚合函数(
SUM
MIN
MAX
COUNT
等)、DISTINCT、GROUP BY、HAVING、UNION或者NION ALL。 - 常量视图(create view v_pi as select 3.1415926 as pi from dual;)。
- SELECT中包含子查询。
- JOIN。
- FROM一个不能更新的视图。
- WHERE子句的子查询引用了FROM子句中的表。
修改视图
修改视图的语法为:
ALTER [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED|LOCAL] CHEDK OPTION];
删除视图
用户可以一次删除一个或者多个视图,前提是必须有该视图的DROP权限。
删除视图的语法如下:
DROP VIEW [IF EXISTS] view_name [,view_name...] [RESTRICT|CASCADE];
查看视图
从MySQL5.1版本开始,使用SHOW TABLES
命令不仅可以显示表的名字,同时也会显示视图的名字,不存在单独显示视图的SHOW VIEW
命令。
这篇关于MySQL视图的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程
- 2024-11-01部署MySQL集群学习:新手入门教程
- 2024-11-01部署MySQL集群入门:新手必读指南
- 2024-10-23BinLog入门:新手必读的MySQL二进制日志指南
- 2024-10-23Binlog入门:MySQL数据库的日志管理指南
- 2024-10-22MySQL数据库入门教程:从安装到基本操作
- 2024-10-22MySQL读写分离入门教程:轻松实现数据库性能提升