mysql view 视图
来源:互联网 发布:sql sum group by 编辑:程序博客网 时间:2024/06/05 11:17
转:http://www.cnblogs.com/billyu/p/5043173.html
一,什么是视图
视图是存放数据的一个接口,也可以说是虚拟的表。这些数据可以是从一个或几个基本表(或视图)的数据。也可以是用户自已定义的数据。其实视图里面不存放数据的,数据还是放在基本表里面,基本表里面的数据发生变动时,视图里面的数据随之变动。
二,视图有什么用
1,视图可以让查询变得很清楚
如果您要找的数据存放在三张关系表里面,查看数据的时候,你就要写个联合查询了。换种方法,我把联合查询的数据放到视图里面,这样查询起来是不是更方便呢,通phpmyadmin看着是不是更清淅呢。
2,保护数据库的重要数据,给不同的人看不同的数据
假如您让别人帮您开发一套系统,但是你又想把真正表的暴露出来,这个时候视图是不是最好的选择呢。
三,视图的类型
mysql的视图有三种类型:MERGE、TEMPTABLE、UNDEFINED。如果没有ALGORITHM子句,默认算法是UNDEFINED(未定义的)。算法会影响MySQL处理视图的方式。
1,MERGE,会将引用视图的语句的文本与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分。
2,TEMPTABLE,视图的结果将被置于临时表中,然后使用它执行语句。
3,UNDEFINED,MySQL将选择所要使用的算法。如果可能,它倾向于MERGE而不是TEMPTABLE,这是因为MERGE通常更有效,而且如果使用了临时表,视图是不可更新的。
四,添加视图
1,添加规则
1 REATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] 2 3 VIEW view_name [(column_list)] 4 5 AS select_statement 6 7 [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)
上面我们说了,视图里面没有真正的数据,那在数据仓库里面,他的存储是什么样子的呢。看下面
1 [root@BlackGhost test]# cat /usr/local/mysql/data/test/aaa.frm 2 TYPE=VIEW 3 query=select `test`.`user`.`id` AS `id`,`test`.`user`.`name` AS `name`,`test`.`user`.`sex` AS `sex` from `test`.`user` 4 md5=04d5ab2cc3ffcf3376a5e9c946f858ab 5 updatable=1 6 algorithm=2 7 definer_user= 8 definer_host= 9 suid=2 10 with_check_option=0 11 revision=1 12 timestamp=2010-10-20 19:59:34 13 create-version=1 14 source=select * from user 15 client_cs_name=utf8 16 connection_cl_name=utf8_general_ci 17 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,修改规则
1 ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] 2 3 VIEW view_name [(column_list)] 4 5 AS select_statement 6 7 [WITH [CASCADED | LOCAL] CHECK OPTION]
2,实例
1 mysql> alter view aaa as select * from user where id <> any 2 -> (select u_id from comment); 3 Query OK, 0 rows affected (0.00 sec)
六,查看,删除视图
1 mysql> select * from aaa; //查看视图数据 2 +----+------+-----+ 3 | id | name | sex | 4 +----+------+-----+ 5 | 3 | tank | 0 | 6 | 4 | tank | 0 | 7 +----+------+-----+ 8 2 rows in set (0.00 sec) 9 10 mysql> show create view aaa\G; //查看视图 11 *************************** 1. row *************************** 12 View: aaa 13 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`) 14 character_set_client: utf8 15 collation_connection: utf8_general_ci 16 1 row in set (0.00 sec) 17 18 mysql> drop view aaa; //删除视图 19 Query OK, 0 rows affected (0.00 sec) 20
- mysql 视图 view
- mysql view视图
- MySQL创建View视图
- mysql view 视图
- MySQL之视图(View)
- mysql 视图 view 的用法
- mysql高级语法- view视图操作
- MySQL简单应用之视图(view)
- 视图(view)
- View视图
- view视图
- 视图VIEW
- 视图 view
- mysql view(视图)从0学起,以及实例
- [进阶]MySQL学习笔记七之视图view
- MySQL使用CREATE OR REPLACE VIEW语句修改视图
- [MySQL View]最有意思的视图view优化过程,从30分钟到0.08秒
- [MySQL View]最有意思的视图view优化过程,从30分钟到0.08秒
- Unity Animator混合树
- Cocos2d-x 3.x 图形学渲染系列总结
- debian系统下配置爬虫环境
- Android总结之链式调用(方法链)
- 【数据结构】单链表,双端链表,有序链表
- mysql view 视图
- 深拷贝与浅拷贝(Java)
- 123. Best Time to Buy and Sell Stock III(同小米风口的猪)
- 大牛级管家应用Trello:多平台“任务流”共享
- H5图片预览及上传(WEB前端)
- zookeeper集群为什么总是配置奇数个节点
- 浏览器端的缓存规则
- 几种常用加密算法比较
- 使用jinvoke调用windowsApi