标签:io on 数据 问题 ad ef as 数据库 sql
视图,把基本表的某些数据组合起来构成一个虚拟表的一种形式,之所以叫虚拟,是因为只有当视图用于一条语句中的时候,它才能存在。同时如果对视图中的数据进行修改,会同时修改到基本表中的数据。 创建视图: create [or replace] view view_name [column1,column2..] as 表的表达式 as: 创建一个视图towns,1.包含了 players 表中的所有城市名,2.接下来并查询这个虚拟表的内容 1. create view towns as select town from players 2. select * from towns 以上是先创建视图towns,再查询视图,其中视图的列名称没有显式写出来,所以默认用的是后面查询的字段作了列的名称字段,as 之后的查询结果作为视图的数据,可以显式指定视图列名 as: create view cplays (uid,name,job) as select id,name,prefession from works 从视图 cplays 中删除 id = 100的人 delete from cplays where uid = 100 此时基本表中的 id = 100的人同时会被删除 允许select 中的一个表达式为函数或者计算 as: create or replace view result as select grand, count(*) from score group by grand 查询以上视图时: select * from result 返回的字段有 grand,count(*) or replace 是当视图存在时,则会更新这个视图 更新视图 如果没有约束的话,如下: create view t_view as select id,name,job from test.work where id < 4; update t_view set name = ‘xxx‘ where id = 4; 以上语句会使 id = 4 的name 变为 ‘xxx‘,没有问题,但当加上约束条件时,如果不满足条件,则不允许相应的操作 as: create view t_view as select id,name,job from test.work where id < 4 with check option; update t_view set name = ‘xxx‘ where id = 4; 以上更新会失败,因为视图用了约束,后面的所查询的 id 不在创建的视图中,所以无法更新相关数据,又因为视图是可以嵌套的,所以如果只当对前的视图的操作作检测,用 with local check option 约束条件即可,此时只会对当前的视图条件作检测,如果是对其相关的嵌套的视图也作检查,则约束条件用 with [cascaded] check option,默认是 cascaded 的 删除视图 drop view [if exitsts] view_name
标签:io on 数据 问题 ad ef as 数据库 sql
原文地址:http://www.cnblogs.com/lin3615/p/4154543.html