SQL INSERT文でデータを登録する
INSERT文でデータベースに新しいデータを登録する方法を紹介します。 「社員マスタ」というテーブルがあります。カラムは下記のとおりです。
| 社員コード | 社員名 | 年齢 |
|---|---|---|
| 1 | テスト社員1 | 22 |
| 2 | テスト社員2 | 30 |
| 3 | テスト社員3 | 20 |
このテーブルに新しいデータ(社員)を登録したい場合、以下のようなSQLを実行します。
INSERT INTO 社員マスタ
(
社員コード
,社員名
,年齢
) VALUES (
4
,'テスト社員4'
,20
)| 社員コード | 社員名 | 年齢 |
|---|---|---|
| 1 | テスト社員1 | 22 |
| 2 | テスト社員2 | 30 |
| 3 | テスト社員3 | 20 |
| 4 | テスト社員4 | 20 |
列の省略
例えば社員マスタに「性別」(1=男、2=女)というカラムがあった場合を考えます。
| 社員コード | 社員名 | 年齢 | 性別 |
|---|---|---|---|
| 1 | テスト社員1 | 22 | 1 |
| 2 | テスト社員2 | 30 | 2 |
| 3 | テスト社員3 | 20 | 1 |
このテーブルに先ほどと同じSQLを実行した場合、性別にはnullが登録されます。(列にnullが許容されていない場合はエラーになります)
INSERT INTO 社員マスタ
(
社員コード
,社員名
,年齢
--性別を指定していない
) VALUES (
4
,'テスト社員4'
,20
--性別を指定していない
)| 社員コード | 社員名 | 年齢 | 性別 |
|---|---|---|---|
| 1 | テスト社員1 | 22 | 1 |
| 2 | テスト社員2 | 30 | 2 |
| 3 | テスト社員3 | 20 | 1 |
| 4 | テスト社員4 | 20 | null |
列名を指定しない
以下のように列名を指定しない方法もあります。
INSERT INTO 社員マスタ
VALUES (
4
,'テスト社員4'
,20
10
)ただし、この場合はテーブルの列名をすべて指定する必要があります。
このやり方は、テーブル定義が変わってしまうとエラーになったりしてしまうので、面倒でもすべてのカラムを記載することをおすすめします。