UPDATE
テーブルにすでに登録されているデータを更新するには、SQLコマンドの「UPDATE」コマンドを使用します。
「UPDATE」の基本的な構文は以下の通りです。
UPDATE テーブル名 SET 列名1 = {式1 | DEFAULT} [,列名2 = {式2 | DEFAULT},・・・] [WHERE 条件] ;
「UPDATE」は、指定したテーブル内のWHERE句の条件に合致した行を変更します。SET句に変更する列と更新する値を指定します。(「列名=値」の形で「,」で区切って複数指定可能です。)
SET句に指定されなかった列は変更されません。
WHERE句を指定しなかった場合は、テーブル内の全ての行が更新されます。
複数の列を変更する場合は、以下のような書き方も可能です。
UPDATE テーブル名 SET (列名1,列名2,・・・) = (式1,式2,・・・) [WHERE 条件] ;
また、サブクエリで他のテーブルの情報を使用して更新することもできます。
データを更新してみる
それでは、実際にいくつかのパターンを試してみます。
以下のようなデータのテーブルを更新してみます。

条件を指定して更新する
「WHERE」句で条件を指定して、特定の行の列を更新します。
下記の例では、「id」列が「000002」の行の「score」を「60」に更新します。
UPDATE testtbl SET score = 60 WHERE id = '000002' ;
実行すると以下の通りです。
2行目の「id」が「000002」の行の「score」が更新されています。

また、条件に複数の行が合致する場合は、それぞれの行が更新されます。
以下の例では、「score」が「80」以下の行の「score」を「50」に更新します。
UPDATE testtbl SET score = 50 WEHRE score <= 80 ;
「score」が「75」と「80」の2つの行が更新されています。

条件を指定しないで更新する
「WHERE」句での条件を指定しないと、すべての行が更新対象となります。
次の例では全行の「score」を「100」に更新します。
UPDATE testtbl SET score = 100 ;

複数の列を更新する
複数の列を更新するには、「SET」句に「,」で区切って複数の列と値を指定します。
以下の例では、「name」と「tel」の2つの列を更新します。
UPDATE testtbl SET name = '左藤 次郎', tel = '1111-11-1111' WHERE id = '000007' ;
実行すると「id」が「000007」の行の「name」と「tel」が更新されています。

また、「(列1,列2,・・・) = (値1,値2,・・・)」といった指定も可能です。
UPDATE testtbl SET (name, tel) = ('佐東 治郎', '2222-22-2222') WHERE id = '000007' ;

値の代わりに式を指定する
列に値ではなく式や関数を指定することができます。
以下の例では、「score」の値を「5」減らし、「email」の「xxx.xxx.xxx」を「zzz.zzz.zzz」に更新します。
UPDATE testtbl SET score = score - 5, email = REPLACE(email, 'xxx.xxx.xxx', 'zzz.zzz.zzz') ;

サブクエリを使って更新する
サブクエリ(副SELECT)を使用して、データを更新することもできます。
以下の「summarytbl」テーブルに「testtbl」の「score」の最大値・最小値・平均値をセットしてみます。

下記の例では、「summarytbl」の「no = 1」の行の「maxscore」「minscore」「avgscore」に、「testtbl」の「score」の最大値、最小値、平均値を登録します。
UPDATE summarytbl SET (maxscore, minscore, avgscore) =
(SELECT MAX(score), MIN(score), AVG(score) FROM testtbl) WHERE no = 1 ;
実際に実行すると「no = 1」の行のそれぞれの列が更新されています。

サブクエリを使用すると、他のテーブルのデータを利用していろいろな更新が可能です。
ここでは単純な例を挙げていますが、複雑な更新を行うこともできます。
基本的な「UPDATE」コマンドの説明は以上です。