2007-05-10

充分认识 Oracle 数据库表与视图

来源: 赛迪网 作者:佚名 评论 0 条
 


3、删除数据列


优化ORACLE数据库,唯一的方法是删除列,重新建立数据库。在ORACLE8i中有很多方法删除列,你可以删除未用数据列或者可以标示该列为未用数据列然后删除。


删除数据列的语法是:

ALTER TABLE [schema.] table_name DROP
{COLUM column_names | (column_names)}[CASCADE CONSTRAINS]


要注重的是在删除列时关于该列的索引和完整性约束也同时删除。注重要害字CASCADE CONSTRAINS,假如删除的列是多列约束的一部分,那么这个约束条件相对于其他列也同时删除。


假如用户担心在大型数据库中删除列要花太多时间,可以先将他们标记为未用数据列,标记未用数据列的语法如下:

ALTER TABLE [schema.] table_name SET UNUSED
{COLUM column_names | (column_names)}[CASCADE CONSTRAINS]


这个语句将一个或多个数据列标记为未用数据列,但并不删除数据列中的数据,也不释放占用的磁盘空间。但是,未用数据列在视图和数据字典中并不显示,并且该数据列的名称将被删除,新的数据列可以使用这个名称。基于该数据列的索引、约束,统计等都将被删除。


删除未用数据列的语句是:

ALTER TABLE [schema.] table_name DROP
{UNUSED COLUM | COLUMN CONTINUE}


删除表和更改表名


删除表非常简单,但它是一个不可逆转的行为。


语法:

DROP TABLE [schema.] table_name [CASCADE CONSTRAINTS]


删除表后,表上的索引、触发器、权限、完整性约束也同时删除。ORACLE不能删除视图,或其他程序单元,但oracle将标示他们无效。假如删除的表涉及引用主键或唯一要害字的完整性约束时,那么DROP TABLE语句就必须包含CASCADE CONSTRAINTS子串。


更改表名


RENAME命令用于给表和其他数据库对象改名。ORACLE系统自动将基于旧表的完整性约束、索引、权限转移到新表中。ORACLE同时使所有基于旧表的数据库对象,比如视图、程序、函数等,为不合法。


语法:


RENAME old_name TO new_name;


例:

SQL> RENAME orders TO purchase_orders;

TABLE RENAMED


截短表


TRUNCATE命令与DROP命令相似, 但他不是删除整个数据表,所以索引、完整性约束、触发器、权限等都不会被删除。缺省情况下将释放部分表和视图空间,假如用户不希望释放表空间,TRUNCATE语句中要包含REUSE STORAGE子串。TRUNCATE命令语法如下:

TRUNCATE {TABLE|CLUSTER} [schema.]
name {DROP|REUSE STORAGE}


例:

SQL> TRUNCATE TABLE t1;

TABLE truncate.


治理视图


视图是一个或多个表中的数据的简化描述,用户可以将视图看成一个存储查询(stored query)或一个虚拟表(virtual table).查询仅仅存储在oracle数据字典中,实际的数据没有存放在任何其它地方,所以建立视图不用消耗其他的空间。视图也可以隐藏复杂查询,比如多表查询,但用户只能看见视图。视图可以有与他所基于表的列名不同的列名。用户可以建立限制其他用户访问的视图。


建立视图


CREATE VIEW命令创建视图,定义视图的查询可以建立在一个或多个表,或其他视图上。查询不能有FOR UPDATE子串,在早期的ORACLE8i版本中不支持ORDER BY子串,现在的版本中CREATE VIEW可以拥有ORDER BY子串。


例:

SQL> CREATE VIEW TOP_EMP AS

SELECT empno EMPLOYEE_ID,ename EMPLOYEE_NAME,salary

FROM emp

WHERE salary >2000


用户可以在创建视图的同时更改列名,方法是在视图名后立即加上要命名的列名。重新定义视图需要包含OR REPLACE子串。
共3页: 上一页 [1] 2 [3] 下一页

(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:在Oracle 10g中如何获得索引建议  
下一篇:通过JDBC连接oracle数据库的十大技巧
    评论加载中…
 推荐文章
     

网站首页  -  网站地图 -   站长论坛  -  网站投稿  -    -  网站管理
Copyright © 2008 芜湖站长站 All Rights Reserved 皖ICP备07500611号