SQL Update構文でデータベーステーブルを更新する方法

このチュートリアルでは、SQL UPDATE構文を使用して、テーブルの既存の行のデータを変更する方法を教え致します。

SQL UPDATE言語の概要

テーブル内の既存のデータを変更するには、UPDATE構文を使用します。 以下は、UPDATE構文です。

UPDATE table_name
SET column1 = value1
column2 = value2
WHERE
condition;

上記の構文では

•まず、UPDATE構文の中で更新するテーブルを記入します。
•次に、SET句で変更する列を指定します。 SET句に記入していない列の値は変更されません。
•さらに、WHERE句で更新する行を指定します。

UPDATE構文は、WHERE句の条件に従って、テーブル内の1つとそれ以上の行に影響を与えます。WHERE句は、指定された条件を満たすレコードを抽出するために使用されます。 UPDATE構文をWHERE句と組み合わせて使用すると、WHERE句を満たすすべてのレコードが更新されます。WHERE句はオプションであるため、省略した場合、テーブル内のすべての行が影響を受けます。

SQL UPDATE構文の例

employeesテーブルとdependentsテーブルを使用して、UPDATE構文の使用方法を示します。

SQL UPDATEによる行の更新の例

従業員ID(employee_id)の値が192であると仮定すると、以下に示すように、employeesテーブルにデータレコードを調べます。

mysql> select first_name,last_name from employees where employee_id=192;
first_namelast_name
SarahAbbey
1 row in set

last_namek段落の値をAbbeyからAbbに変更するには、次のUPDATE構文を使用します。

UPDATE employees
SET
last_name = 'Abb'
WHERE
employee_id = 192;
SQL

データベースシステムは、employee_idが192のレコードlast_name列の値を更新しました。 次のSELECT構文を使用して検証します。

SELECT
employee_id,
first_name,
last_name
FROM
employees
WHERE
employee_id = 192;

上記の構文を実行して、次の結果を取得します。

employee_idfirst_namelast_name
192SarahAbb
1 row in set

SQL UPDATE複数行の例

ここで、賃金が3000未満のすべての従業員を3000までに増やします。データを更新する前に、賃金が3000未満の従業員を確認しましょう。

SELECT
    employee_id,
    first_name,
    last_name,salary
FROM
    employees
WHERE
    salary<3000;
employee_idfirst_namelast_namesalary
116ShelliAlon2700
117SigalStar2500
118JosonHanks2900
119KarenLock1700
126IreneFlower2800
5 rows in set

次のUPDATE構文んを実行して給与を3000に更新します。

UPDATE
employees
SET
salary=3000
WHERE
salary<3000;
SQL

サブクエリの例を使用したSQL UPDATE

従業員が姓(last_name)を変更すると、employeesテーブルのみが更新され、dependentsテーブルは更新しません。
子アイテムの姓(last_name)が常にemployeesテーブルの親項目の姓(last_name)と一致するには、次の構文をご使用ください。

UPDATE dependents
SET last_name = (
SELECT
last_name
FROM
employees
WHERE
employee_id = dependents.employee_id
);

WHERE句が省略されているため、UPDATE構文はdependentsテーブルのすべての行を更新しました。 SET句では、リテラル値の代わりにサブクエリを使用して、対応するlast_name値をemployeesテーブルから取得します。
このチュートリアルでは、SQL UPDATE構文を使用してテーブル内の既存のデータを変更する方法を示しました。

Share

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です