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