MySQLでデータを更新(UPDATE)する方法を解説します。
- MySQL 8.0
環境準備
MySQLの環境を準備しましょう。
すでにある方はスキップで良いですが、まだの方はこちらの記事でローカル環境にDockerを使ってMySQLの環境を作成しましょう。
Dockerでデータを永続化しつつMySQLの環境を構築する方法を解説
さらに準備として、test
データベースにproducts
テーブルを作成しサンプルのデータを追加しておきます。
testデータベースを作成
mysql> create database test;
productsテーブルを作成
mysql> CREATE TABLE `products` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50),
`category` varchar(10),
PRIMARY KEY (`id`)
);
サンプルデータを追加
mysql> INSERT INTO products (name, category) VALUES ('apple', 'fruits'), ('orange', 'fruits'), ('broccoli', 'vegetables');
productsテーブルのデータはこんな感じになっています。
本記事内ではこちらのデータを更新していきます。
データ更新方法
データの更新には、UPDATE
文を使います。
複数方法があるので、それぞれ解説します。
特定のレコードの更新
特定のレコードを指定してデータを更新するにはこのように書きます。
UPDATE テーブル名 SET カラム名 = 更新する値 WHERE 条件;
idが1のnameを更新
mysql> UPDATE products SET name = 'banana' WHERE id = 1;
IDが1のnameが更新されていることが分かりますね。
後ほど解説しますが、WHEREを指定しない場合は全てのレコードが更新されるので注意しましょう。
特定のレコードの複数のカラムを更新
複数のカラムを更新する方法を解説します。
複数のカラムを更新したい場合は、カラム名 = 更新データ
を羅列していけばOKです。
idが1のnameとcategoryを更新
mysql> UPDATE products SET name = 'cucumber', category = 'vegetables' WHERE id = 1;
複数のレコードのデータを更新
複数のレコードのデータを更新する方法を解説します。
複数のデータを更新するには、WHERE
を指定せずにUPDATE
文を実行すればOKです。
全てのレコードのcategoryをNULLに更新
mysql> UPDATE products SET category = NULL;
categoryが全てのレコードで更新されたことが確認できますね。
レコードの件数を指定して更新
LIMIT
文を使うことで、レコードの件数を指定して更新ができます。
mysql> UPDATE products SET category = 'unknown' LIMIT 2;
モグモグさん
このケースでは、上から2つのレコードのcategoryがunknownという文字列に変更されます。
まとめ
MySQLでデータを更新(UPDATE)する方法を解説しました。
基本的な内容ですが、使い方を覚えておきましょう。