mysql-视图专题 内容待续。。。。
目录
创建视图:
删除视图:
修改视图:
视图缩减业务逻辑
视图的执行算法:
视图的更新:
不可更新的视图:
关于视图的可插入性:insert
With check option的用法:
WITH LOCAL/cascade CHECK OPTION的用法:
创建视图:
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION]
其中,CREATE:表示新建视图;
REPLACE:表示替换已有视图
ALGORITHM :表示视图选择算法
view_name :视图名
column_list:属性列
select_statement:表示select语句
[WITH [CASCADED | LOCAL] CHECK OPTION]参数表示视图在更新时保证在视图的权限范围之内
可选的ALGORITHM子句是对标准SQL的MySQL扩展。
ALGORITHM可取三个值:MERGE、TEMPTABLE或UNDEFINED。
如果没有ALGORITHM子句,默认算法是UNDEFINED(未定义的)。算法会影响MySQL处理视图的方式。
对于MERGE,会将引用视图的语句的文本与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分。
对于TEMPTABLE,视图的结果将被置于临时表中,然后使用它执行语句。
对于UNDEFINED,MySQL自己选择所要使用的算法。如果可能,它倾向于MERGE而不是TEMPTABLE,
这是因为MERGE通常更有效,而且如果使用了临时表,视图是不可更新的。
LOCAL和CASCADED为可选参数,决定了检查测试的范围,默认值为CASCADED。
创建视图:
视图的信息来自两个表:
create table student(stuno int,stuname varchar(60));
create table stuinfo(stuno int,class varchar(60),city varchar(60));
insert into student values(1,'wanglin'),(2,'gaoli'),(3,'zhanghai');
insert into stuinfo values(1,'wuban','henan'),(2,'liuban','hebei'),(3,'qiban','shandong');
alter table student add constraint primary key(stuno);
alter table stuinfo add constraint primary key(stuno);
#创建视图
create view stu_class(id,pname,class) as select student.`stuno`,student.`stuname`,stuinfo.`class` from student,stuinfo
where student.`stuno`=stuinfo.`stuno`; #注意,select后表中字段的引用,``是键盘中Tab上方那个键的英语字符
#查看视图
select * from stu_class; #返回结果就类似表的查询结果
show create view stu_class; #返回创建视图的名称,创建语句信息,字符集信息
describe stu_class; #查看视图,返回视图的字段定义、字段的数据类型、是否为空、是否为主/外键、默认值和额外信息
desc stu_class; #describe的缩写,作用一样
show table status like 'stu_class'; #COMMENT的值为VIEW说明该表为视图,其他信息为NULL说明这是一个虚表,这是基表和视图的区别
show table status like 'student'; #返回信息不为空,说明是个基表
参考:http://www.cnblogs.com/lyhabc/p/3801527.html
http://blog.itpub.net/28194062/viewspace-772902/
内容待续。。。。

浙公网安备 33010602011771号