oracle----复制表中的数据

时间:2020-12-16 15:32:36

两种方法:

1. 在创建表的时候将数据从其他表中复制过来(并且表的结构也复制过来):

语法:

 

CREATE TABLE table_name
AS
SELECT column1,......|* FROM table_old;
SQL>
SQL> create table userinfo_new
2 AS
3 SELECT * from userinfo; 表已创建。 SQL> desc userinfo_new;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
ID NUMBER(6)
USERNAME VARCHAR2(20)
USERPWD VARCHAR2(20)
EMAIL VARCHAR2(30)
REGDATE DATE SQL>

值也复制了:

SQL> select * from userinfo_new;

        ID USERNAME             USERPWD
---------- -------------------- --------------------
EMAIL REGDATE
------------------------------ --------------
1 xxx 123456
ltwuyanlong@163.com 20-9月 -15 2 yyy 456123 3
无 ID USERNAME USERPWD
SQL> desc userinfo_new1
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
ID NUMBER(6)
USERNAME VARCHAR2(20) SQL> select * from userinfo_new1; ID USERNAME
---------- --------------------
1 xxx
2 yyy
3
4 SQL>

---------- -------------------- --------------------
EMAIL REGDATE
------------------------------ --------------
4
631464569@163.com SQL>

2. 在添加数据的时候将数据从其他表中复制过来:

语法:

INSERT INTO table_name
[(column1,column2,...)]
select column1,column2,.....| from table_old

这种情况下必须要求两张表都已经存在了才可以使用!

SQL> insert into userinfo_new
2 select * from userinfo; 已创建4行。 SQL> select id from userinfo_new; ID
----------
1
2
3
4
1
2
3
4 已选择8行。 SQL>

指定插入字段:

SQL>
SQL> insert into userinfo_new(id,username)
2 select id,username from userinfo; 已创建4行。 SQL> select id ,username from userinfo_new; ID USERNAME
---------- --------------------
1 xxx
2 yyy
3
4
1 xxx
2 yyy
3
4
1 xxx
2 yyy
3 ID USERNAME
---------- --------------------
4 已选择12行。 SQL>