select last_day(date_add(now(), interval -1 month))
まぁなんてことない手法なのですが、なんとなく便利だったので記録。「今日の一ヶ月前の月の末日」っていう意味ですね。
select last_day(date_add(now(), interval -1 month))
まぁなんてことない手法なのですが、なんとなく便利だったので記録。「今日の一ヶ月前の月の末日」っていう意味ですね。
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」でできるので、フロントエンド側のコードをごちゃごちゃさせずに複雑な処理がさせられると思います。
mysqlcheck -o DB名
これだけです。ドキュメントを読む限り、内部的にcheck table、repair table、analyze table、optimize tableを呼んでいるようです。
「対象はmyisamだけ」みたいなこともどこかで読んだのですが、公式ドキュメントにはそういう記述はなし。4.xの話なのでしょうか。あ、ハセテツは5.0を利用してます。
必要なのはanalyze table、optimize tableだけで、これらはinnodbにも対応しているから特に問題はないでしょう。
mysql> load data infile ‘ファイル名フルパス’ into table インポート先テーブル名 fields terminated by ‘\t’;
もちろん、ファイルはMySQLが触れる場所にないといけない。terminated(区切り文字)はカンマでもタブでも、任意で。文字コードに注意。
select adddate(now(), interval- 3 month);
これで、3ヶ月前の日付が得られる。引数は前から
「基準日、差分、単位」
となっている。
year,day,hour等も利用可能。
ずっとMS SQLSERVERかPostgreSQLをメインに使ってたんだけど、最近MySQLに触れることがどんどん増えてきました。まぁ覚えておいて損はないので備忘録に追加。
grant all on DB名.* to ‘ユーザ名’@'%’ identified by ‘パスワード’;
flush privileges;
allは全部できまっせ、という意味。DB名のあとのアスタリスクはワイルドカード。すべてのテーブルに対して、という意味。ユーザ名のあとの「%」はどっからでも、という意味。これを「localhost」としておけば、localhostからの接続しか許可しないようになる。まぁMySQLよりも先にLinuxのFWがあるが。
「flush privileges;」は設定情報を反映させるコマンド。ついついコレを忘れてしまう。