このチュートリアルでは、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_name | last_name |
Sarah | Abbey |
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_id | first_name | last_name |
192 | Sarah | Abb |
SQL UPDATE複数行の例
ここで、賃金が3000未満のすべての従業員を3000までに増やします。データを更新する前に、賃金が3000未満の従業員を確認しましょう。
SELECT
employee_id,
first_name,
last_name,salary
FROM
employees
WHERE
salary<3000;
employee_id | first_name | last_name | salary |
116 | Shelli | Alon | 2700 |
117 | Sigal | Star | 2500 |
118 | Joson | Hanks | 2900 |
119 | Karen | Lock | 1700 |
126 | Irene | Flower | 2800 |
次の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構文を使用してテーブル内の既存のデータを変更する方法を示しました。
コメントを残す