■ 準備
使用するテーブル(PostgreSQLの場合)
personCREATE TABLE person ( id character(8) NOT NULL, name character varying(100), sex character(1), updatedate timestamp without time zone, CONSTRAINT person_pkey PRIMARY KEY (id) )worker
CREATE TABLE worker ( id character(8) NOT NULL, name character varying(100), sex character(1), updatedate timestamp without time zone, CONSTRAINT worker_pkey PRIMARY KEY (id) )
■ データの追加
* 「INSERT INTO ~ VALUES ~」を使用
構文
INSERT INTO 【テーブル名】(
【追加対象項目1】(,【項目2】...))
VALUES ( 【追加対象データ1】(,【データ2】...));
サンプル
INSERT INTO person(
id, name, sex, updatedate)
VALUES ('X0000001', 'Mike', 'm', NOW());
■ 一括で複数データの追加
* 「VALUES (...);」をカンマ区切りで「VALUES (...),...,(...);」
構文
INSERT INTO 【テーブル名】(
【追加対象項目1】(,【項目2】...))
VALUES ( 【追加対象データ1-1】(,【データ2-1】...)),
( 【追加対象データ1-1】(,【データ2-1】...)),
( ...);
サンプル
INSERT INTO person(
id, name, sex, updatedate)
VALUES ('X0000002', 'Sam', 'm', NOW()),
('X0000003', 'Tom', 'm', NOW()),
('X0000004', 'Amy', 'f', NOW()),
('X0000005', 'Naomi', 'f', NOW()),
('X0000006', 'Ken', 'm', NOW());
■ 別テーブルから取得してきたデータを追加
* SELECT INSERT文「INSERT INTO ~ SELECT ~」を使用
構文
INSERT INTO 【テーブル名(追加先)】(
【追加対象項目1】(,【項目2】...))
SELECT 【追加対象データ1】(,【データ2】...)
FROM 【テーブル名(追加元)】 (WHERE 【条件式】);
サンプル
テーブルのデータをコピーINSERT INTO worker(
id, name, sex, updatedate)
SELECT id, name, sex, updatedate
FROM person;
補足:SELECT文でフィールドの一部だけを使って、INSERTしたい場合
https://oshiete.goo.ne.jp/qa/162964.htmlより、固定値('m'とかの部分)にすればいい
INSERT INTO worker(
id, name, sex, updatedate)
SELECT id, name, 'm', '2018-01-30 00:00:00'
FROM person;
関連記事
データ追加 ~ INSERT文 ~
http://blogs.yahoo.co.jp/dk521123/16106035.htmlデータ修正 ~ UPDATE文 ~
http://blogs.yahoo.co.jp/dk521123/18086535.htmlデータ削除 ~ DELETE文/TRUNCATE TABLE文 ~
http://blogs.yahoo.co.jp/dk521123/18350647.htmlMySQL での データ移行 を考える
* SELECT INSERT文は、データ移行としても使えるhttp://blogs.yahoo.co.jp/dk521123/36589352.html