PHPプログラミング

ベストプラクティス

データベース SQLite

SQLite3でデータを更新:UPDATE

  • このエントリーをはてなブックマークに追加

SQLite3でテーブルに登録されている特定のデータを更新する方法を解説。

目次

  1. #  データを更新する
  2. #  データ更新のSQL
  3. #  特定の条件を満たす全てのデータを更新する

データを更新する

今回は、すでにテーブルへ登録されたデータを更新する方法について解説します。
次の順に、それぞれの方法をコードを交えながら進めていきます。

  • データを更新するSQLの基本について知る
  • ピンポイントで該当する単一のデータを更新する
  • 特定の条件を満たす全てのデータを更新する

これから進めて行くにあたり、次のようなテーブルがすでにあることを前提とします。

テーブル名:test
カラム名 その他
id INTEGER PRIMARY KEY
name TEXT NOT NULL
age INTEGER NOT NULL
created_datetime TIMESTAMP DEFAULT (datetime(CURRENT_TIMESTAMP,’localtime’))

こちらのテーブルには、すでに次のようなデータが登録されています。

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 テーブル 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

WHEREで指定する条件次第で、特定の範囲にあるデータに対して更新を行う処理を実行することができます。

以上、SQLite3のデータを更新する方法でした。

  • このエントリーをはてなブックマークに追加