oracle日常sql

本文档详细介绍了如何使用SQL语句在Oracle数据库中进行表结构的修改操作,包括添加、删除字段,更改字段名称及数据类型等。此外还提供了关于设置默认值、添加外键约束及闪回操作的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--【添加单个字段】
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值