アシアルブログ

アシアルの中の人が技術と想いのたけをつづるブログです

最近頻繁に使用するMySQL関数など

こんばんは。笹亀です。

先週あたりからめっぽう寒くなってきました。
どうやら大寒波のおかげで心配されていた今年のスキー場の雪の心配はなさそうです。

さて、今回は頻繁に使うことを自分へのメモの意味でも記事にまとめさせていただきました。
みなさんの参考になれば幸いです。

ーーーMySQLシリーズーーー
■mysqldumpのオプション「--skip-extended-insert」
 データベースのデータ(INSERT)を1行のINSERT文にするのではなく、複数行のINSERT文として出力する

 自分が使った用途:ダンプを取ったデータを特定のキーワードでgrepするため

用途は限られますが、便利です。このオプションを見つけるのに少し苦労しました^^;

■REPLACE関数
 MySQLの文字列置換する関数

 自分が使った用途:データベース内の文字を一括で置換するため



  UPDATE hoge_t SET body = REPLACE(body, 'www.asial.co.jp', 'blog.asial.co.jp');

 「www.asial.co.jp」→「blog.asial.co.jp」に置換
 
間違えると悲惨なことになりますのでちゃんとバックアップしてから実行するようにしましょう。

■登録日から30日ごとに処理をするデータを算出する
 DATEDIFFとMOD関数を使ってSQLで算出する

 自分が使った用途:登録日から30日ごとに通知メールを送りたいときに使用



SELECT * FROM user WHERE MOD(DATEDIFF(now(),regist_date), 30) = 0 AND DATEDIFF(now(),regist_date) <> 0;

 DATEDIFFで現在の日付からの日数を算出して、30で割る
  →日数が0(登録日が当日)の場合は除く

[DATEDIFFの実行サンプル]


○○日ごとのデータを取得するときに非常に効果的、主にバッチ処理などで活用させていただいております。MySQLの関数は負荷を気にしなければ、組み合わせて次第でいろいろできて恐るべしです。

ーーーおまけ サーバインストール編ーーー
■MySQL5.1のCentOs5.4のyumでインストール時の注意事項
yum install mysql*」デフォルトでは5.077(2009/12/21現在)がインストールされるので、remi レポジトリを追加してMySQL5.1系をインストールしました。
下記の手順で更新する


wget http://rpms.famillecollet.com/el5.i386/remi-release-5-6.el5.remi.noarch.rpm
rpm -Uvh remi-release-5-6.el5.remi.noarch.rpm
yum --enablerepo=remi,epel,rpmforge update mysql*


MySQL5.1系を入れるとPHPも5.3系にアップデートされてしまう(困
本当はPHP5.2.11とMySQL5.1がよかったんですが。。。
困ったものです(でも結局、このまま押し切って使うことにしました


早いもので今回が今年最後のブログとなりそうです。
少し早いですが皆様、よいお年をお過ごしくださいませ。
来年度もよろしくお願い致します。