您的位置:首页 > 数据库 > Oracle

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

2013-02-28 14:13 399 查看
现在有一张表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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: