笔记-7:mysql视图
1.视图概述
2.创建视图
CREATE [OR REPLACE] VIEW view_name [(column_list)]
AS SELECT_statement
[WITH { CASCADED | LOCAL} CHECK OPTION] # OR REPLACE:可选项,用于指定OR REPLACE子句,该语句用于替换数据库中已存在的同名视图,但需要该视图上具有DROP权限。
# view_name:指定视图名称。视图名称在数据库中必须唯一。
# column_list:为每个列指定明确的名称。
# SELECT_statement:指定创建视图的SELECT语句。
# WITH CHECK OPTION:可选项,用于指定在可更新视图上所进行的修改都需要符合select_statement中所指定的限制条件。
# 在数据库中创建视图v_student,要求该视图包含客户信息表tb_student中所有男生的信息,并且保证今后对该视图数据的修改都必须符合学生性别为男性这个条件。
create or replace VIEW v_student as select * from tb_student where sex='男' WITH CHECK OPTION;
# 创建视图v_score_avgs,要求视图包含表tb_score中所有学生的学号和平均成绩,并按学号studentNo进行排序。
create or replace VIEW v_score_avgs as select studentNo,avg(score) from tb_score group by studentNo;
# 使用WITH CHECK OPTION子句创建视图v_score,要求该视图包含表tb_score中所有score<90的学生学号、课程号、成绩信息。
create VIEW v_score as select * from tb_score where score<90 WITH CHECK OPTION;
3.删除视图
# 语法结构:
drop VIEW [if exists] view_name;
# 删除视图v_score、v_score_local、v_score_cascaded
drop VIEW if exists v_score,v_score_local,v_score_cascaded;
4.修改视图定义
alter VIEW view_name [(column_list)] as SELECT_statement [WITH [CASCADED | LOCAL] CHECK OPTION];
# 使用ALTER VIEW语句修改视图v_student的定义,要求该视图包含tb_student中性别为‘男’,民族为‘汉’的学生的学号、姓名、所属班级,并且要求保证今后对该视图数据的修改都必须符合学生性别为‘男’,民族为‘汉’这个条件。
alter VIEW v_student (studentNo,studentName,classNo) as select studentNo,studentName,classNo from tb_student where sex='男' and nation='汉' WITH CHECK OPTION;
5.查看视图定义
# 语法结构:
SHOW CREATE VIEW view_name;
# 查看数据库v_student的定义
show create VIEW v_student;
6.更新视图数据
6.1 使用insert语句通过视图向基础表插入数据
# 向视图v_student中插入一条记录:('','周明','男','1997-08-16','湖北','汉','IS1401')
insert into v_student values ('','周明','男','1997-08-16','湖北','汉','IS1401');
select * from v_student;
6.2 使用update语句通过视图修改基础表的数据
# 将视图v_student中所有学生的native列更新为"湖北"
update v_student set native='湖北';
6.3 使用delete语句通过视图删除基础表的数据
# 删除视图v_student中姓名为'周明'的学生信息
delete from v_student where studentName='周明'; # 对于依赖多个基础表的视图,不能使用DELETE语句
当视图包含以下任何一种SQL语句结构时,该视图不可更新。
- 聚合函数
- DISTINCT关键字
- CROUP BY子句
- ORDER BY子句
- HAVING子句
- UNION运算符
- 位于选择列表中的子查询
- FROM子句中包含多个数
- SELECT 语句中引用了不可更新视图
- WHERE子句中的子查询,引用FROM子句中的表
7.使用视图需要注意的地方
- 创建视图必须具有足够的访问权限
- 对于可以创建的视图数目没有限制
- 视图可以嵌套
- 视图不能索引,不能有关联的触发器、默认值
- order by子句可以用在视图中。但如果从该视图检索数据的select子句中也具有order by子句,则会被覆盖
笔记-7:mysql视图的更多相关文章
- MYSQL视图的学习笔记
MYSQL视图的学习笔记,学至Tarena金牌讲师,金色晨曦科技公司技术总监沙利穆 课程笔记的综合. 视图及图形化工具 1. 视图的定义 视图就是从一个或多个表中,导出来的表,是一个虚 ...
- MYSQL进阶学习笔记六:MySQL视图的创建,理解及管理!(视频序号:进阶_14,15)
知识点七:MySQL视图的创建(14) 视图的定义: 什么是视图: 视图数由查询结果形成的一张虚拟的表. 什么时候要用到视图? 如果某个查询结果出现的非常频繁,也就是,要经常拿这个查询结果来做子查询. ...
- MySQL视图更新
昨天在写美团2019秋招笔试题的时候遇到了关于视图是否能更新的问题,突然感觉这个问题之前复习的时候重点关注过,但是却又想不全.今天特地搜了一些资料总结一下.本文主要说明视图的更新限制,如需关于视图的更 ...
- mysql数据库从删库到跑路之mysql:视图、触发器、事务、存储过程、函数
mysql:视图.触发器.事务.存储过程.函数 一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果 ...
- 【笔记】MySQL的基础学习(二)
[笔记]MySQL的基础学习(二) MySQL 老男孩 一 视图 视图其实就是给表起个别名 1.创建视图 格式:CREATE VIEW 视图名称 AS SQL语句 CREATE VIEW v1 AS ...
- Mysql 视图 游标 触发器 存储过程 事务
Mysql 视图 触发器 存储过程 游标 游标是从数据表中提取出来的数据,以临时表的形式存放在内存中,在游标中有一个数据指针,在初始状态下指向的是首记录,利用fetch语句可以移动该指针,从而对游标中 ...
- Mysql视图的作用及其性能分析
定义:视图是从一个或几个基本表导出的表,它与基本表不同,是一个虚表. 作用: 1.简化操作,不用进行多表查询. 2.当不同种类的用用户共享同一个数据库时,非常灵活,(用户以不同的 方式看待同一数据. ...
- 深入解析MySQL视图view
阅读目录---深入解析MySQL视图view 创建视图 查看视图 视图的更改 create or replace view alter DML drop 使用with check option约束 嵌 ...
- MySQL视图view/存储过程和函数的使用
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p. ...
- 一个MySQL视图的优化过程
1.需要优化的sql 最近做一个基于.net mvc和MySQL的仓储系统的优化工作,遇到了一个执行特别慢的SQL语句,经过一番折腾,终于搞定啦,分享一下过程.问题就是下面这个家伙: create o ...
随机推荐
- ros topic 命令
#查看topic频率rostopic hz /xxx_imu_driver/imu #查看topic信息rostopic info /xxx_imu_driver/imu #查看topic数据rost ...
- linux搭建代理服务器+蚁剑配置客户端代理
一:linux搭建代理服务器 0x00 介绍 关于搭建代理服务器的方法,我也是刚刚接触,从网上找了一些能够行得通的方法来给大家做个分享: 这里我用的是Tinyproxy作为代理服务软件.这个东西很小, ...
- pimpleFoam求解器 vs simpleFoam求解器 vs pisoFoam求解器 vs icoFoam
翻译自:CFD-online 帖子地址:http://www.cfd-online.com/Forums/openfoam-solving/68072-pimplefoam-vs-simplefoam ...
- Facebook开源时间序列内存数据库Beringei,追求极致压缩率——如果是int根据大多数时间序列中的值与相邻数据点相比并没有显著的变化,只要使用XOR将当前值与先前值进行比较,然后存储发生变化的比特。最终,该算法将整个数据集至少压缩了90%
转自:http://www.infoq.com/cn/news/2017/02/Facebook-Beringei 2017年2月3日,Facebook宣布将开源他们的高性能时序数据存储引擎Berin ...
- postgresql 计算时间差的秒数、天数
处理时间时用到了,记录一下. 计算时间差天数 select extract(day FROM (age('2017-12-10'::date , '2017-12-01'::date))); 计算时间 ...
- Qtcreator远程调试出现“The selected build of GDB does not support Python scripting.It cannot be used .."
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/aristolto/article/details/77370853 之前使用的是Qt4.7后来换 ...
- CNCF基金会的Certified Kubernetes Administrator认证考试计划
关于CKA考试 CKA(Certified Kubernetes Administrator)是CNCF基金会(Cloud Native Computing Foundation)官方推出的Kuber ...
- pyecharts绘画优美图形
常用图形:柱形图-折线图-饼图-散点图 from pyecharts import Line, Bar, Pie, EffectScatter # 数据 attr =["衬衫", ...
- 安卓模拟器Android SDK 4.0.3 R2安装完整图文教程
在最新的Android 4.0.3 R2模拟器中,已经加入了GPU支持,可以支持OpenGL ES 2.0标准,让开发者可以借助模拟器来测试自己的OpenGL游戏.在去年新增了摄像头支持之后,现在的新 ...
- 项目中常用的19条MySQL优化技巧
原文:https://segmentfault.com/a/1190000012155267 声明一下:下面的优化方案都是基于 “ Mysql-索引-BTree类型 ” 的 一.EXPLAIN 做My ...