日期:2014-05-16  浏览次数:20434 次

【转】修改/删除视图
11.2.3  修改/删除视图

在创建了关系视图vw_employees之后,可以对其进行修改和删除操作。

1.修改视图

修改视图的过程即为重新定义视图的过程。可以通过首先删除视图,然后再次创建实现。另外,Oralce也提供了一个专门的命令--create or replace view来重新定义视图。其语法形式如下所示。

    create or replace view 视图名称 as 查询语句|关系运算

【示例11-6】 假设现在需要为视图vw_employees添加新列employee_age,那么可以利用如下SQL语句。

    create or replace view vw_employees as 
    select employee_id, employee_name, employee_position,
    employee_age from employees

其中create or replace view vw_employees用于创建或者替换视图vw_employees的定义;as之后的查询语句为视图的新定义,在新定义中增加了列employee_age。

注意:create or replace view命令的作用。当同名视图不存在时,将执行创建命令;否则将执行替换命令。

可以通过查询视图内容验证是否成功执行了视图重定义,SQL语句如下所示。

    SQL> select * from vw_employees; 
      
    EMPLOYEE_ID   EMPLOYEE_NAME   EMPLOYEE_POSITION   EMPLOYEE_AGE 
    -----------   -------------   -----------------   ------------ 
         1              王晓              开发经理    35 
         2              钟平             高级工程师   30 
         3              刘俊              高级工程师   25 
         4              王龙              工程师     24 
         5              钟文              工程师     24 
         6              张三              测试工程师  
      
    6 rows selected 

在查询结果中可以获得新列employee_age,代表视图的重定义已经成功执行。

2.删除视图

删除视图的动作实际为删除数据库中的对象操作,因此该操作为DML操作。如同删除数据表对象,删除视图也应该使用drop命令,其语法形式如下所示。

    drop view view_name

其中drop view向数据库发送删除视图命令;view_name则指定了要删除的视图名称。

【示例11-7】 如需删除视图vw_employees,则可以利用如下SQL语句。

    SQL> drop view vw_employees; 
      
    View dropped 

可以通过查询视图内容来验证vw_employees是否成功删除。

    SQL> select * from vw_employees; 
      
    select * from vw_employees 
      
    ORA-00942: table or view does not exist 

ORA-00942: table or view does not exist为Oracle抛出的错误,表示表或视图不存在,印证了利用drop命令已经成功删除了视图vw_employees。