SQL UPDATE 文
1. SQL UPDATE 文
UPDATE 文は、テーブル内の既存のレコードを更新または修正するために使用されます。
2. UPDATE の構文
UPDATE テーブル名
SET カラム1 = 値1, カラム2 = 値2, ...
WHERE 条件;注意: テーブルのレコードを更新する際は十分に注意してください! UPDATE 文における WHERE 句に注目しましょう。WHERE 句は、どのレコードを更新すべきかを指定するものです。もし WHERE 句を省略した場合、テーブル内のすべてのレコードが更新されてしまいます!
3. デモ用データベース
以下は、例題で使用する Customers テーブルの抜粋です。
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
| 3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
4. テーブルの更新
次の SQL は、CustomerID = 1 のレコードに対して、新しいコンタクトパーソン(ContactName)と新しい都市(City)を更新します。
4.1 例(自分専用の SQL Server を取得)
UPDATE Customers
SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1;Customers テーブルの該当レコードは以下のように変化します:
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Alfred Schmidt | Obere Str. 57 | Frankfurt | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
| 3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
5. 複数レコードの更新
どのレコードを更新するかは WHERE 句によって決まります。
次の SQL は、Country(国)が "Mexico" であるすべてのレコードの ContactName を "Juan" に更新します。
5.1 例
UPDATE Customers
SET ContactName='Juan'
WHERE Country='Mexico';Customers テーブルの選択範囲は以下のように変化します:
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Alfred Schmidt | Obere Str. 57 | Frankfurt | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Juan | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
| 3 | Antonio Moreno Taquería | Juan | Mataderos 2312 | México D.F. | 05023 | Mexico |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
6. UPDATE 時の警告!
レコードを更新する際は細心の注意を払ってください。もし WHERE 句を省略してしまうと、すべてのレコードが更新されてしまいます!
次の SQL は、すべてのレコードの ContactName を "Juan" に更新します。
6.1 例
UPDATE Customers
SET ContactName='Juan';その結果、Customers テーブルは以下のようになります:
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Juan | Obere Str. 57 | Frankfurt | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Juan | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
| 3 | Antonio Moreno Taquería | Juan | Mataderos 2312 | México D.F. | 05023 | Mexico |
| 4 | Around the Horn | Juan | 120 Hanover Sq. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Juan | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |