MySQLでCREATE TABLE

CREATE TABLEするときに、ASを使えることをはじめて知った。

user_using_accessoriesテーブルの中身がuser_using_accessories_0310テーブルにそのままコピーされるみたいだ。

Pocket

Posted in MySQL.

MySQLのDUPLICATE

例えばユーザーのプロフィール情報を保存しておくuser_profilesテーブルに対して、

・新規登録ならばINSERT

・プロフィール更新ならばUPDATE

するとしよう。

user_profiles

id name intro
1 hoge こんにちは

①登録したいユーザーのデータがuser_profilesに存在するかをみる。

②①が存在していればUPDATE、①が存在していなければINSERTをする。

まぁこれだけですが、プログラムで書くと

とかなる。

これをもっとシンプルにできるのが「ON DUPLICATE KEY UPDATE」です。

これだけで動きます。

ただしこれを使うには、挿入する行に主キーかユニークキーが含まれることが条件です。

重複を許さない主キーかユニークキーに対してINSERTをつかい、主キーかユニークキーが重複してしまうと、勝手にUPDATEが使われるらしいです。

データの有り無し便利ですね。

参考

Pocket

Posted in MySQL.

MySQLでTRUNCATE

テーブルの中を空にする方法。

DELETE文を使う

TRUNCATE文を使う

DELETEは行を1行ずつ削除しているのに対して、

TRUNCATEはテーブルをDROPして、再作成しているらしいです。

行が多くなるとDELETEではアクセス数が増えるため、

テーブルの中を完全に空にする場合はTRAUNCATEの方がよさそうですね。

※トランザクションセーフではないため、トランザクションやロックの途中では使えません。

※AUTO INCREMENTしているidなども初期化されます。

Pocket

Posted in MySQL.