UPDATE文でデータベースの値を更新してみよう!超初心者のSQLの勉強

2020-04-12

動作環境

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

以下のテーブルが作成できたら準備完了です。

ItemIDItemName
1ゼリー
2プリン
3ヨーグルト

それではUPDATE文をかいていきましょう。

1つのカラムの値を更新

UPDATE  item SET  ItemName = 'コーヒーゼリー';

カラム(ItemName)に対して値を更新します。

それではSELECT文を実行してテーブルを確認してみましょう。

SELECT * FROM item

■ 結果

ItemIDItemName
1コーヒーゼリー
2コーヒーゼリー
3コーヒーゼリー

ItemNameの値が更新されたことを確認できました。

1つのカラムの値を更新 条件つきの場合

UPDATE  item SET  ItemName = 'フルーツ缶' WHERE  ItemID = 2;

※すでに更新されたテーブルを使用

■ 結果

ItemIDItemName
1コーヒーゼリー
2フルーツ缶
3コーヒーゼリー

ItemIDが2のItemNameの値が更新されたことを確認できました。

複数の列の値を更新

UPDATE  item SET  ItemID = 0001, ItemName = '飲むヨーグルト' ;

■ 結果

ItemIDItemName
1飲むヨーグルト
1飲むヨーグルト
1飲むヨーグルト

複数列の値が更新されたことを確認できました。

1つのカラムの値を更新 条件つきの場合

UPDATE  item SET 
itemID = null, ItemName = null
WHERE 
itemID = 3 AND ItemName = 'ヨーグルト';

※ 準備段階のテーブルに戻してから操作してください。

条件も複数指定可能です。null値を入れることも可能。

■ 結果

ItemIDItemName
1ゼリー
2プリン
(null)(null)

おわり

UPDATE文は条件が指定できる分、INSERT文より少し難しいですね。