■ 準備
使用するテーブル(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