テーブルに格納されているデータを新しい値に更新するには UPDATE 文を使います。
UPDATE テーブル名 SET カラム名1 = 値1, カラム名2 = 値2, ... WHERE 条件式;
まず更新の対象となるデータをWHERE句の条件式を使って指定します。
条件式に一致するデータが複数の場合は、複数のデータがそれぞれ更新されることになります。
WHEREを省略した場合はテーブルに含まれる全てのデータが更新されます。
次にどの値を更新するのかをカラム名と値で指定します。複数のカラムの値を一度に更新することができます。
次のようなテーブルを作成し、テーブルにはデータを追加してみます。
CREATE TABLE staff (id INTEGER, name TEXT, unit TEXT, flag TEXT);
INSERT INTO staff VALUES(1, 'Yamada', 'Sales', 'Yes');
INSERT INTO staff VALUES(2, 'Honda', 'Office', 'No');
INSERT INTO staff VALUES(3, 'Nakai', 'Office', 'Yes');
INSERT INTO staff VALUES(4, 'Suzuki', 'Tech', 'Yes');
INSERT INTO staff VALUES(5, 'Itou', 'Sales', 'No');
テーブルのデータを見てみる
SELECT * FROM staff;
id name unit flag
---------- ---------- ---------- ----------
1 Yamada Sales Yes
2 Honda Office No
3 Nakai Office Yes
4 Suzuki Tech Yes
5 Itou Sales No
ひとつのデータを更新
最初にidカラムの値が3のデータのnameカラムの値を変更してみます。
UPDATE staff SET name = 'Nakajima' WHERE id = 3;
SELECT * FROM staff;
id name unit flag
---------- ---------- ---------- ----------
1 Yamada Sales Yes
2 Honda Office No
3 Nakajima Office Yes
4 Suzuki Tech Yes
5 Itou Sales No
複数のデータを一度に更新
unitカラムの値が'Office'のデータについて、unitカラムの値を'Desk'に変更して確認してみます。
UPDATE staff SET unit = 'Desk' WHERE unit = 'Office';
SELECT * FROM staff;
id name unit flag
---------- ---------- ---------- ----------
1 Yamada Sales Yes
2 Honda Desk No
3 Nakajima Desk Yes
4 Suzuki Tech Yes
5 Itou Sales No
全てのデータを一度に更新
flagカラムの値を'unknown'に変更して、確認してみます。
UPDATE staff SET flag = 'unKnown';
SELECT * FROM staff;
id name unit flag
---------- ---------- ---------- ----------
1 Yamada Sales unKnown
2 Honda Desk unKnown
3 Nakajima Desk unKnown
4 Suzuki Tech unKnown
5 Itou Sales unKnown