视图和字段

视图是一种虚拟表,是从数据库中一个或多个表中导出来的表。视图还可以从已经存在的视图的基础上定义.数据库中只存放了视图的定义,而并没有存放视图的数据.

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视图。

· 在视图定义中命名的表必须已存在。

· 不能将触发程序与视图关联在一起。

原文地址:https://www.cnblogs.com/mengluo/p/4769801.html