0%

Oracle 將 A table的資料複製到 B table

如題,假設目前要將個人資料(Person)複製到客戶資料表(Customer)應該要怎麼做呢?

以下使用這個網站來進行SQL的測試,這個網站支援很多種類型的資料庫
http://sqlfiddle.com/

Create Table

DDL Create Table

1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE TABLE Person (
National_Id varchar(12),
Name varchar(50),
Address varchar(255),
Phone varchar(20)
);

CREATE TABLE Customer (
Cust_Id varchar(12),
Lvl varchar(2),
Name varchar(50),
Address varchar(255),
Phone varchar(20)
);

建測試資料

1
2
INSERT INTO Person (National_Id, Name, Address, Phone)
VALUES ('A123456789', 'YOYO', 'OO路300號', '12345678');

如圖,DDL Script跟insert SQL寫在左邊

如此一來就會建立兩張table,並在Person table中加入一筆資料

右邊是查詢語句,下面是結果

1
2
select * from Person;
select * from Customer;

複製資料

將A table的資料複製到B table,可以將insert跟select組在一起,如下:

1
2
INSERT INTO Customer (Cust_Id, Lvl ,Name, Address, Phone)
SELECT National_Id,'L1',Name, Address, Phone FROM Person;

查看結果,資料已成功複製過去

不過這個寫法僅限於B table已存在的狀態下

如果是B table不存在的話,可以這樣做

1
2
create table Customer as
SELECT National_Id,Name, Address, Phone FROM Person;

執行結果如圖

參考資料

  1. SQL Fiddle 使用教學https://www.jinnsblog.com/2013/09/sql-fiddle-test-sql-syntax-online.html
  2. Create table DDL https://www.fooish.com/sql/create-table.html
  3. 兩種複製資料的做法https://stackoverflow.com/questions/2250196/select-into-using-oracle