【MySQL入門】UPDATEでデータを更新!一括更新から条件付き更新まで

皆さんMySQLつかっていますか?

今回はUPDATE文について学習していきます。UPDATEを使うことで、様々な方法でデータを更新することができます。

この記事ではUPDATEの基本から、データの一括更新と特定の条件を指定した更新の方法をお伝えしてきます。データ更新について、サクッとマスターしてしまいましょう!

UPDATE文の基本

まずはUPDATE文の基本からです。

シンプルなUPDATE文

UPDATE文は冒頭でもお伝えしたとおり、データの更新を行うためのSQL文です。一番シンプルな書式は次のようになります。

  • UPDATE テーブル名 SET カラム名 = 値;

このように書くと、「テーブル名」にある「カラム名」のカラムに格納されているすべての値が「値」に更新されます。レコードが何千件あっても一括で更新できるため、新しいカラムを追加したときなどに利用されます。

ただ、裏を返せばこのコマンド一つで何千件分ものデータを吹き飛ばしてしまうこともできるので、使用には細心の注意が求められます。初心者がクリティカルなデータベースを扱う場合は–safe-updates オプションを使うという方法があります。

このオプションはUPDATE文を実行する際、このあとで説明するWHERE条件をつけないと実行できなくなる、というオプションです。使い方は、MySQL起動時に次のように設定するだけです。

この状態で次のようなクエリを実行すると、下のようなエラーを吐いて実行が阻止されます。

WHEREが付いていないような、UPDATEやDELETEの対象が一意に決まらない処理は実行できなくなるわけです。初心者のうちは、念のためにこのオプションを付けながらデータベースを扱うと良いかもしれません。

条件をつけたUPDATE文

シンプルなUPDATE文は一括更新には便利ですが、多くの場合、更新するのは特定のデータに限定されることが普通でしょう。

では、特定のデータのみを更新するにはどうするかというと、WHERE句をつけることで対応します。書式

  • UPDATE テーブル名 SET カラム名 = 値 WHERE 条件;

実際のクエリを見たほうがわかりやすいので、テーブルを作成して動かしてみましょう。まずは下のテーブルを作成してください。

このようなテーブルができていればまずはオッケーです。では、サブローの年齢を19歳に修正してみます。必要なクエリは次のとおりです。

成功すると次のように表示されます。

更新されているかどうか、実際に見てみましょう。

実行結果

たしかに、サブローの年齢のみが書き換わっているのが確認できました。

UPDATE文を使った一括更新

ここからはUPDATEを使った応用的な操作をみていきましょう。まずはカラムの追加に合わせた一括更新です。カラムを追加した際、とりあえず特定の初期値で埋めておきたい、そんな場面で有効な方法です。

今回は先程から使っているテーブルにテスト結果のカラムを追加して、初期値として「未測定」を設定してみましょう。実際に使うクエリは次のとおりです。

実行結果

スコアの部分が一括で更新できましたね。レコードが3個ぐらいだとありがたみが薄いですが、UPDATEはレコードがどれだけ多くても一気に書き換えることができます。

繰り返しになりますが、間違った使い方をすれば重要なデータが一瞬で吹き飛ぶので、くれぐれも細心の注意を払って利用してください。

UPDATE文で条件を指定して更新

最後に条件をうまく利用することですこし凝った更新をしてみましょう。今回はテスト結果の上位2名に「勝ち」と表示させてみます。どんな条件を使えば実現できるか少し考えてみてください。

それでは、実際に使ったクエリです。

実行結果

では、クエリで何をやっていったのかをみていきましょう。まず最初の3行はスコアにデータを入力しているだけです。続く2行で判定用のjudgeカラムを作り、初期値に「-」を入れました。その次のクエリが今回一番注目してほしいところで、前半部分は今まで学んできたとおりのUPDATE文です。

そして、後半が新しく登場する部分、ORDER BY句とLIMIT句です。ORDER BYはカラム名を指定し、そのカラム名を整列させる効果があります。

並べ方には小さいものから大きなものへ並べる昇順と大きなものから小さなものへと並べる降順があります。ORDER BYではカラム名の後ろにASC/DESCをつけることで昇順・降順を切り替えることができます。

何もつけない場合は昇順で動作することも合わせて覚えておきましょう。今回はスコアの大きい順に並べるためにORDER BY score DESCを利用しました。

そして、もう一つがLIMIT句です。LIMITは整数を同時に指定することで、その整数分だけ範囲を制限することができます。今回の使い方では上位2人だけを制限するために降順で並べ替えたあと、LIMIT 2の制限をかけました。

これにより、スコア上位2名に制限がかけられたわけです。あとは、UPDATEで制限をかけた対象のカラムの値を更新する、というのが今回のクエリになります。

UPDATEに限らずORDER BYとLIMITの合わせ技はいろいろな場面で役に立つので、まとめて覚えておくといいですね。このようにして、スコアの上位2名に「勝ち」と表示させることができました。

まとめ

いかがでしたか?今回はUPDATEについて基本的な部分から、一括更新・条件設定をした更新と見てきました。UPDATEは一気に書き換える能力が高いため、扱いを間違えると大惨事を引き起こしかねません。

ですが、うまく使うことで柔軟にデータを更新することができ、役に立つ場面はとても多いものです。ぜひ、しっかりと習得して、何も問題なく更新手続をこなせるようになりましょう。この記事が皆様のMySQL学習の一助となれば幸いです。

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

平山 晃

平山 晃

フリーのエンジニア・ライター。
プログラミング、ライティング、マーケティングなど、あらゆる手段を駆使して、
ハッピーなフルリモートワーカーを目指し中。

最近興味がある分野は深層強化学習。
積みゲー、積ん読がどんどん増加しているのがここ数年の悩み。
実は侍エンジニア塾の卒業生だったりします。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説