您的位置:首页 > 数据库 > Oracle

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

2013-01-16 16:04 495 查看
一、表
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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: