今回は、前回に引き続き、SQL文の4大コマンドの1つ、
『UPDATE文』について解説していきます。
UPDATEは、直訳すると更新です。
このUPDATE文は、データテーブルにすでに存在するデータを更新するコマンドです。
例えば、前回のInsert文でデータをデータテーブルに格納したあと、
データの変更・更新をしたい場合に使います。
UPDATE文でデータを更新する場合、
既にあるデータ列を指定することが必須となります。
そうでないと、すべてのデータを更新することになってしまい、
意図せずデータが変わってしまうためです。
更新するデータ列を指定する方法が、
以前解説したWhere句です。
まだWhere句についてよくわかっていない場合は、
まずはこの記事を理解してからUPDATE文に臨みましょう。
Youtubeチャンネルにさまざまな動画を上げています。
↓↓↓こちらからYoutubeチャンネルにアクセス!! ↓↓↓
本ブログはアフィリエイトを用いた広告を掲載しています。
MySQLのUPDATE文とは?
MySQLのUPDATEとは、
冒頭でもお伝えしたように、既存のデータテーブルのデータを
変更するのが主な役割です。
データを取っていって、
データテーブルにInsert文を使ってデータを挿入していきますが、
途中でそのデータを変更する必要ってありますよね。
データを格納して終わりだと扱いづらいですから、
この機能は必須ですよね。
そんなUPDATE文ですが、
基本的な構文はこのようになっています。
UPDATE 〇 SET (△ = □) WHERE ★;
〇:値変更したいデータが入っているテーブル名。
△:値変更したいカラム名。
□:変更後の値。
★:条件式。
条件式に関しては、比較演算子などが入ります。
簡単な比較演算子としては、=や、<>などの演算子があります。
ここの演算子に関しては、種類が多いので別記事にて解説予定です。
MySQLのUPDATE文の実際の使い方は?
それでは、基本構文がわかったところで、
実際にUPDATE文を使ってみましょう。
今回用意したのは、このようなテーブルです。
名前は、testUPDATEという名前にしています。
データとしてはなんでもよいのですが、
とりあえずこのように簡単にデータを入れておきました。
データを入れる方法は、Insert文を使っています。忘れてしまったらこちらの記事をご覧ください。
では実際にUPDATE文を使ってデータを変更していきましょう。
例としては、calc_resultのデータが間違えていたので、
hobbyのcalc_resultの値を30に変更したい場合を考えてみましょう。
その場合は、このようなUPDATE文になります。
UPDATE testUPDATE set calc_result = 30 where name = 'hobby';
コマンドの解説ですが、
まずUPDATEの直後は対象のテーブル名ですので、testUPDATEとします。
次に、どのカラムを変更するかなので、今回はcalc_resultを30に変更したいので、
このように記述します。
最後にwhere句で、変更したデータ行を選択できるように条件式を書きます。
今回はnameがhobbyとなっている行を変更したいのでこのように書きます。
実行結果としては、このようになります。
思い通りに、hobbyのデータ行のcalc_resultの値が30に変わっていますね。
同じデータ行で、複数のデータを変更したい場合。
データも一気に2つ以上の変更がある場合もありますよね。
そんな場合を解説します。
実例で示したほうが早いので、
例えば、happyという名前が入っているデータ行を変更します。
具体的には、calc_resultの値を100、raw_dataの値を0.1に変更する場合、
このようなコマンドになります。
UPDATE testUPDATE set calc_result = 100, raw_data = 0.1 where name = 'happy';
実行した結果はこちらです。
happyのデータ行が一気に変更されていますね。
複数のデータ変更がある場合は、カンマでつなげていくことで対応可能ということも
覚えておくといいですね。
また、Insert文の時は、項目を()で囲んでいましたが、
UPDATE文では不要です。むしろ入れるとエラーになります。
ちょっとした疑問。where句で検索に使ったデータをupdateすると?
ちょっと疑問に思いませんでしたか?
例えば、先ほどは、nameがhappyのデータ行をWhereで指定して、
calc_resultとraw_dataを変更しました。
では、nameでwhereで指定して、nameのデータをupdateしたらどうなるのか?
実際にやってみましょう。コマンドとしてはこうなります。
UPDATE testUPDATE set name = 'happy2' where name = 'hobby';
このコマンドを実行すると、whereでnameがhobbyというデータ行を変更するわけですが、
whereの条件式で使ったhobbyがデータテーブル上から消え去ります。
結果はこのようになります。
特にこの仕組みでなにかできるわけではないですが、
whereで使ったところも変更できるというのは不思議な感じがしますね。
MySQLのUPDATE文の使い道は?
UPDATE文の使い道は、既存のデータテーブルの値を変更することなので、
例えば、とりあえずデータを1つ入れてデータ行を作っておいて、
後でデータを足していくのにも使えます。
Insert文のところで、カラム名を指定して挿入した場合、
指定されなかったカラムにはNULLが入っていたと思います。
このNULLの状態にしておいて、
時期が来たらUPDATEでデータを格納するという使い方もできます。
例えば、こんな感じでNULLが含まれているテーブルを用意して、
次の工程で、hobbyのcalc_result列にデータを入れるみたいな使い方です。
データ列に一発でデータが入ることもありますが、
あとの工程でデータを追加していくことってあると思います。
そんな時は毎回Insertして行を増やしていくよりも、
このようにNULLの状態でInsertしておいて、
あとでUpdateして値を入れるほうがスマートですよね。
今回のまとめ。
今回は、MySQLの4大コマンドであるUPDATE文について解説しました。
簡単にまとめると、既にInsertされているデータに対しての変更方法です。
データの扱い全般にかかわる話ですが、
UPDATEしてデータを変更した場合、前のデータテーブルではなくなります。
つまり、一度データを変更すると、元のデータテーブルの情報が消えます。
データの履歴や、推移なんかが情報として必要な場合は、
UPDATEしてしまうと、最終データしか残りませんから使ってはいけません。
※これ結構重要なポイント。
もしデータの履歴や、推移など全データが必要な場合は、
insertでデータを挿入するのがベストです。
例えば測定シリアルを連番にして名前の末尾に数字を足していくとか、
もしくは測定日時のDateTimeカラムを使って測定シリアルは同じでも、
時系列でまとめられるようにしておくのが良いと思います。
4大コマンドも残るはdelete文のみとなりました。
今までの内容を復習したい場合は、MySQLのカテゴリ内を参照して下さい。
コメント