视图

1.视图概念
数据库中的视图是一个虚拟的表,视图包含一系列带有名称的行和列数据,行和列数据来自由定义视图查询所引用的表,并且在引用视图时动态生成。
视图是从数据库中一个或多个表中导出来的表,视图还可以从已经存在的视图上定义。
2.视图的含义
在定义完视图后,他就会存储在数据库中,与其对应的数据不像数据库中真实存在的表一样再存储一份,通过视图可以查看到的数据只是存放在基本表中的数据。视图也可以进行修改,查询,删除操作。当对视图的数据进行修改时,相应的基本表的数据也要发生变化;同时,如果基本表的数据发生了变化,对应的视图也会发生相应的变化。
3.视图的作用
在与直接从数据表中读取数据相比,视图具有下面的优点:
(1)简单
因为看到的东西就是需要的,它简化了用户对于数据的理解而且也简化了操作,被经常用来做查询的可以定义为视图,这样就会很方便
(2)安全
通过视图的话,用户只可以对看到的数据进行修改和查询。数据库中的其他的数据看不到也读不到。数据库授权命令可以使用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定的行和列上,通过视图,用户可以被限制在数据的不同的子集上;使用权限可以被限制在基表的行子集,列子集,行和列子集,数据的汇总上;也可以限制在多个基表的连接所限定的行上;也可以被限制在另一个视图的一个子集上,或者是一些视图和基表合并后的子集上。
(3)逻辑数据独立
视图可帮助用户屏蔽真实表结构带来的变化。
3.视图的创建
(1)视图的创建时基于SELECT语句和已经存在的数据表上面。
(2)创建视图的语法:

CREATE [OR REPLACE][ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]VIEW view_name[(column_list)]
AS SELECT_statement [WITH[CASCADED|LOCAL|CHECK OPTION]]

参数解释:CREATE:创建新的视图;REPLACE:替换已经存在的视图
ALGORITHM:视图选择的算法,有三个取值:
UNDEFINED:mysql自动选择算法
MERGE:使用的视图语句与视图定义合并起来,使得视图定义的某一部分取代语句对应的部分。
TEMPTABLE:将视图的结果存入到零时表,然后用零时表来执行语句。
view_name:视图的名称
column_list:属性列
SELECT_statement表示SELECT语句
WITH[CASCADED|LOCAL]CHECK OPTION:表示视图在更新时保证在视图的权限范围之内。其中CASCADED是默认值,表示更新视图时要满足所有相关视图和表的条件;LOCAL表示更新视图时满足该视图本身定义的条件。
视图是属于数据库的,在默认情况下,将当前数据库创建新视图,要想在给定的数据库中明确创建视图,创建视图应该将名称指定为db_name.view_name
4.查看视图
(1)DESCRIBE/DESC 视图名
(2)查看视图基本信息SHOW TABLE STATUS LIKE'视图名'\G
(3)查看视图详细信息SHOW CREATE VIEW 视图名\G或者通过information_schema数据库下的view表中查看SELECT * FROM information_schema.views;
5.修改视图

CREATE[OR REPLACE][ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]
VIEW view_name[(column_list)]
AS SELECT_statement
[WITH[CASCADED|LOCAL]CHECK OPTION]
CREATE[ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]
VIEW view_name[(column_list)]
AS SELECT_statement
[WITH[CASCADED|LOCAL]CHECK OPTION]

6.更新视图
更新视图是指通过视图来插入,更新,删除表中的数据、
当视图中包含下面的内容的时候,视图的更新操作是不能被执行的:
(1)视图中不包含基表中被定义为非空的列
(2)在定义视图的SELECT语句后的字段列中使用了数学表达式
(3)在定义视图的SELECT语句后的字段列表中使用了聚合函数
(4)在定义视图的SELECT语句中使用了DISTINCT,UNION,TOP,GROUP BY,HAVING其中之一的子句。
7.删除视图

DROP VIEW[IF EXISTS]
view_name[,view_name]...
[RESTRICT|CASCADE]

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值