English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
このチュートリアルでは、SQLを使用してデータベーステーブルのレコードを更新する方法を学びます。
前の章では、さまざまな条件に基づいてデータを挿入するからデータベーステーブルにデータを選択する。このチュートリアルでは、データベーステーブルの既存レコードを更新するというより重要なタスクを実行する方法を学びます。
UPDATE文は、テーブルの既存データを更新するために使用されます。
UPDATE table_name SET column1_name = value1, column2_name = value2,...WHERE condition;
ここでは、column1_name、column2_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 | +--------+------------------+------------+--------+---------+