前回はSQLのINSERTステートメントを使用して、テーブルにデータ(レコード)を追加する方法について紹介しました。
データベースのデータを操作するアプリケーションでは、データの挿入と同様にデータの更新(変更)も行います。
そこで今回は、既にテーブルにあるデータを更新する方法について紹介します。
目次
記事内で使用するサンプルテーブル
本記事では、前回のINSERTステートメントの実行例で使用した「書籍」テーブルを使用します。
テーブル定義
テーブルには、「書籍ID」「書籍名」「ISBN」の3つの列を作成します。
列名 | データ型 | NULLを許容 | 主キー |
---|---|---|---|
書籍ID | int | NO | ○ |
書籍名 | nvarchar(100) | NO | |
ISBN | char(21) | NO | |
備考 | nvarchar(200) | YES |
テーブルを作成するCREATE文(SQL)
テーブルを作成するSQLは次のようになります。
1 2 3 4 5 6 7 |
CREATE TABLE 書籍 ( 書籍ID int NOT NULL PRIMARY KEY, 書籍名 nvarchar(100) NOT NULL, ISBN char(21) NOT NULL, 備考 nvarchar(200) NULL, ); |
テーブルにデータを挿入するINSERT文(SQL)
テーブルに事前にデータ(行)を挿入しておくSQLは次のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
INSERT INTO 書籍 ( 書籍ID, 書籍名, ISBN, 備考 ) VALUES ( 1, 'よくわかる SQL Server 入門', 'ISBN978-4-0000-0000-1', 'データベース関連の入門書' ), ( 2, 'C# コードレシピ集', 'ISBN978-4-0000-0000-2', 'すぐに使えるC#のコード集' ), ( 3, 'JavaScriptの教科書', 'ISBN978-4-0000-0000-3', 'JavaScriptを学ぶことができるテキスト' ); |
テーブルのデータ(レコード)を更新する命令(ステートメント)
テーブルのデータを更新する際は「UPDATE」ステートメントを使用します。
UPDATEステートメントの構文は次のようになります。
1 2 3 |
UPDATE テーブル名 SET 列名1 = 値1, 列名2 = 値2, 列名3 = 値3, ... WHERE 更新する行の条件 |
UPDATEステートメントでは、まず「UPDATE」と記述し、その後に空白文字(スペースや改行など)を挟んで更新するテーブルを記述します。
テーブル名の後には「SET」を記述します。
SETの後には、テーブルの列名と列に設定する値をイコール「=」でつなげて指定します。
複数の列、値がある場合は、それをカンマ「,」で区切って記述します。
各列に設定する値の後は、WHERE句を記述して更新対象となるレコード(行)を指定する条件式を記述します。
UPDATEステートメントは以下のように改行して記述すると見やすくなります。
1 2 3 4 5 6 7 8 |
UPDATE テーブル名 SET 列名1 = 値1, 列名2 = 値2, 列名3 = 値3, ... WHERE 更新する行の条件 |
UPDATEステートメントは、以下のようにFROM句を記述しても同様に実行することができます。
1 2 3 4 5 6 7 8 9 10 |
UPDATE テーブル名 SET 列名1 = 値1, 列名2 = 値2, 列名3 = 値3, ... FROM テーブル名 WHERE 更新する行の条件 |
FROM句に記述するテーブルには別名を使うこともできます。
1 2 3 4 5 6 7 8 9 10 |
UPDATE TBL SET 列名1 = 値1, 列名2 = 値2, 列名3 = 値3, ... FROM テーブル名 AS TBL WHERE 更新する行の条件 |
データ更新SQLの例
以下に「書籍」テーブルのデータ(レコード)を更新するSQLの例を示します。
1 2 3 4 5 |
UPDATE 書籍 SET 備考 = 'Microsoft のデータベース SQL Server 関連の入門書' WHERE 書籍ID = 1; |
上記のSQLを実行すると、「書籍ID」IDが「1」の「よくわかる SQL Server 入門」という書籍情報の「備考」が新しい値の「Microsoft のデータベース SQL Server 関連の入門書」に更新されます。
UPDATEステートメントのWHERE句の指定
UPDATEステートメントで使用するWHERE句では、更新対象となる行の条件を指定します。
WHERE句で条件を指定しない場合は、テーブルのすべての行が更新の対象となります。
これを利用して、例えばテーブルのIDの値を一括して更新するようなことができます。
以下に「書籍」テーブルの「書籍ID」を現在の値に「100」を加算した値に更新する例を示します。
1 2 3 |
UPDATE 書籍 SET 書籍ID = 書籍ID + 100 |