视图

来源:互联网 发布:儿童学编程 软件 编辑:程序博客网 时间:2024/06/05 11:27

创建视图,view后面的视图名一定要写

create [algorithm={undefined|merge|temptable}] view 视图名 [(字段名1.1,字段名1.2....)]
as select 字段名2.1,字段名2.2...
from 需要查的表名

[with [cascaded|local] check option];

例如
create view view1(name,function)
as select d_id,function
from department;
也可
create view view1
as select *
from department;
则department的所有列都放入视图,而且字段名均不变。

多表创建视图,视图名一定要写
create view 视图名 (字段1.1,字段1.2...)
AS SELECT 字段2.1,字段2.2...
form 表名1,表名2...;
如果表名之中字段名重复,可以在字段名前加上 表名.
如下
create algorithm=merge view work_view(name,depart,sex,age,address)
as select name,department.d_name,sex,2009-birthday,address
FROM worker,department where worker.d_id=department.d_id;

查看视图基本信息
desc 视图名;
这个和查看表时一样的

SHOW TABLE STATUS LIKE "视图名或者表名";
他可以查看视图或表的信息,因为视图是虚拟表,所以大部分属性是null,只有comment属性是view;

查看视图详细信息
SHOW CREATE VIEW 视图名
这个有点像查看表信息SHOW CREATE TABLE 表名;只是view和table的不同,
他能查看创建view的详细语句
如果要美化查出的格式
SHOW CREATE VIEW 视图名 \G
注意是大写G

所有视图都在information_schema数据库的views表中,
所以还能用
SELECT * FROM information_schema.views \G;
查看

CREATE OR REPLACE修改视图 视图可存在也可不存在,不存在就创建新视图
CREATE OR REPLACE 视图名 [(字段清单)]
AS SELECT 语句
[WITH [CASCADED|LOCAL] CHECK OPTION];

ALTER 修改视图,视图必须存在
语法
ALTER VIEW 视图名 (字段1.1,字段1.2...)
AS SELECT 字段2.1,字段2.2...
from 表名1,表名2
[with [CASCADED|LOCAL] check option];

字段是你要改成的字段名

更新视图
首先要有更新视图权限,其实视图是虚拟表,没有数据,更新视图就是更新视图所对应的基本表。
update 视图名 set 属性名=....,属性名2=...,属性名3=.....;
...是要更新的值,字符串用引号。
然后就可以查看基本表select * from 基本表;
看是否更新了。
注意:有些情况是不能更新视图的:
(1)视图中包含SUM(),COUNT(),MAX(),MIN()等函数,也就是as 后面的语句包含
(2)视图中包含UNION,UNION ALL,DISTINCT,GROUP BY,HAVING等关键字。
(3)带有常量的视图
create view worker_view6 as select 'Aric' as name;
(4)视图中包含子查询
create view worker_view7(name)
as select(select name from worker);
(5)有不可更新的视图到处的视图
create view worker_view8
as select * from worker_view7;
(6)要更新的视图对应的基本表上,没有默认值的列,该列又没在视图上,不能更新视图
(7)with [cascaded|local]check option也揪耳朵视图更新,
local满足视图本身定义条件就可更新。
cascaded满足所有相关视图和表条件才可更新视图。默认是cascaded.

删除视图
删除视图不会删除基本表数据。
语法:
DROP VIEW [IF EXISTS] 视图名列表 [RESTRICT|CASCADE];
IF EXISTS表示如果存在视图即删除,不存在不删除。
删除视图要有删除权限。

查看权限:
查看删除权限:
SELECT Drop_priv FROM mysql.user where user="用户名";
查看选择和创建视图权限:
SELECT Select_priv,Create_view_priv FROM mysql.user WHERE user="用户名";


 

 

原创粉丝点击