11.Mysql视图
11.视图
11.1 什么是视图
视图view是一张虚拟表,它不存储数据,数据仍在表里,视图由一条查询表的select语句创建,视图只存储select语句。
可以将复杂的查询语句封装成视图,用户可以从视图中查询,以简化SQL编写;
视图中的数据只能查看,不能增删改,可用于权限管理;
屏蔽底层数据结构,对表的部分修改(新增列,修改列类型等)不影响视图的结构,不会对用户和应用程序产生影响。
11.2 视图操作
11.2.1 创建或者修改视图
创建视图语法:
create or replace [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]
view view_name [(column_list)]
as select_statement
[WITH [CASCADED|LOCAL] CHECK OPTION]
修改视图语法:
alter [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]
view view_name [(column_list)]
as select_statement
[WITH [CASCADED|LOCAL] CHECK OPTION]
说明:
创建视图需要create view权限和drop view权限;
MySQL视图定义中From后不能使用子查询;
[WITH [CASCADED|LOCAL] CHECK OPTION] 指将视图数据更新为不满足视图条件时的设置;
LOCAL只要满足本视图的条件就可以更新;
CASCADED必须满足所有针对该视图的所有视图的条件才可以更新,默认CASCADED。
视图更新限制,含有下列关键字的视图不能做增删改:
聚合函数(sum\avg\max\min\count),去重distinct,分组group by ...having,合并union/union all;
常量视图;
连接join或子查询;
from一个不能更新的视图;
where子句的子查询引用了from子句中的表。
例子1:测试[WITH [CASCADED|LOCAL] CHECK OPTION]对视图更新的限制
create or replace view vw_emp as select * from emp where sal<3000;
create or replace view vw_emp_1 as select * from vw_emp where sal>1500 WITH LOCAL CHECK OPTION;
create or replace view vw_emp_2 as select * from vw_emp where sal>1500 WITH CASCADED CHECK OPTION;
select * from vw_emp_1;
select * from vw_emp_2;
update vw_emp_1 set sal=sal+1000 where empno=7566; -- ok
update vw_emp_2 set sal=sal+1000 where empno=7698; -- rror Code: 1369. CHECK OPTION failed 'scott.vw_emp_2'
例子2:不能做增删改的视图
create or replace view vw_emp_dname as select *,(select dname from dept where deptno=emp.deptno) dname from emp;
create or replace view vw_emp_dept as select emp.*,dname,loc from emp,dept where emp.deptno=dept.deptno;
11.2.2 删除视图
删除视图语法:
drop view [if exists] view_name,... [RESTRICT|CASCADE];
说明:
删除视图需要drop view权限;
例子:
drop view vw_emp_2;
11.2.3 查看视图
show tables; -- 既可以查看表,也可以查看视图。
show table status [from db_name] [like 'view_name']; -- 查看视图详细的状态信息
show create view view_name; -- 查看视图的定义
批量查看视图,则可以通过数据字典information_schema.views
select * from information_schema.views;
例子:
show table status like 'vw_emp_dept';
show create view vw_emp_dept;
-- 'CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vw_emp_dept` AS select `emp`.`EMPNO` AS `EMPNO`,`emp`.`ENAME` AS `ENAME`,`emp`.`JOB` AS `JOB`,`emp`.`MGR` AS `MGR`,`emp`.`HIREDATE` AS `HIREDATE`,`emp`.`SAL` AS `SAL`,`emp`.`COMM` AS `COMM`,`emp`.`DEPTNO` AS `DEPTNO`,`dept`.`DNAME` AS `dname`,`dept`.`LOC` AS `loc` from (`emp` join `dept`) where (`emp`.`DEPTNO` = `dept`.`DEPTNO`)'
select * from information_schema.views where table_schema='scott';
11.3 小结
11.Mysql视图的更多相关文章
- Mysql视图的作用及其性能分析
定义:视图是从一个或几个基本表导出的表,它与基本表不同,是一个虚表. 作用: 1.简化操作,不用进行多表查询. 2.当不同种类的用用户共享同一个数据库时,非常灵活,(用户以不同的 方式看待同一数据. ...
- mysql数据库从删库到跑路之mysql:视图、触发器、事务、存储过程、函数
mysql:视图.触发器.事务.存储过程.函数 一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果 ...
- MYSQL进阶学习笔记六:MySQL视图的创建,理解及管理!(视频序号:进阶_14,15)
知识点七:MySQL视图的创建(14) 视图的定义: 什么是视图: 视图数由查询结果形成的一张虚拟的表. 什么时候要用到视图? 如果某个查询结果出现的非常频繁,也就是,要经常拿这个查询结果来做子查询. ...
- mysql 视图 触发器 存储过程 函数事务 索引
mysql 视图 触发器 存储过程 函数事务 索引 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当 ...
- mysql视图初探
mysql视图初探 官方例子如下,从官方的例子就可以看出来视图就是提供一种快捷查询.用视图来查询一些常用的结果. mysql> help create view; Name: 'CREATE V ...
- 2020重新出发,MySql基础,MySql视图&索引&存储过程&触发器
@ 目录 视图是什么 视图的优点 1) 定制用户数据,聚焦特定的数据 2) 简化数据操作 3) 提高数据的安全性 4) 共享所需数据 5) 更改数据格式 6) 重用 SQL 语句 MySQL创建视图 ...
- Mysql 视图 游标 触发器 存储过程 事务
Mysql 视图 触发器 存储过程 游标 游标是从数据表中提取出来的数据,以临时表的形式存放在内存中,在游标中有一个数据指针,在初始状态下指向的是首记录,利用fetch语句可以移动该指针,从而对游标中 ...
- MYSQL视图的学习笔记
MYSQL视图的学习笔记,学至Tarena金牌讲师,金色晨曦科技公司技术总监沙利穆 课程笔记的综合. 视图及图形化工具 1. 视图的定义 视图就是从一个或多个表中,导出来的表,是一个虚 ...
- 深入解析MySQL视图view
阅读目录---深入解析MySQL视图view 创建视图 查看视图 视图的更改 create or replace view alter DML drop 使用with check option约束 嵌 ...
随机推荐
- javaweb 学习系列【转】
http://www.cnblogs.com/xdp-gacl/category/574705.html jsp指令 http://www.cnblogs.com/huiyuantang/p/5332 ...
- ESET官方下载地址
官方远程下载 ESET NOD32 Antivirus(32位) ESET NOD32 Antivirus(64位) ESET Smart Security(32位) ESET Smart Secur ...
- kafka 清除topic数据脚本
原 kafka 清除topic数据脚本 2018年07月25日 16:57:13 pete1223 阅读数:1028 #!/bin/sh param=$1 echo " ...
- Ubuntu系统查看mongo得慢日志,及一些操作
摘要 在MySQL中,慢查询日志是经常作为我们优化查询的依据,那在MongoDB中是否有类似的功能呢?答案是肯定的,那就是开启Profiling功能.该工具在运行的实例上收集有关MongoDB的写操作 ...
- 目前为止最全的微信小程序项目实例
https://blog.csdn.net/zuoliangzhu/article/details/53862576#t1
- sql注入(一)
SELECT * FROM users WHERE user='uname' AND password='pass' SELECT * FROM users WHERE user='name' AND ...
- day17 正则表达式 re模块和hashlib模块
今日内容 1. re&正则表达式(*****) 注:不要将自定义文件命名为re import re re.findall(正则表达式,被匹配的字符串) 拿着正则表达式去字符串中找,返回一个列表 ...
- selenium ide界面介绍
Selenium Ide是firefox浏览器的一个插件,可以进行web的录制和回放,完成简单的自动化测试,同时可以将录制的脚本导出多种语言的脚本. 下面是Selenium Ide的界面: Base ...
- 【scrapy】爬虫中报Forbidden by robots.txt
需要在setting.py里找到ROBOTSTXT_OBEY并设为false 来源:https://blog.csdn.net/yimingsilence/article/details/521197 ...
- Winform开发框架之简易工作流设计(转自 伍华聪博客)
Winform开发框架之简易工作流设计 一讲到工作流,很多人第一反应就是这个东西很深奥,有时候又觉得离我们较为遥远,确实完善的工作流设计很多方面,而正是由于需要兼顾很多方面,一般通用的工作流都难做到尽 ...