oracle复制一张表(表结构和数据),2张表的数据转移;rename表名,字段名


现在有一张表TEST(已经有数据),表结构如下:

create table MYTEST
(
  user_name VARCHAR2(30),
  password  VARCHAR2(45),
  age       NUMBER(3),
  user_id   VARCHAR2(32) not null
)
数据:

USER_NAMEPASSWORDAGEUSER_ID
张三23232346DEA3727FFA8016D005B8B04D5CCB00E
admin11111121A10CF67AFFA8016D000B96A539684B1E
李四123s246DA32648FFA8016D01F2F4B65643D6A8
郭德纲asd3339AD76CD8FFA8016B01E969D957C69860


rename使用:

一:修改表的名字。
rename MYTEST to MYTEST2

这时我们再查询改名后的表,就能查到数据。
而再去查以前的表就会报错ORA-00942:表或视图不存在。

二:修改字段的名字。
(我们把表明再改回去,回复原状。)

alter table MYTEST  rename column user_name to user_name_new


这时的表结构:
create table MYTEST
(
  user_name_new VARCHAR2(30),
  password      VARCHAR2(45),
  age           NUMBER(3),
  user_id       VARCHAR2(32) not null
)

2张表的数据复制,转移。

-------------------------------有一张表存在,创建新表--------------------------------------------
现在开始表和表之间的数据倒腾。
一:创建一个新表YOUTEST,表结构要和已有的表MYTEST一样,并且数据也要倒过去。

create table YOUTEST as 
 select * from MYTEST

(注意as关键字不能用is代替)


二,创建一个新表YOUTEST_B,表结构要和已有的表MYTEST一样,但是不倒数据,只要表结构。
后面多加了where 1=2的过滤条件,把数据都过滤掉,也可以在where中添加自己的过滤条件,
那样就是把符合条件的数据倒过去了。

 create table YOUTEST_B as 
 select * from MYTEST  where 1=2 

三,创建一个新表YOUTEST_C,表结构只要表MYTEST的某些字段,并且数据也要倒过去。
3-1(字段名称不变)
create table YOUTEST_C as 
 select MYTEST.USER_NAME,MYTEST.AGE from MYTEST  
3-2(创建时同时修改字段名)
create table YOUTEST_C_2(C_USER_NAME,C_AGE) as 
 select MYTEST.USER_NAME,MYTEST.AGE from MYTEST  
注:也可以创建好后使用rename来修改字段名,用modify来修改字段定义,那样就多一步了。

四,创建一个新表YOUTEST_D,表结构只要表MYTEST的某些字段,但是不倒数据,只要表结构。
(同上三,只是后面多加了where 1=2的过滤条件,把数据都过滤掉)
create table YOUTEST_D as 
 select MYTEST.USER_NAME,MYTEST.AGE from MYTEST 
  where 1=2 

----------------------------------2张表都存在------------------------------------

一,表结构相同的表,一张有数据MYTEST,一张无数据YOUTEST_B,把有数据的表的数据拷贝到无数据的表中。

insert into YOUTEST_B 
 select * from MYTEST

二,表结构不相同的表,某些字段相同,一张有数据MYTEST,一张无数据YOUTEST_D,
把这些字段的值对应拷贝到目标表的字段中。


insert into YOUTEST_D(YOUTEST_D.USER_NAME,YOUTEST_D.AGE) 
 select MYTEST.USER_NAME,MYTEST.AGE from MYTEST








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值