视图和字段
视图是一种虚拟表,是从数据库中一个或多个表中导出来的表。视图还可以从已经存在的视图的基础上定义.数据库中只存放了视图的定义,而并没有存放视图的数据.
CREATE [ALGORITHM={undefined|merge|temptable}] VIEW 视图名 [(属性清单)] AS SELECT 语句 [with [CASCADED|LOCAL] CHECK OPTION] ALGORITHM 是可选参数,表示视图选择的算法: 属性清单:指定了视图中各个属性的名次 WITH CHECK OPTION 表示更新视图时要保证在该视图的权限范围之内 CASCADED 可选参数 表示更新视图 时要满足所有相关的视图和表的条件
表和视图共享数据库中相同的名称空间,因此,数据库不能包含具有相同名称的表和视图。
CREATE TABLE ceshi1_view AS select * from ceshi1;
create view ceshi2_view(name) AS select name from ceshi2; 创建一个ceshi2_view属性 在ceshi2中查出来的属性就是view中对应的属性
视图定义服从下述限制:
SELECT语句不能包含FROM子句中的子查询。
· SELECT语句不能引用系统或用户变量。
· SELECT语句不能引用预处理语句参数。
· 在存储子程序内,定义不能引用子程序参数或局部变量。
· 在定义中引用的表或视图必须存在。但是,创建了视图后,能够舍弃定义引用的表或视图。要想检查视图定义是否存在这类问题,可使用CHECK TABLE语句。
· 在定义中不能引用TEMPORARY表,不能创建TEMPORARY视图。
· 在视图定义中命名的表必须已存在。
· 不能将触发程序与视图关联在一起。