概要:このチュートリアルでは、SQL のUPDATE文を使用して、テーブルの既存行のデータを変更する方法を学習します。
SQL UPDATE文の紹介
テーブル内の既存データを変更するには、UPDATE文を使用します。以下にUPDATE文の構文を示します。
UPDATE table_name
SET column1 = value1,
column2 = value2
WHERE
condition;Code language: SQL (Structured Query Language) (sql)この構文において
- まず、
UPDATE句で更新するテーブルを指定します。 - 次に、
SET句で変更する列を指定します。SET句にリストされていない列は、元の値を保持します。 - 3つ目に、
WHERE句で更新する行を指定します。
UPDATE文は、WHERE句の条件に基づいて、テーブルの1つ以上の行に影響を与えます。例えば、WHERE句に主キー式が含まれている場合、UPDATE文は1行のみを変更します。
ただし、WHERE句の条件を真にする行はすべて変更されます。WHERE句は省略可能であるため、省略すると、テーブル内のすべての行が影響を受けます。
SQL UPDATE文の例
UPDATE文を説明するために、employees テーブルと dependents テーブルを使用します。

SQL UPDATEによる1行の例
従業員ID 192 の Sarah Bellさんが、姓をBellからLopezに変更した場合、employeesテーブルの彼女のレコードを更新する必要があります。

Sarahさんの姓をBellからLopezに更新するには、次のUPDATE文を使用します。
UPDATE employees
SET
last_name = 'Lopez'
WHERE
employee_id = 192;Code language: SQL (Structured Query Language) (sql)データベースシステムは、last_name列の値と、employee_idが192である行を更新しました。
次のSELECT文を使用して、それを確認できます。
SELECT
employee_id,
first_name,
last_name
FROM
employees
WHERE
employee_id = 192;Code language: SQL (Structured Query Language) (sql)
SQL UPDATEによる複数行の例
さて、Nancyさんは、お子さんの姓をすべてBellからLopezに変更したいと考えています。この場合、dependentsテーブル内のNancyさんのお子さん全員を更新する必要があります。
データを更新する前に、Nancyさんのお子さんを確認しましょう。
SELECT
*
FROM
dependents
WHERE
employee_id = 192;Code language: SQL (Structured Query Language) (sql)
Nancyさんのお子さんの姓を更新するには、次のUPDATE文を使用します。
UPDATE dependents
SET
last_name = 'Lopez'
WHERE
employee_id = 192;Code language: SQL (Structured Query Language) (sql)
サブクエリを使用したSQL UPDATEの例
従業員が姓を変更する場合、dependentsテーブルを更新せずにemployeesテーブルのみを更新することがあります。
お子さんの姓が常にemployeesテーブルの親の姓と一致するようにするには、次の文を使用します。
UPDATE dependents
SET last_name = (
SELECT
last_name
FROM
employees
WHERE
employee_id = dependents.employee_id
);Code language: SQL (Structured Query Language) (sql)WHERE句が省略されているため、UPDATE文はdependentsテーブルのすべての行を更新しました。
SET句では、リテラル値を使用する代わりに、サブクエリを使用して、employeesテーブルから対応する姓の値を取得しました。
このチュートリアルでは、SQLのUPDATE文を使用してテーブル内の既存データを変更する方法を示しました。