第9章 データベース連携 / 第3回 模擬試験
SQLの`INSERT`文に関する次の記述のうち、正しいものはどれか。
`INSERT INTO users (name, age) VALUES ('Taro', 20);`は、`users`テーブルに新しいレコードを追加する。
正解
`INSERT`文は既存のレコードを更新するための命令である。
`INSERT`文はテーブル自体を新規作成する命令である。
`INSERT`文では、列名を省略した場合エラーになり、絶対に実行できない。
解説
`INSERT INTO テーブル名 (列名, ...) VALUES (値, ...);`は、指定したテーブルに新しいレコード(行)を1件追加するSQL文です。
他の選択肢が誤りである理由は次の通りです。
・既存レコードの値を更新する命令は`UPDATE`文です。`INSERT`は新規追加専用です。
・テーブル自体(構造)を新規作成する命令は`CREATE TABLE`文です。`INSERT`は既存のテーブルにデータを追加するだけです。
・列名を省略した`INSERT INTO テーブル名 VALUES (値, ...);`という書き方も可能で、その場合はテーブル定義の列の並び順どおりに値が割り当てられます。「絶対に実行できない」というのは誤りです(可読性の観点からは列名を明記する方が推奨されます)。
例:
```
INSERT INTO users (name, age) VALUES ('Taro', 20);
INSERT INTO users VALUES (NULL, 'Jiro', 25); -- 列名省略(列の並び順に依存)
```
(参照: 独習PHP 第4版 第9章 データベース連携 9.2.2節 SQLの基本 p.417〜424)