SQL 速習チュートリアル

SQL UPDATE 文

1. SQL UPDATE 文

UPDATE 文は、テーブル内の既存のレコードを更新または修正するために使用されます。

2. UPDATE の構文

UPDATE テーブル名
SET カラム1 = 値1, カラム2 = 値2, ...
WHERE 条件;

       注意: テーブルのレコードを更新する際は十分に注意してください! UPDATE 文における WHERE 句に注目しましょう。WHERE 句は、どのレコードを更新すべきかを指定するものです。もし WHERE 句を省略した場合、テーブル内のすべてのレコードが更新されてしまいます!

3. デモ用データベース

以下は、例題で使用する Customers テーブルの抜粋です。

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

4. テーブルの更新

次の SQL は、CustomerID = 1 のレコードに対して、新しいコンタクトパーソン(ContactName)と新しい都市(City)を更新します。

4.1 例(自分専用の SQL Server を取得)

UPDATE Customers
SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1;

Customers テーブルの該当レコードは以下のように変化します:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteAlfred SchmidtObere Str. 57Frankfurt12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

5. 複数レコードの更新

どのレコードを更新するかは WHERE 句によって決まります。

次の SQL は、Country(国)が "Mexico" であるすべてのレコードの ContactName を "Juan" に更新します。

5.1 例

UPDATE Customers
SET ContactName='Juan'
WHERE Country='Mexico';

Customers テーブルの選択範囲は以下のように変化します:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteAlfred SchmidtObere Str. 57Frankfurt12209Germany
2Ana Trujillo Emparedados y heladosJuanAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaJuanMataderos 2312México D.F.05023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

6. UPDATE 時の警告!

レコードを更新する際は細心の注意を払ってください。もし WHERE 句を省略してしまうと、すべてのレコードが更新されてしまいます!

次の SQL は、すべてのレコードの ContactName を "Juan" に更新します。

6.1 例

UPDATE Customers
SET ContactName='Juan';

その結果、Customers テーブルは以下のようになります:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteJuanObere Str. 57Frankfurt12209Germany
2Ana Trujillo Emparedados y heladosJuanAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaJuanMataderos 2312México D.F.05023Mexico
4Around the HornJuan120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpJuanBerguvsvägen 8LuleåS-958 22Sweden