oracle的segments(表、字段、约束、索引)操作

一、表
   1.创建表
     create table a(a int,cname varchar2(10)) storage(
                      initial 128K next 128K pctincrease 0 minextends 1 maxextends 5)
            tablespace snktablespace;
     create table b as select * from a;
   2.修改表
     alter table a move tablespace newtablspace;
   3.重命名表
     alter table a rename to b;
   4.清空删除表
     truncate table a;
     drop table a;
   5.修改所有表所属表空间
     Select 'alter table '||table_name||' move tablespace SNKTABLESPACE;' from user_all_tables;

二、字段
    1.新增加字段
      alter table a add cname varchar2(10);
    2.修改字段
      alter table a modify cname varchar2(20) not null;
    3.重命名字段
      alter table a rename column cname to truename;
    4.删除字段
      alter tale a drop column cname;
    5.所有表的字段查询
      select * from user_tab_columns

三、约束
    1.创建主键
      alter table a add constraint pk_id primary key(id)
    2.无修改主键只能删除后重新建立
    3.删除主键
      alter table a drop constraint pk_id;
    4.创建唯一约束
      alter table a add constraint id_unique unique(id);
    5.删除唯一约束
      alter table a drop constraint id_unique;
    6.创建check约束
      alter table a add constraint ck_name check(cname in('tom','anna'))
    7.删除check约束
      alter table a drop constraint ck_name;
    8.所有表的约束
      select * from user_constraints

四、索引
    1.创建普通索引
      create index idx_id on a(id);
    2.修改索引所属表空间
      alter index idx_id REBUILD TABLESPACE NEW_TABLESPACE ONLINE;
    3. 修改所有索引所属表空间
      Select 'alter index '||INDEX_NAME||' REBUILD tablespace SNKINDEXEXSPACE ONLINE;' from USER_INDEXES;
    4.删除索引
      drop index idx_id;
    5.修改lob字段所属表空间
      alter table a move lob(id) store as (tablespace new_tablespace);
    6.修改所有表lob字段所属表空间
      select 'alter table '||table_name||' move lob ('||column_name||') store as(tablespace BANKINDEXSPACE);' from USER_LOBS
    7.查询所有不能用的索引并修正
      select * from user_indexes where status='UNUSABLE'
      select 'ALTER INDEX '||index_name||' REBUILD ;' from USER_INDEXES   where status='UNUSABLE'  
    8.索引所用到的列信息
      select * from user_ind_columns(dba_ind_columns)
   
五、批量生成表定义和索引定义
    以下均在sqlplus下执行
SQL> set pagesize 0
SQL> set long 90000
SQL> set feedback off
SQL> set echo off
SQL> spool d:/get_schema.sql  --注意账户有权限创建文件

SQL> SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u;   ---生成创建表的脚本 一般exp会自动创建
SQL> SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name) FROM USER_INDEXES u;  --生成创建索引的脚本

SQL> spool off;
    

posted @ 2013-01-16 16:04  天生我豺  阅读(2265)  评论(0编辑  收藏  举报