ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
SQL INSERT 文とは
INSERT 文はテーブルに新しいレコードを追加するための DML (Data Manipulation Language) です。SELECT / UPDATE / DELETE と並ぶ SQL の最も基本的なコマンドのひとつ。
基本構文
INSERT INTO テーブル名 (
カラム名1,
カラム名2,
...
) VALUES (
値1,
値2,
...
);
カラム名と値は順序が対応します(カラム名1 に 値1 が入る)。
例: 1 行挿入
INSERT INTO test_table (
id,
name
) VALUES (
1,
'tarou'
);
-- Query OK, 1 row affected (0.01 sec)
カラム指定を省略する書き方
カラム名を省略するとテーブル定義の全カラムに対して順番に値を入れる必要があります。可読性 + 保守性が落ちるので本番コードでは非推奨。
-- 全カラム順に
INSERT INTO test_table VALUES (1, 'tarou');
-- これは「id, name, created_at, ...」順に全部入れる
-- カラム追加時に既存 SQL が壊れるリスクあり
複数行を一気に INSERT
VALUES をカンマで複数並べると1 文で複数行を挿入できます。ループで INSERT を繰り返すより数十倍高速。
INSERT INTO users (id, name, age) VALUES
(1, 'tarou', 20),
(2, 'hanako', 22),
(3, 'jiro', 30),
(4, 'mai', 28);
-- Query OK, 4 rows affected (0.01 sec)
-- Records: 4 Duplicates: 0 Warnings: 0
MySQL は1 文 65,535 プレースホルダ制限。バルクインサート 1 万件は問題なく可能。
INSERT ... SELECT
別テーブル(または同テーブル)の SELECT 結果をそのまま流し込む形。データ移行・履歴テーブル作成・スナップショットに頻出。
-- users から論理削除済みのものを users_archive にコピー
INSERT INTO users_archive (id, name, deleted_at)
SELECT id, name, NOW()
FROM users
WHERE delete_flag = 1;
-- 同じテーブル内でも可(id 重複に注意)
INSERT INTO orders (user_id, amount, created_at)
SELECT user_id, amount, NOW()
FROM orders
WHERE order_type = 'recurring';
UPSERT (重複時更新)
主キー / UNIQUE 制約に該当する行があれば UPDATE、なければ INSERT を 1 文で行う構文。製品ごとに記法が違います。
| DB 製品 | 構文 |
|---|---|
| MySQL / MariaDB | INSERT ... ON DUPLICATE KEY UPDATE |
| PostgreSQL | INSERT ... ON CONFLICT (col) DO UPDATE |
| SQL Server | MERGE INTO ... USING ... |
| Oracle | MERGE INTO ... USING ... |
| SQLite | INSERT ... ON CONFLICT ... DO UPDATE |
-- MySQL
INSERT INTO inventory (sku, qty) VALUES ('A001', 10)
ON DUPLICATE KEY UPDATE qty = qty + 10;
-- PostgreSQL
INSERT INTO inventory (sku, qty) VALUES ('A001', 10)
ON CONFLICT (sku) DO UPDATE SET qty = inventory.qty + EXCLUDED.qty;
挿入された ID を取得する
AUTO_INCREMENT で割り当てられた ID を取得する方法は製品ごとに違います。
-- MySQL / MariaDB
INSERT INTO users (name) VALUES ('tarou');
SELECT LAST_INSERT_ID();
-- PostgreSQL
INSERT INTO users (name) VALUES ('tarou')
RETURNING id;
-- SQL Server
INSERT INTO users (name) VALUES ('tarou');
SELECT SCOPE_IDENTITY();
トランザクション
INSERT 文を発行した後、COMMIT で確定し、ROLLBACK で取り消しできます。デフォルトでオートコミット ON の環境ではすぐに確定する点に注意。
-- オートコミット OFF にして明示的に管理
START TRANSACTION;
INSERT INTO users (id, name) VALUES (1, 'tarou');
INSERT INTO users (id, name) VALUES (2, 'hanako');
-- 何か間違えたら
ROLLBACK;
-- 問題なければ
COMMIT;
パフォーマンス Tips
| Tips | 効果 |
|---|---|
| 複数行 INSERT (VALUES (), (), ...) | 1 行ずつより 10〜100 倍速 |
大量挿入時はLOAD DATA INFILE (MySQL) / COPY (PG) | 更に 10 倍速 |
| INSERT 中にインデックスを一時 DISABLE | 大量挿入完了後に再構築するほうが速い |
| トランザクション内でまとめて COMMIT | 1 件ずつ COMMIT より速い |
| 外部キーが多い場合は親→子の順 | 制約違反エラー回避 |
FAQ
Q: INSERT で値の一部だけ指定したい
A: カラム名を明示すれば残りは DEFAULT 値 / NULL になる。INSERT INTO users (name) VALUES ('tarou')
Q: 重複 INSERT を無視したい (エラーで止めたくない)
A: MySQL は INSERT IGNORE、PostgreSQL は ON CONFLICT DO NOTHING。
Q: 速い順は何?
A: LOAD DATA / COPY > 複数行 INSERT > プリペアドステートメント反復 > 1 件ずつ INSERT。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- SELECT
- INSERT
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- UE5のEvent Tickノードの使い方|毎フレーム処理とDelta Seconds 2026-06-13 13:26:37
- UE5のレベルブループリントでキャラクターをスポーンさせる方法 2026-06-13 13:26:37
- UE5のビューポートの使い方|視点操作・ビューモード・投影の基本 2026-06-13 13:26:36
- UE5でAI Move ToがBlockedで失敗する原因と対処方法|NavMesh確認 2026-06-13 13:26:36
- Reactのよくあるエラーと対処まとめ|環境構築・npm関連 2026-06-13 13:26:36
- C++のコンパイルと実行方法|g++の使い方とオプション 2026-06-13 13:26:35
- UE5のWorld Compositionとは|サブレベルによる大規模ワールドと非推奨化 2026-06-13 13:26:35
- .protoのgo_packageオプションとは|Goコード生成時のパッケージ指定 2026-06-13 13:26:34
- C++の開発環境構築|コンパイラとIDEの選び方・Hello World 2026-06-13 13:26:34
- gRPCクイックスタート|.proto定義からサーバ・クライアント実装まで 2026-06-13 13:26:33
- C#・Visual Studioのよくあるエラーと対処まとめ 2026-06-13 13:26:33
- C++の関数まとめ|標準入出力(printf・cout・cin)と関数の基本 2026-06-13 13:26:33
- UE5のアウトライナーとは|アクターの一覧・整理・親子付け 2026-06-13 13:26:32
- UE5でSet Input Mode UI Onlyを解除する方法|Game Onlyに戻す 2026-06-13 13:26:32
- UE5エディタの自動保存の頻度を変更する方法|Auto Save設定 2026-06-13 13:26:31
コメントを削除してもよろしいでしょうか?