mysql view(视图)
一,什么是视图
视图是存放数据的一个接口,也可以说是虚拟的表。这些数据可以是从一个或几个基本表(或视图)的数据。也可以是用户自已定义的数据。其实视图里面不存放数据的,数据还是放在基本表里面,基本表里面的数据发生变动时,视图里面的数据随之变动。
二,视图有什么用
1,视图可以让查询变得很清楚
如果您要找的数据存放在三张关系表里面,查看数据的时候,你就要写个联合查询了。换种方法,我把联合查询的数据放到视图里面,这样查询起来是不是更方便呢,通phpmyadmin看着是不是更清淅呢。
2,保护数据库的重要数据,给不同的人看不同的数据
假如您让别人帮您开发一套系统,但是你又想把真正表的暴露出来,这个时候视图是不是最好的选择呢。
三,视图的类型
mysql的视图有三种类型:MERGE、TEMPTABLE、UNDEFINED。如果没有ALGORITHM子句,默认算法是UNDEFINED(未定义的)。算法会影响MySQL处理视图的方式。
1,MERGE,会将引用视图的语句的文本与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分。
2,TEMPTABLE,视图的结果将被置于临时表中,然后使用它执行语句。
3,UNDEFINED,MySQL将选择所要使用的算法。如果可能,它倾向于MERGE而不是TEMPTABLE,这是因为MERGE通常更有效,而且如果使用了临时表,视图是不可更新的。
四,添加视图
1,添加规则
REATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
2,实例
mysql> use test;
Database changed
mysql> create algorithm = MERGE view aaa as select * from user;//创建一个视图
Query OK, 0 rows affected (0.00 sec)
上面我们说了,视图里面没有真正的数据,那在数据仓库里面,他的存储是什么样子的呢。看下面
[root@BlackGhost test]# cat /usr/local/mysql/data/test/aaa.frm
TYPE=VIEW
query=select `test`.`user`.`id` AS `id`,`test`.`user`.`name` AS `name`,`test`.`user`.`sex` AS `sex` from `test`.`user`
md5=04d5ab2cc3ffcf3376a5e9c946f858ab
updatable=1
algorithm=2
definer_user=
definer_host=
suid=2
with_check_option=0
revision=1
timestamp=2010-10-20 19:59:34
create-version=1
source=select * from user
client_cs_name=utf8
connection_cl_name=utf8_general_ci
view_body_utf8=select `test`.`user`.`id` AS `id`,`test`.`user`.`name` AS `name`,`test`.`user`.`sex` AS `sex` from `test`.`user`
创建的视图,他没有.MYD,.MYI这二个文件,一个是存放数据的,一个存放索引的。在这儿就可以说明数据是存在基本表里面的。
五,修改视图
1,修改规则
ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
2,实例
mysql> alter view aaa as select * from user where id <> any
-> (select u_id from comment);
Query OK, 0 rows affected (0.00 sec)
六,查看,删除视图
mysql> select * from aaa; //查看视图数据
+----+------+-----+
| id | name | sex |
+----+------+-----+
| 3 | tank | 0 |
| 4 | tank | 0 |
+----+------+-----+
2 rows in set (0.00 sec) mysql> show create view aaa\G; //查看视图
*************************** 1. row ***************************
View: aaa
Create View: CREATE ALGORITHM=MERGE DEFINER=``@`` SQL SECURITY DEFINER VIEW `aaa` AS select `user`.`id` AS `id`,`user`.`name` AS `name`,`user`.`sex` AS `sex` from `user` where `user`.`id` <> any (select `comment`.`u_id` AS `u_id` from `comment`)
character_set_client: utf8
collation_connection: utf8_general_ci
1 row in set (0.00 sec) mysql> drop view aaa; //删除视图
Query OK, 0 rows affected (0.00 sec)
mysql view(视图)的更多相关文章
- mysql view视图的简单使用....
为什么使用视图 1.查询性能提高. 2.安全 3.有灵活性的功能需求后,需要改动表的结构而导致工作量比较大.那么可以使用虚拟表的形式达到少修改的效果 4.复杂的查询需求.可以进行问题分解,然后将创建多 ...
- MySQL的视图view,视图创建后,会随着表的改变而自动改变数据
首先是创建视图 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `new_view` A ...
- mysql 查询表,视图,触发器,函数,存储过程
1. mysql查询所有表: SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '数据库名' AND TAB ...
- Mysql的视图、存储过程、函数、索引全解析
视图是查询命令结果构成的一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集合,并可以当作表来查询使用. 1创建视图 --格式:C ...
- mysql view
定义:在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表. 1.视图是一个虚拟存在的表,视图可以包含表的全部或者部分记录,也可以由一个表或者多个表来创建.使用视图就可以不用看到数据表中的所有 ...
- 第五章 MySQL事务,视图,索引,备份和恢复
第五章 MySQL事务,视图,索引,备份和恢复 一.事务 1.什么是事务 事务是一种机制,一个操作序列,它包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求.要么都执行 ...
- MySQL 之 视图、触发器、存储过程、函数、事物与数据库锁
浏览目录: 1.视图 2.触发器 3.存储过程 4.函数 5.事物 6.数据库锁 7.数据库备份 1.视图 视图:是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据 视 ...
- MYSQL之视图、触发器、存储过程、函数、事物、数据库锁和数据库备份
一.视图 -- view 视图:是一个虚报表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据. 视图有如下特点: 1.视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系 ...
- MySQL之视图、触发器、事务、存储过程、函数
一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...
随机推荐
- spring实例教程
1.配置好spring mvc发现访问无法匹配,很可能是文件放的位置或者相对目录不对. 2.实例大全:http://www.yiibai.com/spring/spring-collections-l ...
- HTML5实践 -- 使用CSS3 Media Queries实现响应式设计
CSS3 Media用法介绍:http://www.w3cplus.com/content/css3-media-queries 转载请注明原创地址:http://www.cnblogs.com/so ...
- 捕获异常try:except
常见的异常有:1.NameError 没有定义这个变量2.SyntaxError 这是语法错误3.IOEtror 这里是想打开的文件不存在4.10/0: ZeroDivsionertor 这个是除零错 ...
- Android性能优化之布局优化
最新最准确内容建议直接访问原文:Android性能优化之布局优化 本文为Android性能优化的第二篇——布局优化,主要介绍使用抽象布局标签(include, viewstub, merge).去除不 ...
- HTML5 重要标签及其属性学习
1.google字体:<link href="https://fonts.googleapis.com/css?family=Lobster" rel="style ...
- node body-parser
var express = require('express'); var app = express(); var bodyParser = require('body-parser'); // p ...
- Bower In ASP.NET Core
创建一个ASP.NET Core MVC项目的时候,会产生一个bower.json的文件,用于管理前段的js. NPM & Bower NPM主要运用于Node.js项目的内部依赖包管理,安装 ...
- 每天一个linux命令---mount
查询挂载服务的信息,使用挂载mount命令: [wapmail@app2linux04 monitor]$ mount |grep 172.16.182.146 type nfs (ro,udp,no ...
- The 2015 China Collegiate Programming Contest D.Pick The Sticks hdu 5543
Pick The Sticks Time Limit: 15000/10000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others ...
- BZOJ2448 : 挖油
$f[i][j]$表示仅考虑$[i,j]$区间的答案,则 $f[i][j]=\min(\max(f[i][k-1],f[k+1][j])+a[k]),i\leq k\leq j$ 维护出$\max$的 ...