mysql 开发基础系列16 视图
程序员文章站
2024-02-08 12:47:58
一. 什么是视图视图是一种虚拟存在的表,行和列数据来自,定义视图的查询中使用的表,并且是在使用视图时动态生成的。优势有: 简单: 使用视图的用户完全不需要关心后面对应的表的结构,关联条件,筛选条件。 安全:使用视图的用户只能访问他们被允许查询的结果集。 数据独立: 源表增加列对视图没有影响,源表修改 ......
一. 什么是视图
视图是一种虚拟存在的表,行和列数据来自,定义视图的查询中使用的表,并且是在使用视图时动态生成的。优势有:
简单: 使用视图的用户完全不需要关心后面对应的表的结构,关联条件,筛选条件。
安全:使用视图的用户只能访问他们被允许查询的结果集。
数据独立: 源表增加列对视图没有影响,源表修改列名,则通过修改视图 对应好源表的列名来解决,不会造成对访问者的影响。
1.1 创建视图的操作
-- 创建视图 CREATE OR REPLACE VIEW view_city AS SELECT * FROM city; -- 查询视图 SELECT * FROM view_city;
1.2 修改视图
-- 修改视图 ALTER VIEW view_city AS SELECT cityname FROM city;
1.3 限制
视图一般只是用来做查询使用,如果要对视图做修改有如下限制不能更新:
包含关键字 聚合函数(sum,min,max,count等),distinct,group by , having,union ,union all。
常量视图。
select 中包含子查询。
jion。
from 一个不能更新的视图。
where 字句的子查询引用了from字句的表。
LOCAL 是只要满足本视图的条件就可以更新, CASCADED 则是必须满足所有针对该视图的所有视图的条件才可以更新, 如果没有明确是LOCAL 还是CASCADED,则默认是CASCADED,由于视图基本不做修改,这里就不在演示。
-- local与CASCADED 语法 CREATE OR REPLACE VIEW view_city AS SELECT * FROM city; -- with(local | CASCADED) CHECK OPTION;
1.4 删除视图
drop view view_city;
1.5 查看视图
-- 查看视图的定义 SHOW CREATE VIEW view_city
-- 查看视图的定义 SELECT * FROM information_schema.views WHERE table_name = 'view_city'
推荐阅读
-
mysql 开发进阶篇系列 21 磁盘I/O问题(RAID)
-
mysql 开发基础系列12 选择合适的数据类型(上)
-
PHP移动互联网开发笔记(6)MySQL数据库基础回顾_MySQL
-
精通数据库系列之入门-基础篇1_MySQL
-
mysql 开发进阶篇系列 51 权限与安全(权限表user,db详细介绍 )
-
循序渐进学.Net Core Web Api开发系列【16】:应用安全续-加密与解密
-
PHP移动互联网开发笔记(6)――MySQL数据库基础回顾_MySQL
-
mysql 开发进阶篇系列 28 数据库二进制包安装(centos系统准备)
-
mysql 开发基础系列6 数值与日期函数
-
前端开发基础之HTML--标签系列(1)_html/css_WEB-ITnose