您的位置:首页 > 数据库 > MySQL

MySQL视图学习整理

2015-07-15 16:46 579 查看
第一部分:初级概念及应用
一,视图简介

MySQL的视图和Oracle视图是一个概念,就是一张虚拟表,没有任何数据的,数据还是存放在基表里面的;

二,添加视图

1:语法

CREATE

    [OR REPLACE]

    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]

    [DEFINER = { user | CURRENT_USER }]

    [SQL SECURITY { DEFINER | INVOKER }]

    VIEW view_name [(column_list)]

    AS select_statement

    [WITH [CASCADED | LOCAL] CHECK OPTION]

2:举例(创建视图 )

mysql> use ehrt;  

Database changed  

mysql> create  algorithm = MERGE view t1 as select * from user;

三,修改视图

1:语法

ALTER

    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]

    [DEFINER = { user | CURRENT_USER }]

    [SQL SECURITY { DEFINER | INVOKER }]

    VIEW view_name [(column_list)]

    AS select_statement

    [WITH [CASCADED | LOCAL] CHECK OPTION]

2:举例

mysql> alter view t1 as select * from user where name='Jacson';  
四,查看视图

1.查看视图数据

mysql> use ehrt; 

mysql> select * from t1;  

+----+------+-----+  

| id | name | sex |  

+----+------+-----+  

|  1 | Jacson |   0 |  

|  2 | Bai |   0 |  

+----+------+-----+  
2 rows in set (0.00 sec)  

2.查看视图结构

mysql> show create view t1G; 

 
五,删除视图

mysql> drop view t1;  
Query OK, 0 rows affected (0.00 sec)  

第二部分:高级概念整理

一,视图的类型

mysql的视图有三种类型:MERGE、TEMPTABLE、UNDEFINED。如果不指定ALGORITHM子句,默认算法为UNDEFINED。这个方式决定了影响MySQL处理视图的速度。

1,MERGE,会将引用视图的语句的文本与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分。

2,TEMPTABLE,视图的结果将被置于临时表中,然后使用它执行语句。

3,UNDEFINED,让自己MySQL选择所要使用的算法。

建议一般开发者,在物理主机内存不大或者考虑程序可移植的情况下一般选择MERGE

--未完待续

第三部分:高级应用
1.能否监控视图是否失效?
--未完待续
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: