MySQL视图-(视图创建,修改,删除,查看,更新数据)
视图是一种虚拟存在的表,对于使用视图的用户来说基本上是透明的。视图并不在数据库中实际存在,行和列数据来自定义视图的查询总使用的表,并且是在使用视图时动态生成的。
视图相对于普通表的优势:
简单:使用视图的用户完全不需要关系后面对应的表结构、关联条件和筛选条件,对用户来说已经是过滤好的符合条件的结果集。
安全:使用视图的用户只能访问他们被允许的结果集,对表的权限管理并不能限制到某个行某个列,但是通过视图就可以简单的实现。
数据独立:一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加列对视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响。
创建视图
CREATE [OR REPLACE] VIEW 视图名(列1,列2...)
AS SELECT (列1,列2...)
FROM ...;
[WITH [CASCADED|LOCAL] CHECK OPTION]
修改视图
CREATE OR REPLACE VIEW 视图名 AS SELECT [...] FROM [...];
[WITH [CASCADED|LOCAL] CHECK OPTION]
查看视图
show tables;
desc 视图名
查看视图定义
show create view 视图名称\G
通过视图变更数据
insert into 视图名
update 视图名
[WITH [CASCADED|LOCAL] CHECK OPTION] 决定了是否允许更新数据记录不再满足视图的条件。
local只要满足本视图的条件就可以更新
cascaded则必须满足所有针对该视图的所有视图的条件才可以更新,默认是cascaded。
为了防止通过视图修改导致数据无故丢失,建议加上WITH CHECK OPTION
视图的可更新性和视图中查询的定义有关系,一下类型的视图是不可更新的。
1.包含一下关键字的sql语句:聚合函数(sum,min,max,count等),distinct,group by,having,union或者union all.
2.常亮视图。
3.select中包含子查询。
4.jion
5.from一个不能更新的视图
6.where句子的子查询引用了from句子中的表
删除视图
drop view 视图名称
备注:
1.可以通过视图插入数据,但是只能基于一个基础表进行插入,不能跨表更新数据
2.视图不是表,不保存数据,只是一张虚拟的表,源表的数据发生变化后,视图的结果也同步发生变化
3. 一般情况下,在创建有条件限制的视图时,加上“WITH CHECK OPTION”命令。
MySQL视图-(视图创建,修改,删除,查看,更新数据)的更多相关文章
- MySQL进阶16 - 视图的创建/修改/删除/更新--可更新性的不适用条件
#进阶16 : 视图 /* 含义: 虚拟表,和普通表一样使用;(从5.1开始使用的:)是通过表动态生成的数据 创建语法: create view 视图名 as 查询语句; ---------- 作用: ...
- mysql 触发器的创建 修改 删除
//做一个简单的练习,创建一个简单的触发器 完成添加文章的时候,自动加上时间,默认作者 为 ‘日记本的回忆‘ show columns from test; //查看表结构 //查看已存在触发器 sh ...
- MySQL索引的创建、删除和查看
MySQL索引的创建.删除和查看 此文转自http://blogold.chinaunix.net/u3/93470/showart_2001536.html 1.索引作用 在索引列上,除了上面提到的 ...
- MySQL进阶11--DDL数据库定义语言--库创建/修改/删除--表的创建/修改/删除/复制
/*进阶 11 DDL 数据库定义语言 库和表的管理 一:库的管理:创建/修改/删除 二:表的管理:创建/修改/删除 创建: CREATE DATABASE [IF NOT EXISTS] 库名; 修 ...
- Linux创建修改删除用户和组
Linux 创建修改删除用户和组 介绍 在日常的维护过程中创建用户操作用的相对会多一些,但是在这个过程中涉及到的知识点就不单单就是useradd了,接下来就来详细了解账号管理的相关信息. 用户信息 先 ...
- oracle11g创建修改删除表
oracle11g创建修改删除表 我的数据库名字: ORCL 密码:123456 1.模式 2.创建表 3.表约束 4.修改表 5.删除表 1.模式 set oracle_sid=OR ...
- Mysql清空表(truncate)与删除表中数据(delete)的区别
来源:http://blog.is36.com/mysql_difference_of_truncate_and_delete/ 为某基于wordpress搭建的博客长久未除草,某天升级的时候发现已经 ...
- MySQL如果频繁的修改一个表的数据,那么这么表会被锁死。造成假死现象。
MySQL如果频繁的修改一个表的数据,那么这么表会被锁死.造成假死现象. 比如用Navicat等连接工具操作,Navicat会直接未响应,只能强制关闭软件,但是重启后依然无效. 解决办法: 首先执行: ...
- mysql表的创建和删除
在创建数据库表时,最好是在编辑器中写好创建表的代码,然后粘贴到命令行中,这样如果有错修改起来方便. 现在来创建一个user表: -- 打开数据库, --后面必须要有空格, 表示注释 USE mydb3 ...
- mysql 数据库 添加查询 修改 删除
cmd 命令行模式操作数据库 添加查询 修改 删除 ( 表 字段 数据) 一 查看数据库.表.数据字段.数据 1 首先配置环境变量 进入mysql 或者通过一键集成工具 打开mysql命令行 ...
随机推荐
- 分数化小数(decimal)
分数化小数 ①我的程序 #include<iostream>using namespace std;int main(void){ int a,b,c,kase=0; while(scan ...
- Java容器解析系列(1) 迭代的进化——从Enumeration到Iterator
在Java中,对于所有的Collection,都有一个特性,可以通过迭代器来遍历和删除其中的元素,因为Collection接口继承自Iterable接口. public interface Colle ...
- HTML5:定位
定位 一.介绍: position设置块级元素相对于其父块的位置和相对于它自身应该在的位置,任何使用定位的元素都会成为块级元素. 1.属性值 属性值 描述 absolute 生成绝对定位的元素,相对于 ...
- 使用vector<vector<int>>实现的一个二维数组
本文为大大维原创,最早于博客园发表,转载请注明出处!!! 1 #include<iostream> #include<vector> using namespace std; ...
- 宝塔面板Windows 面板5.0 memcache安装
a 软件管理>相应的PHP版本里(php5.6)>>配置>配置修改>编辑框拉到底 ;extension=php_memcache.dll 前的“;”号去掉>保存&g ...
- Java学习笔记40(sql:将数据库内数据存入对象中)
新建一个数据表: use qy97; create table student( id int primary key auto_increment, sname ), gander ), age i ...
- 剑指Offer 30. 连续子数组的最大和 (数组)
题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果向量 ...
- IC卡T0协议中的过程字与状态字
T0协议中,IC卡收到命里头以后向TTL回传过程字或状态字SW1.SW2: TTL和IC卡在二者之间的命令和数据交换的任何时刻都必须知道数据流的方向和IO线路由谁驱动. 摘录参考:<中国金融集成 ...
- ngnix 500错误原因分析
参考http://www.cnblogs.com/huqiang/p/5333975.html
- ios-UILabel居中随内容自适应,后面的控件跟在其后
如图绿蓝框所示,UILabel显示名字,Label框随名字长短而自适应,后面的性别图片跟在其后显示 分两部分:第一部分先布局 //名字 self.nameLab = [[UILabel alloc]i ...