10月 28

select last_day(date_add(now(), interval -1 month))

まぁなんてことない手法なのですが、なんとなく便利だったので記録。「今日の一ヶ月前の月の末日」っていう意味ですね。

Tagged with:
10月 24

MySQLも5.xからトリガーが使えるようになりました。SQL SERVERやPostgreSQLでストアド、トリガーを多用していたハセテツとしては大変ありがたいわけです。

delimiter //

これで書き始めます。デリミタは「;」ですが、トリガーの記述の中でもセミコロンを使うために一時的に「デリミタはスラスラだよ」と宣言しておきます。べつにスラスラじゃなくてもOKでしょう。

create trigger トリガー名称
before insert on 対象テーブル for each row begin
declare target_id tinyint;
select hoge_id into target_id from マスタデータテーブル where hoge_code = new.hoge_code;
set new.log_hoge_id = target_id;
end; //

まぁなんのこっちゃわからんサンプルですが、declareで変数宣言、select intoで変数へ代入、setで値を設定しています。この例は「ログデータテーブルに値を突っ込む前にマスタテーブルから値を引っ張ってきておいて、それをinsertします」っていう感じです。

終わったら

delimiter ;

でデリミタを元に戻すのをお忘れなく。

テーブル例も書いたほうがいいんだろうけど、申し訳ないけど割愛。特定テーブルの値が更新されたら更新ログを残す、なんてことも「after update」でできるので、フロントエンド側のコードをごちゃごちゃさせずに複雑な処理がさせられると思います。

Tagged with:
9月 17

mysqlcheck -o DB名

これだけです。ドキュメントを読む限り、内部的にcheck table、repair table、analyze table、optimize tableを呼んでいるようです。

「対象はmyisamだけ」みたいなこともどこかで読んだのですが、公式ドキュメントにはそういう記述はなし。4.xの話なのでしょうか。あ、ハセテツは5.0を利用してます。

必要なのはanalyze table、optimize tableだけで、これらはinnodbにも対応しているから特に問題はないでしょう。

Tagged with:
6月 17

mysql> load data infile ‘ファイル名フルパス’ into table インポート先テーブル名 fields terminated by ‘\t’;

もちろん、ファイルはMySQLが触れる場所にないといけない。terminated(区切り文字)はカンマでもタブでも、任意で。文字コードに注意。

Tagged with:
5月 05

select adddate(now(), interval- 3 month);

これで、3ヶ月前の日付が得られる。引数は前から
「基準日、差分、単位」
となっている。

year,day,hour等も利用可能。

Tagged with:
5月 05

ずっとMS SQLSERVERかPostgreSQLをメインに使ってたんだけど、最近MySQLに触れることがどんどん増えてきました。まぁ覚えておいて損はないので備忘録に追加。

grant all on DB名.* to ‘ユーザ名’@'%’ identified by ‘パスワード’;

flush privileges;

allは全部できまっせ、という意味。DB名のあとのアスタリスクはワイルドカード。すべてのテーブルに対して、という意味。ユーザ名のあとの「%」はどっからでも、という意味。これを「localhost」としておけば、localhostからの接続しか許可しないようになる。まぁMySQLよりも先にLinuxのFWがあるが。

「flush privileges;」は設定情報を反映させるコマンド。ついついコレを忘れてしまう。

Tagged with:
Get Adobe Flash playerPlugin by wpburn.com wordpress themes
preload preload preload