レシピ
データベース SQLite
SQLite3でデータを更新:UPDATE
SQLite3でテーブルに登録されている特定のデータを更新する方法を解説。
この記事のポイント
- SQLiteデータベースに登録されているデータを更新する
- データを更新するSQLを確認する
- 更新するデータを特定の条件で絞り込む
目次
データを更新する
今回は、すでにテーブルへ登録されたデータを更新する方法について解説します。
次の順に、それぞれの方法をコードを交えながら進めていきます。
- データを更新するSQLの基本について知る
- ピンポイントで該当する単一のデータを更新する
- 特定の条件を満たす全てのデータを更新する
これから進めて行くにあたり、次のようなテーブルがすでにあることを前提とします。
カラム名 | 型 | その他 |
---|---|---|
id | INTEGER | PRIMARY KEY |
name | TEXT | NOT NULL |
age | INTEGER | NOT NULL |
created_datetime | TIMESTAMP | DEFAULT (datetime(CURRENT_TIMESTAMP,’localtime’)) |
こちらのテーブルには、すでに次のようなデータが登録されています。
testテーブルに登録されているデータ
1 | 吉川 | 25 | 2017-07-01 12:00:00
2 | 佐藤 | 27 | 2017-07-03 10:00:00
3 | Watson | 22 | 2017-07-04 16:20:00
4 | 佐々木 | 27 | 2017-07-06 20:00:00
5 | 細川 | 26 | 2017-07-06 21:20:00
6 | 森田 | 22 | 2017-07-08 10:30:00
7 | 阿部 | 25 | 2017-07-08 13:30:00
8 | 大谷 | 28 | 2017-07-08 16:15:00
9 | 石田 | 23 | 2017-07-08 22:00:00
10 | 川谷 | 25 | 2017-07-10 15:30:00
データ更新のSQL
まずはデータ更新のSQLであるUPDATE文について、基本的な形を紹介します。
UPDATE文の基本的なコード
UPDATE テーブル SET カラム1 = 値1, カラム2 = 値2 WHERE 条件式;
「テーブル」にはデータが登録されているテーブル名を指定します。
その後ろのSET以降に続く「カラム1 = 値1…」はカラム名と値の組み合わせです。
こちらには更新後の値をセットします。
最後のWHERE句以降では、変更するデータを特定するための「条件式」が入ります。
例えば、IDに1をもつデータにのみ更新を行いたい場合、「WHERE id = 1」のように指定を行います。
UPDATE文の基本的な形がわかったところで、上記のデータを更新するSQL文を書いてみます。
今回はidに「5」をもつデータについて更新するSQL文を作成します。
コード例
// データ更新
$sql = 'UPDATE test SET name = "細田", age = 30 WHERE id = 5';
$res = $db->query($sql);
上記のコードを実行すると、テーブルに登録されている下記のデータが更新されます。
更新前のテーブル
5 | 細川 | 26 | 2017-07-06 21:20:00
更新後のテーブル
5 | 細田 | 30 | 2017-07-06 21:20:00
以上の方法で、特定のデータのみを更新することができます。
続いて、特定の条件を満たす全てのデータを更新する方法を確認していきます。
特定の条件を満たす全てのデータを更新する
特定のIDを持ったデータのみではなく、条件を満たす全てのデータを更新したいことがあります。
これは条件式を変更することで対応することができます。
例えば、年齢が25歳より上のデータを全て登録日時を「2017-07-30 00:00:00」に変更してみましょう。
コード例
// データ更新
$sql = 'UPDATE test SET created_datetime = "2017-07-30 00:00:00" WHERE 25 <= age';
$res = $db->query($sql);
この処理を実行すると、testテーブルに入ったデータは次のように更新処理が実行されます。
更新前のテーブル
sqlite> select * from test;
1|吉川|25|2017-07-01 12:00:00
2|佐藤|27|2017-07-03 10:00:00
3|Watson|22|2017-07-04 16:20:00
4|佐々木|27|2017-07-06 20:00:00
5|細田|30|2017-07-06 21:20:00
6|森田|22|2017-07-08 10:30:00
7|阿部|25|2017-07-08 13:30:00
8|大谷|28|2017-07-08 16:15:00
9|石田|23|2017-07-08 22:00:00
10|川谷|25|2017-07-10 15:30:00
更新後のテーブル
sqlite> select * from test;
1|吉川|25|2017-07-30 00:00:00
2|佐藤|27|2017-07-30 00:00:00
3|Watson|22|2017-07-04 16:20:00
4|佐々木|27|2017-07-30 00:00:00
5|細田|30|2017-07-30 00:00:00
6|森田|22|2017-07-08 10:30:00
7|阿部|25|2017-07-30 00:00:00
8|大谷|28|2017-07-30 00:00:00
9|石田|23|2017-07-08 22:00:00
10|川谷|25|2017-07-30 00:00:00
「age」が「25」以上の値を持つデータの「created_datetime」が全て「2017-07-30 00:00:00」へと更新されました。
このように、WHERE句で指定する条件次第で、特定の範囲にあるデータに対して更新を行う処理を実行することができます。
以上、SQLite3のデータを更新する方法でした。
こちらの記事は役に立ちましたか?
コメントありがとうございます!
運営の参考にさせていただきます。
ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。