サイト名変更・お引越しのお知らせ

MySQLでデータ更新(UPDATE)方法を解説

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データ取得

productsテーブルのデータはこんな感じになっています。

本記事内ではこちらのデータを更新していきます。

データ更新方法

データの更新には、UPDATE文を使います。

複数方法があるので、それぞれ解説します。

特定のレコードの更新

特定のレコードを指定してデータを更新するにはこのように書きます。

UPDATE テーブル名 SET カラム名 = 更新する値 WHERE 条件;

idが1のnameを更新

mysql> UPDATE products SET name = 'banana' WHERE id = 1;

productsデータ取得

IDが1のnameが更新されていることが分かりますね。

後ほど解説しますが、WHEREを指定しない場合は全てのレコードが更新されるので注意しましょう。

特定のレコードの複数のカラムを更新

複数のカラムを更新する方法を解説します。

複数のカラムを更新したい場合は、カラム名 = 更新データを羅列していけばOKです。

idが1のnamecategoryを更新

mysql> UPDATE products SET name = 'cucumber', category = 'vegetables' WHERE id = 1;

複数のレコードのデータを更新

複数のレコードのデータを更新する方法を解説します。

複数のデータを更新するには、WHEREを指定せずにUPDATE文を実行すればOKです。

全てのレコードのcategoryNULLに更新

mysql> UPDATE products SET category = NULL;

productsデータ取得

categoryが全てのレコードで更新されたことが確認できますね。

レコードの件数を指定して更新

LIMIT文を使うことで、レコードの件数を指定して更新ができます。

mysql> UPDATE products SET category = 'unknown' LIMIT 2;

モグモグさん

このケースでは、上から2つのレコードのcategoryunknownという文字列に変更されます。

まとめ

MySQLでデータを更新(UPDATE)する方法を解説しました。

基本的な内容ですが、使い方を覚えておきましょう。