SQLiteは、軽量で扱いやすいデータベースとして、個人開発から業務システムまで幅広く利用されています。
特にアプリ開発やスクリプトでのデータ操作には欠かせない存在です。
この記事では、SQLiteで蓄積されたデータを編集したり、不要なデータを削除したりするための「UPDATE文」と「DELETE文」の基本的な使い方から応用例までを、わかりやすく解説します。
データベース操作の基礎力を高めたい方に、実践的なサンプルを交えて丁寧にご紹介します。
SQLiteのUPDATE文とは
UPDATE文は、すでにテーブルに存在しているデータの値を変更するSQL文です。
「ユーザーの名前を変えたい」「商品の価格を修正したい」といった場面で利用されます。
基本構文
UPDATE テーブル名
SET カラム名1 = 値1, カラム名2 = 値2, ...
WHERE 条件;
例:顧客の名前を更新する
たとえば、customers
テーブルにある「山田太郎」さんの名前を「山田花子」に変更したい場合は以下のように記述します。
UPDATE customers
SET name = '山田花子'
WHERE name = '山田太郎';
WHERE句を忘れるとどうなる?
非常に重要なのがWHERE
句の指定です。
これを忘れると、テーブル内のすべてのレコードが更新されてしまいます。
-- 全レコードのnameが"山田花子"になる
UPDATE customers
SET name = '山田花子';
複数のカラムを同時に更新する
UPDATE products
SET price = 1980, stock = 10
WHERE product_id = 3;
複数のカラムをカンマで区切って一括更新することもできます。
SQLiteのDELETE文とは
DELETE文は、特定の条件に一致するレコードをテーブルから削除するSQL文です。
誤って実行するとデータが消えてしまうため、慎重に扱う必要があります。
基本構文
DELETE FROM テーブル名
WHERE 条件;
例:特定のユーザーを削除する
DELETE FROM customers
WHERE name = '山田花子';
このSQL文は、customers
テーブルから「山田花子」さんのデータを削除します。
条件を省略すると…
DELETE FROM customers;
このようにWHERE
句を省略すると、すべてのレコードが削除されるので注意しましょう。テーブル構造(カラムの定義)はそのまま残ります。
UPDATEとDELETEの実行前に確認すべきポイント
1. WHERE句での絞り込み確認
WHERE
条件が正しく指定されているかを、先にSELECT
文で確認しておくと安全です。
SELECT * FROM customers WHERE name = '山田花子';
2. トランザクションでの安全な処理
SQLiteではトランザクションを使うことで、まとめての処理を途中で取り消す(ロールバック)ことができます。
BEGIN TRANSACTION;
UPDATE products SET price = 1000 WHERE category = 'セール品';
-- 問題があれば元に戻せる
-- ROLLBACK;
-- 問題なければ反映
COMMIT;
3. データのバックアップを取る
更新・削除前には、対象テーブルのバックアップを取っておくことをおすすめします。
CREATE TABLE customers_backup AS SELECT * FROM customers;
UPDATE・DELETEの応用例
条件に合致した複数行を一括更新
UPDATE orders
SET status = '出荷済'
WHERE order_date < '2024-12-31' AND status = '未発送';
削除条件にサブクエリを使う
DELETE FROM users
WHERE id IN (
SELECT user_id FROM logs WHERE login_failed > 5
);
このようにサブクエリを用いることで、複雑な条件での削除も可能です。
SQLiteでUPDATE・DELETEを行う際の注意点
- WHERE句なしでの実行は要注意:意図しない全件更新・削除の原因になります。
- トランザクションを活用する:失敗時にロールバックできるようにしておくと安心。
- サブクエリの使用で柔軟な操作が可能:絞り込み条件が複雑な場合に有効。
- データのバックアップはこまめに:特に本番環境では必須の対策です。
まとめ
SQLiteのUPDATE文とDELETE文は、データベースを適切にメンテナンスするために欠かせない基本操作です。
ただし、間違った使い方をするとデータを失うリスクもあるため、特にWHERE句の指定には細心の注意を払いましょう。
本記事の内容を参考に、安全かつ効率的にデータを更新・削除できるようになれば、SQLiteをさらに自在に扱えるようになるはずです。