MySQL笔记三 视图

8 篇文章 0 订阅
7 篇文章 0 订阅

3 视图

视图是从一个或多个表中导出来的表,是一种虚拟存在的表。视图可以使用户的操作更方便,而且可以保障数据库系统的安全性。视图是虚拟表,是从数据库中一个或多个表中导出的表。数据库中只存放了表的定义而并没有存放视图中的数据。这些数据还存放在原来的表中。使用视图查询数据时,数据库系统会从原来的表中取出对应的数据。因此,视图中的数据依赖于原来的表中的数据。一旦表中的数据发生改变,显示在视图中的数据也会发生改变。

如果经常需要从多个表中查询指定字段的数据,可以在这些表上建立一个视图。通过这个视图显示这些字段的数据。如果表中修改了与视图相关的字段的名称,可以通过修改视图来解决可能引起的问题。

3.1 视图的作用

视图是在原有的表或视图的基础上重新定义的虚拟表,这可从原有的表上选取对用户有用的信息,而对用户没用或者用户没有权限了解的信息可以直接屏蔽掉。这样做可以简化应用,也保证了系统的安全,起着类似于筛选的作用。视图作用可归纳为以下几点:

 使操作简单化

视图需要达到的目的就是所见即所需。也即是说,从视图看到的信息就是所需要了解的信息。视图可以简化对数据的操作。

 增加数据的安全性

通过视图,用户只能查询和修改指定的数据。指定数据以外的信息,用户根本接触不到。数据库授权命令可以限制用户的操作权限,但不能限制到特定的行和列上。使用视图后,可以简单方便地将用户的权限限制到特定的行和列上。这样既可以保证敏感信息不会被没有权限的人看到,可以保证一些机密信息的安全。

 提高表的逻辑独立性

视图可以屏蔽原有表结构变化带来的影响。如果原有表中增加或删除未被引用的列,对视图不会造成影响。同样,如果修改了表中的某些列可以使用视图来解决这些列带来的影响。

3.2 创建视图的语法

创建视图是通过CREATE VIEW语句完成的,语法形式如下:

CREATE [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]

  VIEW 视图名 [(属性清单)]

  AS SELECT 语句

  [WITH [CASCADED|LOCAL] CHECK OPTION];

其中,ALGORITHM是可选参数,表示视图选择的算法;视图名表示要创建的视图的名称;属性清单是可选参数,其指定了视图中各个属性的名字,默认情况下与SELECT语句中查询的属性相同;SELECT语句参数是一个完整的查询语句,表示从某个表中查出某些满足条件的记录,将这些记录导入视图中;WITH CHECK OPTION是可选参数,表示更新视图时要保证在该视图的权限范围内。

ALGORITHM包含三个选型UNDEFINED、MERGE和TEMPTABLE。其中,UNDEFINED选项表示MySQL将自动选择所要使用的算法;MERGE选项表示将使用视图的语句和视图定义结合起来,使得视图定义的某一部分取代语句的对应部分;TEMPTABLE选项表示将视图的结果存入临时表中,然后使用临时表执行语句。

CASCADED是可选参数,表示更新视图时要满足所有相关视图和表的条件,该参数为默认值;LOCAL表示更新视图时,要满足该视图本身定义的条件即可。

TIPS:使用CREATE VIEW创建视图时,最好加上WITH CHECK OPTION 参数,而且最好加上CASCADED参数。这样,从视图上派生出来新视图后,更新新视图需要考虑其父视图的约束条件。这种方式比较严格,可以保证数据的安全性。

创建视图时,需要具有CREATE VIEW权限。同时应具有查询涉及的列的SELECT权限。

可在一个表上创建视图,也可以在多个表上创建视图。

3.3 查看视图

查看视图必须要有SHOW VIEW的权限。查看视图的方法包括:DESCRIBE语句、SHOW TABLE STATUS语句、SHOW CREATE VIEW语句和information_schema数据库下的views表等。

 查看视图基本信息

查看视图基本信息可使用如下两个语句:

DESCRIBE 视图名;

SHOW TABLE STATUS LIKE ‘视图名’;

 查看视图的详细信息

查看视图的详细信息可以使用下面的两种语法:

SHOW CREATE VIEW 视图名;

SELECT * FROM information_schema.views;

其中,*表示查询所有的列的信息;information_schema.views表示information_schema数据库下面的views表。通常情况下使用SHOW CREATE VIEW查看视图的详细信息。

3.4 修改视图

修改视图是指修改数据库中已经存在的表的定义。当基本表的字段发生变化时,可以通过修改视图来保持视图和基本表之间的一致。MySQL通过ALTER语句和CREATE OR REPLACE VIEW语句来修改视图。

 CREATE OR REPLACE VIEW语句修改视图

在视图已经存在的情况下,对视图进行修改;视图不存在时可以创建视图。语法如下:

CREATE OR REPLACE [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]

VIEW 视图名 [(属性清单)]

AS SELECT 语句

[WITH [CASCADED|LOCAL] CHECK OPTION]

此处的所有参数均和创建视图时的参数的含义完全一致。

 ALTER语句修改视图

ALTER语句修改视图的语法如下:

ALTER [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]

VIEW 视图名 [(属性清单)]

AS SELECT 语句

[WITH [CASCADED|LOCAL] CHECK OPTION]

同上,这里所有的参数都和创建视图时的参数一样。

3.5 更新视图

更新视图是指通过视图来插入(INSERT)、更新(UPDATE)和删除(DELETE)表中的数据。因为视图是一个虚拟表,表中没有数据。通过视图更新时,都是转换到基本表中来更新。更新视图时,只能更新权限范围内的数据。超出了范围就不能更新。

和基本表通过insert、update和delete等语句更新数据相同,只不过将表更换成了视图。

3.6 删除视图

删除视图是指删除数据库中已存在的视图。删除视图时,只能删除视图的定义,不会删除数据。MySQL中通过DROP VIEW语句来删除视图。但是,用户必须拥有DROP权限。

对需要删除的视图使用DROP VIEW语句进行删除,基本形式如下:

DROP VIEW [IF EXISTS] 视图名列表 [RESTRICT|CASCADED]

其中,IF EXISTS参数指判断视图的存在,如果存在则执行,不存在则不执行;“视图名列表”参数表示要删除的视图的名称的列表,各个视图名称之间用逗号分隔。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值