笔记-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 ...
随机推荐
- mysql插入数据自动生成主键uuid
DemoMapper.java //注意方法的返回值必须是void; void add(Demo demo); ============================================ ...
- GitLab安装及备份迁移数据
centos7安装GitLab 下载相应版本rpm包 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ 我此处下载9.3.6版本. # w ...
- [RK3399] 调试串口ttyS2改为普通串口
CPU:RK3399 系统:Android 7.1 串口需求量大时,会选择使用 spi 转串口,但是数据量大或者波特率较高时,传输会丢包. 调试串口 ttyS2 也可以让出来,供上层使用,下面是将 t ...
- Cesium获取经度 ,纬度,高度
实例代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...
- python文件导出exe可执行程序
开门见山的说: 1.安装pyinstaller.(windows 用pip3 Mac 用pip)在cmd中输入:pip3 install pyinstaller 2.找到你要打包的文件的目录的上一个目 ...
- 【译】Solr in Action 第二章
2.1 2.2 2.3 基本废话 2.4 基本废话
- python 设计模式之模板方法模式
1.模板方法模式定义 模板模式定义如下:定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定的步骤.子类实现的具体方法叫作基本方法,实现对 ...
- C#-片段-插入片段:Visual C#
ylbtech-C#-片段-插入片段:Visual C# 1.返回顶部 ·#if #if true #endif ·#region #region MyRegion #endregion · 2.返回 ...
- Row_Number() and Rank() in SQL
1. 数据表实例数据 2. 使用Row_Number()方法给每一行数据添加一个唯一编号, 可以按照某一列进行排序. 3. 使用Partition by Column在一个Partition内进行编号 ...
- ireport如何拼接sql?
ireport如何拼接sql ireport如何拼接sql? 解决方法: 1.ireport的sql select * from emp as e $P!{whereSQL}; 2.java代码 ...