English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SQL 更新データ(UPDATE文)

このチュートリアルでは、SQLを使用してデータベーステーブルのレコードを更新する方法を学びます。

テーブルデータを更新する方法を学びました。

前の章では、さまざまな条件に基づいてデータを挿入するからデータベーステーブルにデータを選択する。このチュートリアルでは、データベーステーブルの既存レコードを更新するというより重要なタスクを実行する方法を学びます。

構文

UPDATE文は、テーブルの既存データを更新するために使用されます。

UPDATE table_name SET column1_name = value1, column2_name = value2,...WHERE condition;

ここでは、column1_namecolumn2_name、...は、更新する必要があるデータベーステーブルの列またはフィールドの名前です。また、前章で学んだORおよびAND演算子を使用することもできます複数の条件を組み合わせる

警告:UPDATE文のWHERE子句は、更新するべきレコードを指定します。WHERE子句を省略すると、すべてのレコードが更新されます。

実際の動作を示すいくつかの例を見てみましょう。

データベースにemployeesテーブルが以下のレコードを持っていることを仮定します:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      1 | Ethan Hunt   | 2001-05-01 |   5000 |       1 |
|      2 | Tony Montana | 2002-07-15 |   6500 |       5 |
|      3 | Sarah Connor | 2005-10-18 |   8000 |       3 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       4 |
|      5 | Martin Blank | 2008-06-24 |   5600 |    NULL |
+--------+--------------+------------+--------+---------+

単一列更新

以下のSQL文は、更新するemployeesテーブルのemp_nameフィールドに等価で、新しい値を設定します。従業員ID(つまりemp_id)が3。

UPDATE employees SET emp_name = 'Sarah Ann Connor'
WHERE emp_id = 3;

実行後、結果テーブルは以下のようになります:

+--------+------------------+------------+--------+---------+
| emp_id | emp_name         | hire_date  | salary | dept_id |
+--------+------------------+------------+--------+---------+
|      1 | Ethan Hunt       | 2001-05-01 |   5000 |       1 |
|      2 | Tony Montana       | 2002-07-15 |   6500 |       5 |
|      3 | Sarah Ann Connor | 2005-10-18 |   8000 |       3 |
|      4 | Rick Deckard       | 2007-01-03 |   7200 |       4 |
|      5 | Martin Blank       | 2008-06-24 |   5600 |    NULL |
+--------+------------------+------------+--------+---------+

多列更新

同様に、カンマで区切られた列名と値のペアのリストを使用して、複数の列を更新することができます。以下の例では、更新するemployeesテーブルemp_idに5 の既存従業員のsalaryおよびdept_idフィールド。

UPDATE employees
SET salary = 6000, dept_id = 2
WHERE emp_id = 5;

実行後、結果テーブルは以下のようになります:

+--------+------------------+------------+--------+---------+
| emp_id | emp_name         | hire_date  | salary | dept_id |
+--------+------------------+------------+--------+---------+
|      1 | Ethan Hunt       | 2001-05-01 |   5000 |       1 |
|      2 | Tony Montana       | 2002-07-15 |   6500 |       5 |
|      3 | Sarah Ann Connor | 2005-10-18 |   8000 |       3 |
|      4 | Rick Deckard       | 2007-01-03 |   7200 |       4 |
|      5 | Martin Blank       | 2008-06-24 |   6000 |       2 |
+--------+------------------+------------+--------+---------+