--【添加单个字段】
alter table tableName
add columnName VARCHAR2(50);
--添加字段备注
comment on column tableName.columnName is '备注说明';
--检查
select columnName from tableName;
【添加多个字段】
alter table tableName
add columnName VARCHAR2(50)
add columnName2 VARCHAR2(50)
--【删除字段】
alter table tableName drop column columnName;
--【更改字段名字】
alter table tableName rename column oldColumnName to newColumnName;
如果oldColumnName用到了数据库关键字,需要将oldColumnName改成大写并且用双引号括起来
alter table tableName rename column "oldColumnName大写" to newColumnName;
--【添加外键约束】
ALTER TABLE tableName
ADD CONSTRAINT fkName FOREIGN KEY (mainTableId)
REFERENCES mainTableName (ID);
--【设置默认值】
alter table tableName modify(columnName default 0);
--【更改数据类型】
1、假设字段数据为空,则不管改为什么字段类型,可以直接执行:
alter table tableName modify (columnName nvarchar2(20));
2、假设字段有数据,则改为nvarchar2(20)可以直接执行(当类型为clob时不能直接转为varchar类型):
alter table tableName modify (columnName nvarchar2(20));
3、假设字段有数据,则改为varchar2(40)执行时会弹出:“ORA-01439:要更改数据类型,则要修改的列必须为空”,这时要用下面方法来解决这个问题:
/*修改原字段名columnName为columnName_tmp*/
alter table tableName rename column columnName to columnName_tmp;
/*增加一个和原字段名同名的字段columnName*/
alter table tableName add columnName varchar2(40);
comment on column tableName.columnName is '备注说明';
/*将原字段columnName_tmp数据更新到增加的字段columnName*/
update tableName set columnName=trim(columnName_tmp);
/*更新完,删除原字段columnName_tmp*/
alter table tableName drop column columnName_tmp;
--检查
select columnName from tableName;
【闪回】
alter table SJ_WORK_ITEM enable row movement;
select * from SJ_WORK_ITEM as of timestamp to_timestamp('2014-10-15','yyyy-mm-dd')
flashback table SJ_WORK_ITEM to timestamp to_timestamp('2014-10-15','yyyy-mm-dd');
flashback database to time=to_data('2014-10-15 16:00:00')
【导数据】
测试库数据导进开发库:
用system登陆(密码oracle)
删除开发库用户:drop user sjgk cascade;
创建开发库用户:create user sjgk identified by sjgk default tablespace SJGK temporary tablespace TEMP;
给用户授予权限:grant connect, resource to sjgk;
grant unlimited tablespace to sjgk;
用sjgk_test登陆,导出测试库数据: $exp sjgk_test/sjgk@ORCL owner=sjgk_test file=D:\20140424.dmp log=d:\orabackup\20140424.log;
用sjgk登陆,把测试库的数据导进开发库: $imp sjgk/sjgk@ORCL fromuser=sjgk_test touser=sjgk file=d:\20140424.dmp log=d:\orabackup\2014042401.log;
【授权】
给予用户创建视图权限
grant create any view to sjgk_test;
【其他】
varchar2类型最大长度为4000
alter table tableName
add columnName VARCHAR2(50);
--添加字段备注
comment on column tableName.columnName is '备注说明';
--检查
select columnName from tableName;
【添加多个字段】
alter table tableName
add columnName VARCHAR2(50)
add columnName2 VARCHAR2(50)
--【删除字段】
alter table tableName drop column columnName;
--【更改字段名字】
alter table tableName rename column oldColumnName to newColumnName;
如果oldColumnName用到了数据库关键字,需要将oldColumnName改成大写并且用双引号括起来
alter table tableName rename column "oldColumnName大写" to newColumnName;
--【添加外键约束】
ALTER TABLE tableName
ADD CONSTRAINT fkName FOREIGN KEY (mainTableId)
REFERENCES mainTableName (ID);
--【设置默认值】
alter table tableName modify(columnName default 0);
--【更改数据类型】
1、假设字段数据为空,则不管改为什么字段类型,可以直接执行:
alter table tableName modify (columnName nvarchar2(20));
2、假设字段有数据,则改为nvarchar2(20)可以直接执行(当类型为clob时不能直接转为varchar类型):
alter table tableName modify (columnName nvarchar2(20));
3、假设字段有数据,则改为varchar2(40)执行时会弹出:“ORA-01439:要更改数据类型,则要修改的列必须为空”,这时要用下面方法来解决这个问题:
/*修改原字段名columnName为columnName_tmp*/
alter table tableName rename column columnName to columnName_tmp;
/*增加一个和原字段名同名的字段columnName*/
alter table tableName add columnName varchar2(40);
comment on column tableName.columnName is '备注说明';
/*将原字段columnName_tmp数据更新到增加的字段columnName*/
update tableName set columnName=trim(columnName_tmp);
/*更新完,删除原字段columnName_tmp*/
alter table tableName drop column columnName_tmp;
--检查
select columnName from tableName;
【闪回】
alter table SJ_WORK_ITEM enable row movement;
select * from SJ_WORK_ITEM as of timestamp to_timestamp('2014-10-15','yyyy-mm-dd')
flashback table SJ_WORK_ITEM to timestamp to_timestamp('2014-10-15','yyyy-mm-dd');
flashback database to time=to_data('2014-10-15 16:00:00')
【导数据】
测试库数据导进开发库:
用system登陆(密码oracle)
删除开发库用户:drop user sjgk cascade;
创建开发库用户:create user sjgk identified by sjgk default tablespace SJGK temporary tablespace TEMP;
给用户授予权限:grant connect, resource to sjgk;
grant unlimited tablespace to sjgk;
用sjgk_test登陆,导出测试库数据: $exp sjgk_test/sjgk@ORCL owner=sjgk_test file=D:\20140424.dmp log=d:\orabackup\20140424.log;
用sjgk登陆,把测试库的数据导进开发库: $imp sjgk/sjgk@ORCL fromuser=sjgk_test touser=sjgk file=d:\20140424.dmp log=d:\orabackup\2014042401.log;
【授权】
给予用户创建视图权限
grant create any view to sjgk_test;
【其他】
varchar2类型最大长度为4000