【MySQL】作業効率を高める!MySQLクエリの良い所取り「REPLACE」についての解説
  • facebookページ
  • twitterページ
  • 2020.01.30

    【MySQL】作業効率を高める!MySQLクエリの良い所取り「REPLACE」についての解説

    MySQLのクエリには「REPLACE」があります。

    今ではもう当たり前のように使用しているクエリですが、MySQLを学習する前にプログラミング言語を学習した私は、データベースのデータを引っ張り出してそれを配列から取り出し置き換えた後再度UPDATEでデータを更新するというなんとも遠回りな方法をしていました。

    恐らくMySQLの学習を始めて間もない方の中には同じ方法でデータ更新をされている方も多いのではないでしょうか?

    そこで今回はこの”REPLACE”についてわかりやすく解説をしてみたいと思います。

    知ると非常に便利になるクエリですので最後までお付き合いください。

    REPLACEとは

    簡単に説明すると、MySQLのデータを更新する際にデータベース内で直接変更をするクエリです。

    プログラミング言語には大体このメソッドが存在しますが、MySQLクエリにも存在します。

    このクエリは、INSERT文とUPDATE文の良い所取りをしたようなクエリであり、REPLACEの最大のメリットでもあります。

    挿入するデータが既にテーブルに存在した場合には新規でレコードを挿入せず、既存のレコードに新たなデータを上書きします。

    逆にデータがテーブルに存在しない場合には、INSERT文と同じように新規レコードを挿入します。

    データを指定してレコードを操作する

    基本的な構文は次のようになります。

    上記の構文ではデータのみ指定してレコードの置き換えや新規追加をします。

    それでは早速、具体的に説明していきます。

    まずREPLACEの使用にあたり、データベーステーブルを確認します。

    今回使用するのは「sample_db」の中に予め作成しておいた「users」という名前のテーブルです。

    この中身の一つを先ほど構文を記述したREPLACEを使って変更をかけてみましょう。

    上のサンプルではidが4のデータのnameとageにそれぞれREPLACEを使い置換を実行しました。

    置換後にSELECT文で検索表示させると、元々「Noah」だった内容が「beth」に、ageカラムが「30」から「15」に置き換えられていることがわかります。

    では次はカラム名も指定して置き換える方法について解説していきます。

    カラム名とデータを指定したレコード置換

    カラム名とデータをそれぞれ指定して置き換える場合には以下のような記述に変わります。

    先ほどの基本形の構文に今度はフィールド名が追加されています。

    ではこちらも実際に見てみましょう。

    次のコマンドをご覧ください。

    上記サンプルではレコードの指定は行わず、nameとageにそれぞれ「Andy」と「50」を指定してレコード置換を実行しています。

    今回は”id”の指定をせず置換を行ったため、デフォルトで”not null”と”Auto increment”が付帯されているidの先頭にデータが新規追加されていることが確認できます。

    これは、今回使用しているテーブルのidカラムにはnullまたは””を指定することで強制的に「0」が挿入されるような構造となっているため、レコードの先頭に新規で挿入されたわけです。

    SELECTを使った置換

    REPLACEのもう一つの使い方としては、SELECT文を使って検索した結果を基に置換を行う方法があります。

    構文は以下の通りです。

    上記の構文について簡単に説明します。

    REPLACE INTO テーブル名に続けて、SELECT文を入力します。条件検索も可能なので、条件を指定する場合にはWHEREなどの条件を追加してください。

    実際にコマンドを見てみましょう。

    2つのテーブルがあります。この二つのうち、”sample_table_a”に”sample_table_b”のレコードを追加してみます。

    “sample_table_b”のレコードのうち「U003」に該当するレコードを条件検索し、そのレコードを丸ごと”sample_table_a”に置換できていることが確認できました。

    まとめ

    いかがでしたか?

    今回はMySQLのREPLACEクエリについて解説してみました。

    MySQLは他のプログラミング言語と違い、REPLACEを使うとINSERTもしくはUPDATEを自動で判断してくれるので開発側で判断する必要がありません。

    コマンドも単純なため簡単に覚えることが出来、実用性も十分にあります。

    今からMySQLの学習を始める方でも苦労なく覚えられますので、こういったクエリはどんどん覚えて使うようにすると作業効率がグンと上がります。



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE