现在有一张表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