mysql. 开发常用数据库对象. 视图

本文介绍了MySQL视图的历史、基本概念和意义,详细解释了视图如何简化查询、增强安全性和保持数据独立。此外,还提供了视图的创建、修改、删除及查看定义的方法,以及在不同版本中的限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 生成历史

mysql从5.0.1版本开始提供视图功能。

2. 基本概念和意义

视图是一种虚拟存在的表,对于使用视图的用户来说基本上是透明的。视图并不是在数据库中实际存在,行和列来自自定义视图的查询中使用的表,并且实在使用视图时动态生成的。这里可以把视图看成一个子查询,视图就代替了整个子查询语句,在使用的时候可以直接将该子查询替换为视图的名字。

视图相对于普通的表的优势:

  • 简单:使用视图的用户完全不用关心后面对应的表结构、关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集。
  • 安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个行某个列,但通过视图可以简单的实现。
  • 数据独立:一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加列对视图没有影响;源表修改列名,则可以通过修改视图来解决,不会在成对访问者的影响。

3. 视图操作

视图的操作包括:创建或修改视图、删除视图以及查看视图定义。

3.1 创建和修改视图 

创建视图需要有create view的权限,并对于查询涉及的列右select权限。如果使用create or replace或者alter修改视图,那么还需要该视图的drop权限。

创建视图的语法如下:

create [or replace] [algorithm = {undefined | merge | temptable}]
    view view_name [(column_list)]
    as select_statement
    [with [cascade | local] check option]

修改视图的语法如下:

alter [alhorithm = {undefined | merge | temptable}]
        view view_name [(column_list)]
        as select_statement
        [with [cascade | local] check option]

mysql视图的定义有一些限制,比如:在5.7.7版本之前,from关键字后面不能有子查询,者和其他数据库是不同的,如果视图是从其他数据库迁移过来的,可能需要做一下改动。

3.2 删除视图

用户可以一次删除一个或多个视图,前提是必须有该视图的drop权限。

drop view [if exist] view_name [, view_name]...[restart | cascade]

 例如:删除staff_list视图:

 

 3.3 查看视图

从mysql5.1版本开始,使用show tables命令的时候不仅显示表的名字,同时也会显示视图的名字,而不存在单独显示视图的show views命令。

同样也可以使用show table status命令,这个时候不仅可以显示表信息,同时也显示了视图信息,Comment字段标识view的表即为视图。 

 如果要查看某个视图的定义,可以使用show create view命令进行查看:

最后,通过系统表information_schema.views也可以查看视图的相关信息。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值