不废话直接上代码:
开启视图权限:
root登录服务器,运行命令,注意username和data修改
grant create view on username.* to data@'%';grant show view on username.* to data@'%';
GRANT ALL PRIVILEGES ON 用户名.* TO 数据库名@'%' IDENTIFIED BY '数据库密码';
用下面语句测试创建视图,test是创建视图的名称,admin是存在的表名CREATE VIEW test AS SELECT * from admin;
语法:
创建视图:
create view 视图名 as select 语句;
create algorithm = MERGE view aaa as select * from user;//
修改视图:
alter view 视图名 as select 语句;
查看视图:
DESCRIBE 命令
删除视图:
drop
不可更新的视图:
· 聚合函数(SUM(), MIN(), MAX(), COUNT()等)。
· DISTINCT
· GROUP BY
· HAVING
· UNION或UNION ALL
· 位于选择列表中的子查询
· Join
· FROM子句中的不可更新视图
· WHERE子句中的子查询,引用FROM子句中的表。
· 仅引用文字值(在该情况下,没有要更新的基本表)。
· ALGORITHM = TEMPTABLE(使用临时表总会使视图成为不可更新的)
视图的类型:
MySQL的视图有三种类型:MERGE、TEMPTABLE、UNDEFINED。如果没有ALGORITHM子句,默认算法是UNDEFINED(未定义的)。算法会影响mysql处理视图的方式。
1,MERGE,会将引用视图的语句的文本与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分。
2,TEMPTABLE,视图的结果将被置于临时表中,然后使用它执行语句。
3,UNDEFINED,MySQL将选择所要使用的算法。如果可能,它倾向于MERGE而不是TEMPTABLE,这是因为MERGE通常更有效,而且如果使用了临时表,视图是不可更新的。
更多文章,请关注: http://blog..net/qq_37022150