技术标签: 算法 MySQL Database Oracle SQL
修改视图需要create view 和 delete 权限。
表和视图的命令在同一个命名空间中,所以同一个数据库不能有表名和视图名重复。
可以对其他数据库中的表建视图
视图的定义有以下的限制:
1、from子句中不能有子查询
2、select不能指向系统或者用户的变量
3、select不能指向prepared语法参数
4、定义中的表或视图必须存在
5、不能对临时表建视图,也不能建临时视图
6、视图定义中的表名必须已经存在
7、不能在触发器和视图之间建关联
ORDER BY可以用在视图定义中,但是如果访问视图的select中使用的order by,则视图定义中的ORDER BY被忽略。
语法:
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
ALGORITHM扩展了标准sql,有三个值,默认值是UNDEFINED,预算法则决定了mysql如何处理视图。
对于临时表方式,会将视图的结果放置到临时表中,然后使用临时表执行sql,这样的好处是在临时表建完之后,就会释放在原表上面的锁,这样比MERGE方式更快的释放在访问的表上的锁。
对于UNDEFINED方式,是指有系统自己决定使用临时表方式还是MERGE方式,MERGER方式更高效,且临时表方式不能更新视图的数据。
对于MERGE方式,实际上是把访问视图的SQL拼接到视图本身的sql上面。要求视图的行和表的行之间是一一对应的,如果不存在
这样的一一对应的关系,则会切换到临时表算法。
包含以下关键字的sql,不能使用merge方式:
聚合函数(sum,min,max,count等等)
distinct
group by
having
union或者union all
常量视图
另外,这些视图的纪录也是不能更新和删除的,不能更新和删除纪录的视图除了以上那些情况外,还包括:
select中包含子查询
join
from一个不能更新的视图
from一个表的子查询
算法是临时表的视图
如果视图还想要可以插入纪录,则必须满足以下条件:
视图必须包含基表没有默认值的所有字段
视图列必须是简单的对应表的列,没有在上面进一步的处理。
多于多表视图的可更新性:
首先必须是基于MERGE算法的
表连接必须是内连接
视图中只有一个单表是可以被更新的。
对于多表可更新视图,如果插入其中一个单表是可以的,删除纪录是不允许的
WITH [CASCADED | LOCAL] CHECK OPTION决定了是否允许更新数据使纪录不再满足视图的条件。
这个选项和oracle是类似的
local是只要满足本视图的条件就ok
cascade则是必须满足所有针对该表的所有视图的条件才ok。
如果没有明确是local还是cascade,则默认是cascade。
删除视图:
DROP VIEW [IF EXISTS]
view_name [, view_name] ...
[RESTRICT | CASCADE]
显示视图内容:
SHOW CREATE VIEW view_name
情景再现:在修复hadoop集群某一个datanode无法启动的问题时,搜到有一个答案说要删除hdfs-site.xml中dfs.data.dir属性所配置的目录,再重新单独启动该datanode即可; 问题就出在这个误删除上,当时是在namenode的hadoop/hdfs/目录下,然后就执行了一个可怕的命令rm -rf datarm -rf name #存储namenode永久性元
请跳转:https://blog.csdn.net/xiezhi123456/article/details/80721052
最后,ES版本更新迭代非常迅速,在增加新功能特性的同时也废弃了很多特性,最大的变化莫过于6.0版本移除了索引对多type的支持,在升级ES集群的同时请进行必要的应用改造以适配更新后的ES。使用滚动升级的方式升级集群,若进行跨越大版本的升级,可能需要重新索引在旧版本中创建的索引,有时也许需要进行多次滚动升级和重建索引才能升级到我们需要的目标版本。升级ES版本,需要同时升级ES相关的官方组件,可以使用官方提供的“交互式升级指南”获得可供参考的升级方案。高版本ES可以兼容读取上一个主版本ES中创建的索引。
本实例实现的主要功能是,将形如YYYY-MM-DD格式的数字日期转化为中文。具体步骤如下:首先,使用Javascript语言自定义一个transformchinese(s)方法,将数字日期转化为中文,代码如下:var chinese = [零,一,二,三,四,五,六,七,八,九];var len = [十];var ydm =[年
本文提供了两种idea打包exe的方式:直接利用Artifacts 打包成exe 与 先将项目打包成jar包再通过exe4j打包成exe。总有一种适合你。
++代表自增,主要有两种形式:y=x++等于y=x,x+1y=++x等于x=x+1,y=x我们以一个小案例来解释:xyzx=1010y=x++1110z=++x1212由上面可以看出,当是y=x++时候,此时先将x的值赋给y,此时y就等于10,然后x才开始自增,最终返回的结果就是y=10,x=11。当z=++x时,此时x先自增,于是x=12,然后再将x的值赋予z,于是最后结果就为z=12,x=12。当为–自减的情
原标题:十分钟理解线性代数的本质我在上个月修了数值矩阵运算这门课 (Numerical Matrix Computing),对矩阵的变换和一些性质有了一定的理解。在这里总结一下自己的研究的一些心得。在经过了这次的学习之后,我由衷地感慨,我以前学的线性代数是什么鬼呀!最近由于选修博士的课程《矩阵运算》。所以我重新在网上恶补了一遍《线性代数》的基本概念[1],对这门课有了全新的认识。现在想想我大学学的...
内容提要这篇博客的主要内容有: 1. 简述支持向量机(SVM)的一般记号 2. 介绍了函数间隔和几何间隔 3. 最大间隔分类器是什么 4. 为了得到最大间隔分类器解,而介绍了一些与拉格朗日有关的理论(拉格朗日乘数法,KKT条件,对偶性质) 5. 求解最大间隔分类器方法推导。其实推导出来的这个方法就是支持向量机。支持向量机(SVM),通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上
2019独角兽企业重金招聘Python工程师标准>>> ...
1.主要用于寻找和配置服务端的属性,其实就是寻找、配置和读写servcice端的各种attribute,使其按需要的方式工作。它有两个角色:Server和Client,一个实际的例子:2.概述GATT使用Attribute Protocol来传输data:Opcode表示该PDU的类型,包括command, request, respon
持久化(persistent)对象简单来说就是把领域模型对象存储到数据库中,这个过程称之为持久化。现今大行其道的ORM框架——Hibernate,JPA(Java Persisitence API)简化了使用JDBC书写SQL语句于数据库进行交互的方法。对持久化对象进行了比较合理的处理。Hibernate可以利用注解方式配置对象注解 Annotation模式注解规范定义文档:JSR 1...
1.打开一幅影像,选择波段并显示。本实验以以下图像为例。2.在ENVI的主界面下选择”变换——颜色空间变换“选择出想要转换到的模型。选择后弹出窗口。自己选择其他波段就点击Available bands list,想直接将显示的波段图像转换就选择Display#1.最后点击OK,选择保存到文件就完成了。...