修改表

1添加列,下面这个例子使用alter table 语句向table1添加一个名为column1的列

alter table table1

add column1 interger;

2修改列

   1修改列的长度

   alter table table1 modify  status varchar2(15);

   2修改数字列的精度

   alter table  modify id number(5);

   3修改列的数据类型

   alter table table1 modify status char(15);

   4修改列的默认值

   atler table table1 modify column1 default sysdate-1;

   5删除列

   alter table table1 drop column column

3添加约束

   1 check, not null,primary key,foreign key,unique,check,option,read only

4删除约束

aler table table1 drop constraint constraint1;

5禁用约束

alter table table1 add constraint   constraint1 unique disable;

6启用约束

alter table table1 enable table1 enable constraint constraint1;

7获得有关约束的信息

select constraint_name,constraint_type,status,deferrable(延迟),deferred from user_constraints where table_name='table1';

8获得有关列的约束的信息

下面这个例子检索user_cons_columns中order_status2表constraint_name和column_name;

column colum_name format a15

select constraint_name,column_name from user_cons_columns where table_name='order_status2';9

9重命名表

rename table1 to table2;

10向表添加注释

注释有助于记住表或列的用途。使用comment语句可以为表或列添加注释。下面这个例子为order_status2表添加注释:

comment on table order_status2 is

'order_status2 stores the state of an order';

下面这个例子为order_status2.last_modified 列添加注释:

comment on colum oder_status2.last_modified is

'last_modified stores the date and time the order was modified last';

11获得表的注释

select * from user_tab_comments

where table_name='order_status';

12获得列的注释

使用user_col_comments可以获得有关列的注释。

select *

from user_col_comments

where table_name='order_status';

13创建序列

  create sequence sequence_name;

   获取有关序列的信息

  select * from sequence_name

   下面这个例子是从用户中获取有关序列的信息

 select * from user_sequences;

14 创建索引

   create [unique] index index_name on table_name(column_name,[column_name...])

   tablespace tab_space;

  例如:创建单列索引;create index customers_last_name_idx on customers(last_name);

        创建唯一索引可以实现列值的唯一性。例如下面的语句对customers.phone列创建一个唯一索引customers_last_name_idx;

        create unique index customers_phone_idx on customers(phone);

 我们也可以多列创建复合索引,例如,下面这个语句就对employee表的firs_name和last_name列创建一个复合索引employee_first_last_name_idx on

employees(first_name,last_name);

15创建基于函数的索引

 上节已经介绍了索引customers_last_name_idx

  它是这样创建的 create index customers_last_name_idx on customers(last_name);

 假设执行下面这个查询:select first_name,last_name  from customers

 where last_name=upper('price');

由于使用了upper函数,因此创建的所有就不会被执行

要执行就得创建基于函数的索引:

create index customers_last_name_func_idx on customers(upper(last_name));

例外为了利用基于函数的索引,DBA必须初始化参数query_rewrite_endabled

alter system set query_rewrite_enabled=true;

16获取有关索引的信息

  索引列的信息包括index_name,table_owner,table_name,uniqueness,status;select index_name,table_name,uniqueness,status
  2  from user_indexes
  3  where table_name in('customers','employees');
 

17获取有关列索引的值

 select index_name,table_name,column_name from

 user_ind_columns

where table_name in('customers','employees');

18 修改索引

alter index index_name rename to index_name2;

19删除索引

drop index index_name;

 

 

    

 

posted @ 2012-04-21 17:27  残阳飞雪  阅读(1800)  评论(0编辑  收藏  举报