SQL UPDATE

概要:このチュートリアルでは、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 テーブルを使用します。

employees_dependents_tables

SQL UPDATEによる1行の例

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

SQL UPDATE example

Sarahさんの姓をBellからLopezに更新するには、次のUPDATE文を使用します。

UPDATE employees 
SET 
    last_name = 'Lopez'
WHERE
    employee_id = 192;Code language: SQL (Structured Query Language) (sql)

試してみる

データベースシステムは、last_name列の値と、employee_id192である行を更新しました。

次のSELECT文を使用して、それを確認できます。

SELECT
	employee_id,
	first_name,
	last_name
FROM
	employees
WHERE
	employee_id = 192;Code language: SQL (Structured Query Language) (sql)

試してみる

SQL UPDATE one row example

SQL UPDATEによる複数行の例

さて、Nancyさんは、お子さんの姓をすべてBellからLopezに変更したいと考えています。この場合、dependentsテーブル内のNancyさんのお子さん全員を更新する必要があります。

データを更新する前に、Nancyさんのお子さんを確認しましょう。

SELECT
	*
FROM
	dependents
WHERE
	employee_id = 192;Code language: SQL (Structured Query Language) (sql)

試してみる

SQL UPDATE multiple rows example

Nancyさんのお子さんの姓を更新するには、次のUPDATE文を使用します。

UPDATE dependents 
SET 
    last_name = 'Lopez'
WHERE
    employee_id = 192;Code language: SQL (Structured Query Language) (sql)

試してみる

SQL UPDATE WHERE multiple rows

サブクエリを使用した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文を使用してテーブル内の既存データを変更する方法を示しました。

このチュートリアルは役に立ちましたか?