FE EXAM

INSERT文(行の追加)

表に新しいレコードを追加するSQLの命令。

INTERACTIVE VISUALIZATION
追加する値
追加された行
SQL
INSERT INTO 社員 (ID, 名前, 部署)
VALUES (4, '田中', '開発')
シナリオ
ステップ1 / 5
STEP 1/5元の表を確認する社員という表に3行のレコードが入っています。ここに「田中・開発」という新しい1人を追加したい、という場面です。INSERT 文は表に新しいレコードを増やす命令です。
社員 表
ID名前部署
1佐藤営業
2鈴木開発
3高橋営業
解説

📌
INSERT文とは

新しい値追加された行

INSERT 文とは、表に新しいレコードを追加する SQL の命令のことです。レコード(=1行分のデータのまとまり)を1件、表に増やします。

身近な例で考えると、図書館に新しい本を1冊登録する作業に似ています。「書名・著者・分類」をカードに書いて蔵書台帳に1行追加するように、INSERT 文は決められた列に値を入れて新しい行を作ります。

上のツールで▶ボタンを押すと、追加する列と値を対応づけ、その値が新しい1行となって表の末尾に増える流れを確認できます。

📐
基本構文

INSERT 文の基本の形は、表と列を指定する部分と、値を並べる部分でできています。

INSERT INTO 表 (列) VALUES (値)

それぞれの役割は次のとおりです。
INSERT INTO 表 (列):どの表の、どの列に値を入れるかを指定する
VALUES (値):実際に入れる値を、列と同じ順番で並べる
文字列はシングルクォートで囲む'田中' のように。数値はそのまま書く

大切なのは、列の並び順と値の並び順が1対1で対応する点です。(ID, 名前, 部署) に対して (4, '田中', '開発') なら、ID=4・名前=田中・部署=開発になります。順番がずれると意図しない値が入ってしまうため注意します。

🗂️
DMLの中でのINSERTの立ち位置

DML(データ操作言語)INSERT追加← 今ここSELECT検索UPDATE変更DELETE削除

INSERT・SELECT・UPDATE・DELETE の4つをまとめてDML(=Data Manipulation Language、データ操作言語)と呼びます。これは、表の中のデータを操作するための命令のグループです。

なぜ4種類に分かれているのか。データへの操作は「増やす・読む・変える・消す」の4パターンに分類でき、それぞれ別の命令になっています。
INSERT:行を追加する(今のページ)
SELECT:条件に合う行を検索・取得する
UPDATE:既存の行の値を変更する
DELETE:条件に合う行を削除する

INSERT は「まだ存在しない新しい行を作る」唯一の命令です。UPDATE や DELETE は既存の行を対象にするため WHERE で行を絞り込む必要がありますが、INSERT は空の行に値を入れて追加するため WHERE が不要な点が特徴です。

🔗
列と値の対応関係

列の指定ID名前部署値(VALUES)4'田中''開発'正しい対応 → ID=4 / 名前=田中 / 部署=開発順番ずれ NGID名前'田中'4ID='田中'(文字)→ 型エラー

INSERT 文では、列の並び順と VALUES の値の並び順が1対1で対応します。コンピュータは「1番目の列 ← 1番目の値」「2番目の列 ← 2番目の値」という機械的なルールで代入します。

なぜ順番が重要なのか。列名と値は別々に書かれているため、コンピュータは位置だけを手がかりにどちらをどちらに入れるかを決めます。順番がずれると、数値を入れるべき ID 列に文字列が入って型エラーになるか、もしくは意図と違う値が静かに入ってしまいます。
正しい例(ID, 名前) VALUES (4, '田中') → ID=4、名前=田中
NG 例(ID, 名前) VALUES ('田中', 4) → ID列に文字が入り型エラー

なお、列指定を省略して INSERT INTO 社員 VALUES (4, '田中', '開発') と書くことも可能ですが、その場合は表が持つ全列の順番どおりに値を並べる必要があります。列名を明示する書き方のほうがミスに気づきやすいためおすすめです。

⚠️
制約違反のケース

ID=2 を追加ID=2 は既に存在✕ 一意性制約に違反 → エラー

INSERT は、表に設定された制約(=守るべき決まり)に違反するとエラーになり、レコードは追加されません。代表的な制約違反は次のとおりです。


一意性制約(主キーの重複):主キーは表内で重複できないため、既にある ID を追加するとエラー
NOT NULL 制約:値が必須の列に値を入れない(NULL =値なし)とエラー
参照整合性制約(外部キー):別の表に存在しない値を参照するとエラー
データ型・桁数の不一致:数値列に文字を入れるなど、列の型に合わない値はエラー

たとえば会員番号を主キーにした名簿で、すでに使われている番号で新規登録しようとすると弾かれるのと同じです。制約はデータの正しさ(整合性)を守るための仕組みで、INSERT 時にこれをチェックすることで、おかしなデータが入るのを防いでいます。

練習問題

🎯
基本情報技術者 練習問題

Q1.INSERT文の説明として最も適切なものはどれか。
A.表から条件に合う行を取り出す問合せ文
B.表に新しいレコードを追加する命令
C.表の既存レコードの値を書き換える命令
D.表から条件に合うレコードを削除する命令
Q2.INSERT文の基本構文として正しいものはどれか。
A.INSERT INTO 表 (列) VALUES (値)
B.INSERT 表 SET 列 = 値
C.INSERT FROM 表 WHERE 条件
D.INSERT 表 SELECT 列
Q3.主キーが ID 列で、ID=2 のレコードが既にある表に「INSERT INTO 社員 (ID, 名前) VALUES (2, '山田')」を実行するとどうなるか。
A.既存のID=2の名前が山田に書き換わる
B.ID=2の行が2つに増える
C.一意性制約に違反しエラーになり追加されない
D.何も起きず正常終了する

関連コンテンツ