» 游客:  注册 | 登录 | 会员 | 统计 | 帮助
斑竹的菜园子
 

作者:
标题: 创建视图 上一主题 | 下一主题
borneol
管理员




积分 10952
发贴 955
注册 2005-2-23
来自 重庆
状态 离线
#1  创建视图

视图其实就是一个虚拟的数据表,如操作的角度看,它和表没有什么区别。它是一个自定义的表结果集,其数据可以来自一个或多个表,它对操作用户是透明的。因此,我们可以利用视图来创建表的子集,过滤出特定的数据给特定的用户。

例如有一个关于薪资的表,里面有员工姓名、住址、电话、入厂日期、职位、底薪等信息。

对人事部来说,我们不能让他们见到表的底薪字段;

对于财务部人员说,我们不能让他们见到住址、电话字段。

那么我们就可以创建两个基于薪资表的视图,一个图视含姓名、住址、电话、入厂日期、职位,此视图被人事部人员使用;另一个图视含姓名、入厂日期、职位、底薪字段,此视图被财务部人员使用。这样也就保证了数据的安全性。

和前面一样,我们也先来了解一个视图的语法:

CREATE VIEW name [(view_col [, view_col)]
AS <select> [WITH CHECK OPTION];

还好,这次的语法看起来简单多了。

 

在Interbase中,视图主要有以下几种表现形式:

一:基于单一表的部分列和所有行创建的表子集。

CREATE VIEW SNOW_LINE (CITY, STATE, SNOW_ALTITUDE) AS
SELECT CITY, STATE, ALTITUDE
FROM CITIES

 

二:基于单一表的部分列和部分行创建的表子集。

CREATE VIEW SNOW_LINE (CITY, STATE, SNOW_ALTITUDE) AS
SELECT CITY, STATE, ALTITUDE
FROM CITIES

WHERE ALTITUDE > 5000;

从上面两点我们注意到了在视图名称 SNOW_LINE 后的字段名 SHOW_ALTITUDE 与表 CITIES 的字段名 ALTITUDE 名称不一样,SHOW_ALTITUDE 是我们创建视图时对表 CITIES 的 ALTITUDE 字段所赋予的一个新字段名称,以便以区分和易于理解。如果我们创建的视图字段SNOW_ALTITUDE 与 CITIES 的字段ALTITUDE一样,即:
CREATE VIEW SNOW_LINE (CITY, STATE, ALTITUDE) AS
SELECT CITY, STATE, ALTITUDE
FROM CITIES
那么我样在书写时可以不用书写视图的字段名称,即写成:
CREATE VIEW SNOW_LINE AS
SELECT CITY, STATE, ALTITUDE
FROM CITIES


 

三:基于多个表的行与列创建的多表子集。

CREATE VIEW PHONE_LIST AS
SELECT EMP_NO, FIRST_NAME, LAST_NAME, PHONE_EXT, LOCATION, PHONE_NO
FROM EMPLOYEE, DEPARTMENT
WHERE EMPLOYEE.DEPT_NO = DEPARTMENT.DEPT_NO;



0200 1D 06 00 00 A0 86 01 00 FF FF 00 00 1E 06 00 00
         E-mail:webmaster@chenzhang.com
         MSN:borneol_net@hotmail.com
         Home page:www.chenzhang.com
0210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2005-3-10 14:40
查看资料  发送邮件  访问主页  发短消息  QQ   编辑帖子  引用回复


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: