天天看点

oracle 删除列与视图操作

oracle删除列

语法  alter table 表名 drop column 列名

<a href="http://zhengweiit.blog.51cto.com/attachment/201103/16/1109863_13002587299T9d.png"></a>

如果需要删除的列包含主从关系,为主表的主键,删除时需要加入cascade constraints参数

<a href="http://zhengweiit.blog.51cto.com/attachment/201103/16/1109863_1300258732XPHk.png"></a>

以上案例,首先以EMP表中的主键EMPNO列成为主表,MGR为外表中的列,当删除主表中的主键时,必须加入cascade constraints参数。

也可以设置一列成为不可用列,unuserd状态

语法  alter table 表名 set unuserd column列名

注意:设置unuserd状态的列不可恢复 可以使用alter table 表名 drop unused columns 进行删除

<a href="http://zhengweiit.blog.51cto.com/attachment/201103/16/1109863_1300258734mSrB.png"></a>

以上案例,首先设置bonus表中的sal为不可用列,再查看表结构时已不存在,其实并没有删除,然后使用drop unused进行删除

视图

定义: 视图可以被看做是一条select语句。 用于显示一张或多张表,或其他视图的相关数据。

视图来源于表,这些表称为视图的基表。对视图数据的修改都将会定义到基表当中,并且修改必须遵照基表的约束,同样会触发基表的触发器。

视图是一条由select构成的虚拟表

优势

提高安全性

可以只引用某表的某一部分

简化部分查询

检索多张表的数据

权限   创建视图需要create view权限

语法  create view 视图名 as select语句

首先赋予SCOTT用于创建视图的权限

<a href="http://zhengweiit.blog.51cto.com/attachment/201103/16/1109863_13002587353Zxh.png"></a>

创建视图

<a href="http://zhengweiit.blog.51cto.com/attachment/201103/16/1109863_1300258736sJZl.png"></a>

查看视图,与查看table一样,使用select

<a href="http://zhengweiit.blog.51cto.com/attachment/201103/16/1109863_13002587389jci.png"></a>

参数 

or replace 替换已经存在的视图

<a href="http://zhengweiit.blog.51cto.com/attachment/201103/16/1109863_13002587401WCH.png"></a>

force 不管基表是否存在,都创建视图

<a href="http://zhengweiit.blog.51cto.com/attachment/201103/16/1109863_1300258741COiT.png"></a>

如以上案例,虽然视图创建时显示编译错误,但其实还是创建成功了。

no forece 只有基表存在时才能创建视图(默认情况下也是)

with chect option 在对视图进行修改时必须满足对基表约束的条件

<a href="http://zhengweiit.blog.51cto.com/attachment/201103/16/1109863_1300258741OfP7.png"></a>

with read only 只读视图

<a href="http://zhengweiit.blog.51cto.com/attachment/201103/16/1109863_1300258742w5tO.png"></a>

drop 删除视图

<a href="http://zhengweiit.blog.51cto.com/attachment/201103/16/1109863_1300258742UQ9T.png"></a>

查看用户的所有视图 select * from user_views;

本文转自 郑伟  51CTO博客,原文链接:http://blog.51cto.com/zhengweiit/516795