動作環境
SQL FIDDLEでMySQL5.6、PostgreSQL9.6、SQLiteで動作確認しています。
UPDATE文とは
UPDATE文を使うとデータベース(テーブル)のデータを更新することができます。よくINSERTと混同してしまいますが、INSERTは新規の行を挿入するのに対し、UPDATEはすでに存在している行の値を更新(上書き)します。
UPDATE文の書き方
1つのカラム(列)の値を更新
UPDATE テーブル名 SET 列名 = 値;
指定した列の全ての行更新されます。
1つのカラムの値を更新 条件つきの場合
UPDATE テーブル名 SET 列名 = 値 WHERE 条件;
指定した列の条件に応じた行の値が更新されます。
複数の列の値を更新
UPDATE テーブル名 SET 列名1 = 値1, 列名2 = 値2, ….. ;
指定した複数の列の行が更新されます。全て指定すれば全ての値を更新できます。
複数の列の値を更新 条件付き
UPDATE テーブル名 SET 列名1 = 値1, 列名2 = 値2, ….. WHERE 条件;
指定した複数の列の条件に応じた行の値が更新されます。
実際にUPDATE文を使ってみる
それでは実際に動かして見ましょう。
準備
テーブルを作成します。
CREATE TABLE item (
ItemID int ,
ItemName character varying (20)
);
テーブルの中に値を挿入。
insert into item values(0001, ‘ゼリー’), (0002, ‘プリン’), (0003, ‘ヨーグルト’);
無事作成できたかSELECT文を実行してテーブルを確認します。
SELECT * FROM item
以下のテーブルが作成できたら準備完了です。
ItemID | ItemName |
---|---|
1 | ゼリー |
2 | プリン |
3 | ヨーグルト |
それではUPDATE文をかいていきましょう。
1つのカラムの値を更新
UPDATE item SET ItemName = ‘コーヒーゼリー’;
カラム(ItemName)に対して値を更新します。
それではSELECT文を実行してテーブルを確認してみましょう。
SELECT * FROM item
■ 結果
ItemID | ItemName |
---|---|
1 | コーヒーゼリー |
2 | コーヒーゼリー |
3 | コーヒーゼリー |
ItemNameの値が更新されたことを確認できました。
1つのカラムの値を更新 条件つきの場合
UPDATE item SET ItemName = ‘フルーツ缶’ WHERE ItemID = 2;
※すでに更新されたテーブルを使用
■ 結果
ItemID | ItemName |
---|---|
1 | コーヒーゼリー |
2 | フルーツ缶 |
3 | コーヒーゼリー |
ItemIDが2のItemNameの値が更新されたことを確認できました。
複数の列の値を更新
UPDATE item SET ItemID = 0001, ItemName = ‘飲むヨーグルト’ ;
■ 結果
ItemID | ItemName |
---|---|
1 | 飲むヨーグルト |
1 | 飲むヨーグルト |
1 | 飲むヨーグルト |
複数列の値が更新されたことを確認できました。
1つのカラムの値を更新 条件つきの場合
UPDATE item SET
itemID = null, ItemName = null
WHERE
itemID = 3 AND ItemName = ‘ヨーグルト’;
※ 準備段階のテーブルに戻してから操作してください。
条件も複数指定可能です。null値を入れることも可能。
■ 結果
ItemID | ItemName |
---|---|
1 | ゼリー |
2 | プリン |
(null) | (null) |
おわり
UPDATE文は条件が指定できる分、INSERT文より少し難しいですね。