Developer

【SQL基礎】UPDATE文の基本構文
2020.11.30
Lv1

【SQL基礎】UPDATE文の基本構文

UPDATE文とは


UPDATEとは文字通り更新するという意味で、UPDATE文を使うことでテーブルのデータを書き換えることができます。

UPDATE文は指定したカラムを全件更新したり、検索条件に一致するレコードのみ更新したい時に使用します。

 

UPDATE文の基本構文は以下の通りです。

UPDATE 対象とするテーブル名

SET 列名1=値1, 列名2=値2…

WHERE 書き換えたいレコードの条件;

 

UPDATE文は「UPDATE句」「SET句」「WHERE句」からなっています。

UPDATE句には対象とするテーブル名を指定します。

SET句には指定したテーブル内から書き換えたいカラム名と更新後の値を指定します。

書き換えたいカラム名を複数指定することも可能であり、その場合は「,(カンマ)」で区切って指定します。WHERE句で更新の対象となるデータを指定します。条件式に一致するデータが複数ある場合は複数のデータが更新されることになります。WHERE句を省略することも可能で、その場合は更新対象のテーブルに含まれるすべてのデータが更新されます。

 

では、実際にUPDATE文を使用してみましょう。

今回は例として、以下のようなテーブル(テーブル名:teachers)を使用します。

SELECT *
FROM teachers;

まずイチローのaddressを愛知から千葉に更新します。


UPDATE teachers
SET address = '千葉県'
WHERE name = 'イチロー' ;

上記のように入力するとnameカラムがイチローのaddressが愛知から千葉に更新されます。

念のためデータが更新されたかSELECT * FROM teachersで確認してみます。

SELECT *
FROM teachers ;

きちんと更新されていることが確認できました。

 

カラムに格納されているすべての値を更新する


カラムにある値をすべて更新する場合は以下の構文を使います。

UPDATE 対象とするテーブル名

SET 列名1=値;

 

WHERE句で条件を指定しないことで対象となるカラムの値をすべて更新することができます。データが何件あっても一括で更新できるため共通の値を更新したい時に利用されます。

 

先ほど使ったteachersテーブルのaddressカラムの値を上記の構文ですべて東京都に更新してみます。

UPDATE teachers
SET address = '東京都' ;

WHERE句で条件を指定しないとこのようにSET句で指定したカラムの値にすべて更新されます。

SELECT *
FROM teachers ;

 

全ての年齢を+1したい場合


年齢を全て+1するには、SET句で「age=age+1」と記述します。

UPDATE teachers
SET age = age + 1 ;

すべての年齢に+1された値が表示されます。

SELECT *
FROM teachers ;

 

今回の学習ポイント


・テーブルのデータを更新したい場合はUPDATE文を使用する。

・WHERE句で更新対象となるデータを指定。

・WHERE句を省略するとテーブルに含まれるすべてのデータが更新される。

 

練習問題


使用するデータは「SQL練習問題」を使っています。

問題として使用するデータは以下からダウンロード可能です。

以下のようにしてworldcup2014データベースを作成し、インポートしてください。

※worldcup2014.zip解凍してできるworldcup2014.sqlファイルをCドライブ直下に配置した場合。

worldcup2014.sql

[sql] CREATE DATABASE worldcup2014;
USE worldcup2014;
source C:\worldcup2014.sql
[/sql]
  1. テーブル名countriesのベルギーのランキングを1位にする。
答え
[sql] UPDATE countries
SET ranking=1
WHERE name=’ベルギー’;
[/sql]

データが更新できたかSELECT文を使って確認してみます。

[sql] SELECT *
FROM countries
WHERE group_name = ‘H’ ;
[/sql]

ベルギーのrankingがSET句で指定した値にきちんと更新されています。

2.ベルギー以外の国のランキングを1つ上げる。

答え

[sql]
UPDATE countries
SET ranking=ranking+1
WHERE ranking > 1;
[/sql]

データが更新できたかSELECT文を使って確認してみます。

[sql] SELECT *
FROM countries ;
[/sql]

rankingが1より大きい値を更新するようにWHERE句で指定したので、ベルギー以外の国のrankingが1つ上がりました。

以上、UPDATE文の基本構文でした。

 

 

連載目次リンク

SQL基礎 連載目次

関連する連載リンク

SQL練習問題 一覧まとめ