2021年7月24日土曜日

SQLite 3 テーブルのデータを更新する (update)

概要

SQLite3におけるUpdate文の基本的な使い方。
ちなみにリレーショナルデータベースではデータを書き換えることを 一般的に「変更」ではなく「更新」と言う。

構文

基本文は2種類あるが、どちらも処理は一緒。


update
    table_name
set
    column_name1 = value1
    , column_name2 = value2
    , column_name3 = value3 ...
;
                    

もしくは


update
    table_name
set (
    column_name1
    , column_name2
    , column_name3 ...
) = (
    value1
    , value2
    , value3 ...
);
                    

実行例

環境
  • Windows 10 64bit
  • SQLite3 (3.36.0) Command-Line Shell
サンプルテーブル(product)
product_id
primary key
name quantity
1 tomato 100
2 potato 100
3 pumpkin 50

以下は「product」テーブルの「name」と「quantity」を書き換えるSQL。 書き方は2通りあるがどちらも同じ結果になる。


update
    product
set
    name       = 'cassava'
    , quantity = 1
;
                    

update
    product
set (
    name
    , quantity
) = (
    'cassava'
    , 1
);
                    
結果(product)
product_id
primary key
name quantity
1 cassava 1
2 cassava 1
3 cassava 1

条件を指定して更新する

上記の例のままだと、テーブル内全てのデータが更新されてしまう。 特定の行だけを更新する場合は「where」句を使用して条件を指定する。

構文

update
    product
set
    column_name1 = value1
    , column_name2 = value2
    , column_name3 = value3 ...
where
    column_name4 = value4
    and column_name5 = value5
    and column_name6 = value6 ...
                    

update
    product
set (
    column_name1
    , column_name2
    , column_name3 ...
) = (
    value1
    , value2
    , value3 ...
)
where
    column_name4 = value4
    and column_name5 = value5
    and column_name6 = value6 ...
                    

実行例

サンプルテーブル(product)
product_id
primary key
name quantity
1 tomato 100
2 potato 100
3 pumpkin 50

以下は「product」テーブルの「id」カラムが「1」のレコードを更新するSQL。 書き方は2通りあるがどちらも同じ結果になる。


update
    product
set
    name = 'cassava'
    , quantity = 1
where
    id = 1
;
                    

update
    product
set (
    name
    , quantity
) = (
    'cassava'
    , 1
)
where
    id = 1
;	
                    
結果(product)
product_id
primary key
name quantity
1 cassava 1
2 potato 100
3 pumpkin 50

参考URL