表管理--备份/修改/恢复
一、表名
1、修改表名:ALTER TABLE TABLE_NAME RENAME OLD_NAME TO NEW_NAME;
二、主键
1、查找约束:SELECT CONSTRAINT_NAME FROM USER_CONS_COLUMNS WHERE TABLE_NAME='TABLE_NAME';
2、增加约束:ALTER TABLE TABLE_NAME ADD CONSTRAINT PK_NAME PRIMARY KEY(COLUMN);
3、删除约束:ALTER TABLE TABLE_NAME DROP CONSTRAINT PK_NAME;
4、修改主键名:
ALTER TABLE TABLE_NAME DISABLE PRIMARY KEY;
ALTER TABLE TABLE_NAME RENAME CONSTRAINT PK_OLD_NAME TO PK_NEW_NAME;
ALTER TABLE TABLE_NAME ENABLE PRIMARY KEY;
三、索引
1、重命名:ALTER INDEX OLD_NAME RENAME TO NEW_NAME;
四、表字段
1、添加字段:ALTER TABLE TABLE_NAME ADD (COLUMN DATA_TYPE [DEFAULT][NULL/NOT NULL][UNIQUE],... );
2、删除字段:ALTER TABLE TABLE_NAME DROP(COLUMN);
3、修改字段:ALTER TABLE TABLE_NAME MODIFY(COLUMN DATA_TYPE [DEFAULT][NULL/NOT NULL][UNIQUE],... );
4、重命名字段:ALTER TABLE TABLE_NAME RENAME COLUMN OLD_NAME TO NEW_NAME;
五、表备份及恢复
【Oracle】数据库备份与恢复的3种备份方法:导出/导入(EXP/IMP).热备份和冷备份. 导出 ...
备份方案一:
1. 备份:create table [备份名] as select * from [表名];
2. 恢复:truncate table [表名]; insert into [表名] select * from [备份名] ;
3. 说明:此种情况适用于,同一个数据库,需要备份某张表。
备份方案二:
1. 备份:
oracle用户终端执行:exp [用户名]/[密码] tables=[表一],[表二] file=/home/oracle/table.dmp
2. 恢复:
oracle用户终端执行:imp [用户名]/[密码] grants=y commit=y full=y ignore=y file=/home/oracle/table.dmp
备份方案三:
1. 备份:
登录sqlplus:sqlplus / as sysdba
创建directory:create directory dpdata as '/home/oracle/';
目录创建以后,就可以把读写权限授予特定用户:grant read, write on directory dpdata to [用户名];
oracle用户终端执行:expdp [用户名]/[密码] tables=[表一],[表二] directory=dpdata dumpfile=table.dmp job_name=cases_export
2. 恢复:
登录sqlplus :sqlplus / as sysdba
创建directory:create directory dpdata as '/home/oracle/';
目录创建以后,就可以把读写权限授予特定用户:grant read, write on directory dpdata to [用户名];
oracle用户终端执行:impdp [用户名]/[密码] directory=dpdata dumpfile=table.dmp job_name=cases_export
3. 说明:
查询dba_directories查看所有directory:select * from dba_directories;
删除directory:drop directory dpdata;
六、建表/修改表
--约束:主键约束、外键约束、非空约束、唯一约束、检查约束
--CONSTRAINT:PRIMARY KEY、FOREIGN KEY 、NOT NULL、UNIQUE、CHECK
--级联 :CASCADE
--级联删除表:DROP TABLE USER_NAME.TABLE_NAME CASCADE CONSTRAINT;
--删表:TRUNCATE USER_NAME.TABLE_NAME;
--1.建表语句
CREATE TABLE USER_NAME.TABLE_NAME(
C_NAME VARCHAR2(10) NOT NULL,--非空约束
ID_CARD VARCHAR2(18 BYTE) UNIQUE NOT NULL,--唯一约束
BIRTHDAY DATE NOT NULL,
SEX VARCHAR2(4) CHECK ( SEX IN ('男','女') ),--检查约束
AGE NUMBER CHECK ( AGE >0 ),
UPDATETIME DEFAULT SYSDATE,--默认值
CONSTRAINT TABLE_NAME_PK PRIMARY KEY(C_NAME)--主键约束(单列)
)
TABLESPACE TABLESPACE_NAME;
--2.添加备注(列,表)
COMMENT ON COLUMN USER_NAME.TABLE_NAME.C_NAME IS '中文名';
COMMENT ON COLUMN USER_NAME.TABLE_NAME.ID_CARD IS '身份证号';
COMMENT ON TABLE USER_NAME.TABLE_NAME IS '人员信息表' ;
ALTER TABLE USER_NAME.TABLE_NAME
ADD CONSTRAINT TABLE_NAME_PK PRIMARY KEY(C_NAME,ID_CARD);
--3.查看备注
SELECT * FROM USER_TAB_COMMENTS WHERE TABLE_NAME='TABLENAME';
SELECT * FROM USER_COL_COMMENTS WHERE TABLE_NAME='TABLENAME';
--查看表的结构(SCRIPT,DATA,INDEXS,PARTITION,...)
DESC TABLE_NAME;
SELECT DBMS_METADATA.GET_DDL('TABLE','table_name大写') FROM DUAL;
--DDL表:
--一、管理列COLUMN
--1、新增1列:
ALTER TABLE T1 ADD POSITION VARCHAR2(40);
--2、修改1列:
ALTER TABLE T1 MODIFY POSITION VARCHAR2(20);
--3、删除1列:
ALTER TABLE T1 DROP COLUMN POSITION ;
--4、新增多列:
ALTER TABLE T1 ADD (POSITION VARCHAR2(40),COVERNAME VARCHAR2(40));
--5、修改多列:
ALTER TABLE T1 MODIFY (POSITION VARCHAR2(40),COVERNAME VARCHAR2(40));
--6、删除多列:
ALTER TABLE T1 DROP (POSITION ,COVERNAME);
7、重命名列:
ALTER TABLE T1 RENAME COLUMN col1 TO col2;
注:
1、增加、修改单列:不需要加关键字COLUMN,否则会报错ora-00905;需要加数据类型。
2、删除单列:一定要加COLUMN,然后记住,删除是不需要加列类型的。