`
lushuaiyin
  • 浏览: 676259 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

 
阅读更多


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

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

USER_NAME PASSWORD AGE USER_ID
张三 23232 34 6DEA3727FFA8016D005B8B04D5CCB00E
admin 111111 21 A10CF67AFFA8016D000B96A539684B1E
李四 123s 24 6DA32648FFA8016D01F2F4B65643D6A8
郭德纲 asd 333 9AD76CD8FFA8016B01E969D957C69860


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








分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics