NoteOfMySQL-08-视图

时间:2020-11-30 10:54:27   收藏:0   阅读:28

??视图是从一个表或多个表中导出的表,是一种虚拟存在的表,不占用存储空间。视图可以使用户的操作更方便,并且可以保障数据库系统安全性。

一、视图

1. 视图概述

??视图中保存的仅仅是一条select语句,其数据源自数据库表或其他视图。视图的作用类似于筛选,且不占用存储空间。

2. 视图工作机制

??当调用视图时才执行视图中的SQL语句,进行数据读取操作。视图中的内容没有存储,而是在视图被引用时才派生数据,即即时引用。这样的好处是不需要维护视图的内容。

二、视图管理

1. 创建视图

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

1.1 语法格式

create [algorithm = {undefined | merge | temptable}]
view view_name [(state1, state2...)]
as 查询语句
[with [cascaded | local] check option];

1.2 参数说明

参数 说明
algorithm undefined表示MySQL自动选择使用的算法;merge表示将使用视图的语句与视图的定义合起来,使视图定义的某部分取代语句的对应部分;temptable表示将视图的结果存入临时表,然后使用临时表执行语句
查询语句 一个完整的查询语句
cascaded、local cascaded表示更新视图时满足所有相关视图和表的条件,local表示更新视图时满足该视图本身的定义条件即可
with check option 更新视图时保证在该视图的权限范围之内

1.3 注意点

2. 删除视图

??删除视图需要具有drop权限。

drop view [if exsts] view_name[, view_name2...] [restrict | cascade];

3. 查看视图

??查看视图需要具有show view权限,查看视图指查看数据库中已经存在的视图的定义。

-- 法一
[describe | desc] view_name;
-- 法二
show table status like ‘view_name‘;
-- 法三
show create view ‘view_name‘;
-- 法四
select * from information_schema.views where table_name=‘view_name‘;

4. 修改视图

??修改视图指修改数据库中已经存在表的定义,当基本表的某些字段发生改变时们可以通过修改视图来保持视图与基本表一致。

[create or replace | alter] [algorithm = {undefined | merge | temptable}] view view_name [{state1, state2...}]
as 查询语句
[with [cascaded | local] check option];

5. 更新视图数据

??对视图的更新其实就是对表的更新,更新视图是指通过视图来插入、更新、删除表中的数据。因为视图是一个虚拟表,没有数据,视图更新都是通过转化到基本表来更新。

5.1 原则:尽量不要更新视图。

5.2 以下情况无法更新视图

原文:https://www.cnblogs.com/bpf-1024/p/14059663.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!