zoukankan      html  css  js  c++  java
  • 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;
        

  • 相关阅读:
    简单三层代码生成器原理剖析
    深入浅出三层架构
    SQL Server数据的批量导入
    BULK INSERT如何将大量数据高效地导入SQL Server
    用扩展方法优化多条件查询
    SQL Server 数据库访问通用类(更新)
    SQL中自增量字段Int型 identity(1,1)与Guid作为主键的性能比较
    MD5加盐实现登录
    Pi币
    SQL Server 分割字符串转列
  • 原文地址:https://www.cnblogs.com/tippoint/p/2862937.html
Copyright © 2011-2022 走看看