【MySQL】テーブルにカラムを追加する

MySQLでテーブルにカラムを後から追加するときの書式をすぐ忘れるのでメモ。

テーブルの末尾に追加

テーブルの指定したカラムの後ろに追加

例:

【MySQL】複数行の結果を一行にまとめて返す

MySQLで複数行の結果を1行にまとめるにはGROUP_CONCAT関数を使用します。

SEPARATORで区切られた文字列で返ってきます。

どんなときに使うかというと、
たとえば
・USERテーブルにユーザー情報
・ADDRESSテーブルに住所情報
が入っていたとして、各ユーザーは住所が複数登録されている可能性があるとします。
(大手ECサイトでユーザーが住所を複数登録できるというようなイメージです。)
このとき
「全ユーザーの全住所を取得して、ユーザーごとにまとめて表示したい」
となったとき、3つの方法があります。

・SQLでUSERを取得し、USERの1件ずつに対して、またSQLでADDRESSを取得する。
・SQLでサブクエリーを使って全USERの全ADDRESSを取得して、プログラム側でUSERごとにまとめる
・SQLでGROUP_CONCATを使ってUSERごとにADDRESSをまとめた状態で取得する

3番目が一番スマートに取得できますよね。
ただし、SQLがあまり複雑になるとパフォーマンスが低下する場合がありますので、
プログラム側でやったほうがよいケースもあります。

【MySQL】文字列の一部を一括置換する

UPDATE文でデータを一括で変更する際に、
「文字列の一部を置換したい」ということがあると思います。

REPLACE関数を使えば簡単です。

【MySQL】自前でプライマリキーを採番してINSERT

MySQLには自動で採番するAUTO_INCREMENTという設定があります。
基本的にはこれを使えば自動的にユニークな番号を採番してくれるのですが、
データを頻繁に削除したり、テーブルをコピーしたりしていると
AUTO_INCREMENTの値が重複したり、過去に削除したデータと同じ値になってしまったりと
いろいろと怖いリスクがあります。
そのリスクを避けるため、私はINSERT文を実行する関数の中で自前で採番するようにしています。