MySQL基础之第8章 视图
8.1、视图简介
视图由数据库中的一个表,视图或多个表,视图导出的虚拟表。其作用是方便用户对数据的操作。
8.2、创建视图
必须要有CREATE VIEW 和 SELECT 权限
SELECT select_priv, create_view_priv from mysql.user WHERE user='root';
CREATE [ ALGORITHM = { UNDEFINED | MERGE |TEMPTABLE } ]
VIEW 视图名 [ ( 属性清单 ) ]
AS SELECT语句
[ WITH [ CASCADED | LOCAL ] CHECK OPTION ] ;
ALGORITHM参数表示视图选择的算法
UNDEFINED 未指定,自动选择
MERGE 表示将使用视图的语句和视图定义合并起来,使得视图定义的某一部分取代语句的对应部分
TEMPTABLE 表示将视图的结果存入临时表,然后使用临时表执行语句
LOCAL参数表示更新视图时要满足该视图本身定义的条件即可;
CASCADED参数表示更新视图时要满足所有相关视图和表的条件,默认值。
使用CREATE VIEW语句创建视图时,最好加上WITH CHECK OPTION参数和CASCADED参数。这样,从视图上派生出来的新视图后,更新新视图需要考虑其父视图的约束条件。这种方式比较严格,可以保证数据的安全性。
create viewdepartment_view1 as
select * from department;
create viewdepartment_view2 (name, function, localtion) as
select d_name, function, address fromdepartment;
createalgorithm=merge view worker_view1(name,department, sex, age, address) as
select name, department.d_name,sex,2009-birthday, address from worker, department whereworker.d_id=department.d_id
with local check option;
8.3、查看视图
必须要有SHOW VIEW的权限
DESCRIBE|DESC 视图名 ;
SHOW TABLE STATUS LIKE ‘视图名’ ;
SHOW CREATE VIEW 视图名;
SELECT * FROM information_schema.views ;
8.4、修改视图
CREATE OR REPLACE | ALTER [ ALGORITHM = { UNDEFINED | MERGE | TEMPTABLE } ]
VIEW 视图名 [ ( 属性清单 ) ]
AS SELECT语句
[ WITH [ CASCADED | LOCAL ] CHECK OPTION ] ;
语法和CREATE VIEW基本一样
8.5、更新视图
更新视图是指通过视图来插入(INSERT)、更新(UPDATE)和删除(DELETE)表中的数据。因为是视图是一个虚拟表,其中没有数据。通过视图更新时,都是转换到基本表来更新。更新视图时,只能更新权限范围内的数据。超出了范围,就不能更新。
原则:尽量不要更新视图
语法和UPDATE语法一样
哪些视图更新不了:
1、视图中包含SUM(),COUNT()等聚焦函数的
2、视图中包含UNION、UNION ALL、DISTINCT、GROUPBY、HAVING等关键字
3、常量视图
CREATEVIEW view_now AS SELECT NOW()
4、视图中包含子查询
5、由不可更新的视图导出的视图
6、创建视图时ALGORITHM为TEMPTABLE类型
7、视图对应的表上存在没有默认值的列,而且该列没有包含在视图里
8、WITH[CASCADED|LOCAL] CHECK OPTION也将决定视图是否可以更新
LOCAL参数表示更新视图时要满足该视图本身定义的条件即可;
CASCADED参数表示更新视图时要满足所有相关视图和表的条件,默认值。
8.6、删除视图
删除视图时,只能删除视图的定义,不会删除数据
用户必须拥有DROP权限
DROP VIEW [IF EXISTS] 视图名列表 [ RESTRICT | CASCADE]
MySQL基础之第8章 视图的更多相关文章
- MySQL基础笔记(五) 视图
一.什么是视图 视图是一个虚拟表.也就是说,视图在外观和行为上都类似于表,但它不需要实际的物理存储,只保存了视图定义(查询语句). 视图由select查询所定义 -- 当创建一个视图时,实际上是在数据 ...
- MySQL基础之第7章 索引
第7章 索引 MySQL中,所有的数据类型都可以被索引,包括普通索引,唯一性索引,全文索引,单列索引,多列索引和空间索引等. 7.1.索引简介 7.1.1.索引的含义和特点 BTREE索引,HASH索 ...
- MySQL基础(二):视图、触发器、函数、事务、存储过程
一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. 视图和上一篇学到的临时表搜索类似. ...
- mysql基础教程(四)-----事务、视图、存储过程和函数、流程控制
事务 概念 事务由单独单元的一个或多个SQL语句组成,在这 个单元中,每个MySQL语句是相互依赖的.而整个单独单 元作为一个不可分割的整体,如果单元中某条SQL语句一 旦执行失败或产生错误,整个单元 ...
- MySQL基础之第18章 性能优化
18.1.优化简介 SHOW STATUS LIKE ‘value’;connections 连接数uptime 启动 ...
- MySQL基础之第17章 MySQL日志
17.1.日志简介 二进制日志错误日志通用查询日志慢查询日志 17.2.二进制日志 二进制日志也叫作变更日志(update log),主要用于记录数据库的变化情况.通过二进制日志可以查询MySQL数据 ...
- MySQL基础之第16章 数据备份与还原
16.1.数据备份 16.1.1.使用 mysqldump 命令备份 mysqldump [OPTIONS] database [tables]mysqldump [OPTIONS] --databa ...
- MySQL基础之第15章 MySQL用户管理
15.2.账户管理 15.2.1.登录和退出MySQL服务器 mysql –hhostname|hostIP –P port –u username –p[password] databaseName ...
- MySQL基础之第14章 存储过程和函数
避免编写重复的语句 安全性可控 执行效率高 14.1.创建存储过程和函数 14.1.1.创建存储过程 CREATE PROCEDUREsp_name ([proc_parameter[,...]]) ...
随机推荐
- Linux重启inotify配置max_user_watches无效被恢复默认值8192的正确修改方法
Linux下Rsync+inotify-tools实现数据实时同步中有一个重要的配置就是设置Inotify的max_user_watches值,如果不设置,当遇到大量文件的时候就会出现出错的情况. 一 ...
- WPF / Win Form:多线程去修改或访问UI线程数据的方法( winform 跨线程访问UI控件 )
WPF:谈谈各种多线程去修改或访问UI线程数据的方法http://www.cnblogs.com/mgen/archive/2012/03/10/2389509.html 子线程非法访问UI线程的数据 ...
- Android 近百个项目的源代码
Android 近百个项目的源代码 Android PDF 阅读器 http://sourceforge.net/projects/andpdf/files/个人记账工具 OnMyMeans http ...
- MySQL 当记录不存在时插入(insert if not exists)
在 MySQL 中,插入(insert)一条记录很简单,但是一些特殊应用,在插入记录前,需要检查这条记录是否已经存在,只有当记录不存在时才执行插入操作,本文介绍的就是这个问题的解决方案.问题:我创建了 ...
- LintCode 字符串比较
比较两个字符串A和B,确定A中是否包含B中所有的字符.字符串A和B中的字符都是大写字母: 给出 A = "ABCD" B = "AABC", 返回 false ...
- 【Linux高频命令专题(18)】tail
概述 tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但 ...
- 自旋锁spin_lock和raw_spin_lock
自旋锁spin_lock和raw_spin_lock Linux内核spin_lock.spin_lock_irq 和 spin_lock_irqsave 分析 http://blog.csdn.ne ...
- mysql建表时拆分出常用字段和不常用字段
一对一 一张表的一条记录一定只能与另外一张表的一条记录进行对应,反之亦然. 学生表:姓名,性别,年龄,身高,体重,籍贯,家庭住址,紧急联系人 其中姓名.性别.年龄.身高,体重属于常用数据,但是籍贯.住 ...
- 被称为同步神器的 BTSync,你可以怎么用?
在这高速运作的信息化时代,使用云端来衔接工作和生活的点滴已是寻常事.可你是否曾扪心自问过:用各大云端备份自己的信息资料,真的安全放心吗? 毫不夸张的说,其实恶意代码和漏洞早已和你如影随形.你甚至都不用 ...
- Failed to initialize monitor Thread: Unable to establish loopback connection解决方法
原因一: android中出现该异常的原因,是pid产生了冲突,将服务中的windows Firewall 服务停用就行了 原因二: http://stackoverflow.com/question ...