Category / MySQL
【MySQL】ROUND関数
2010-02-19 【MySQL】ROUND()関数 MySQL4系と5系でマニュアルの記載が変わっています。動作も違います。 結論から言うと 「四捨五入したいときはround()関数は使うな」。四捨五入=round()とは限らない。 0. […]
【MySQL】date型、datetime型に対して is null すると?
2010-02-05 1、テーブルを作る date型でNULLは許可。 create table test_date (dt date); 2、データを挿入 NULL、0000-00-00、普通の日付、不正な日付を挿入してみる。 insert […]
【MySQL】CSVでエクスポート(テーブル単位 or クエリの結果を丸ごと)
2010-01-29 CSVでテーブルのデータをエクスポートする。 今回はmysqlコマンドで、SELECT … INTO OUTFILE … 文を使ってみる。 SELECT … INTO OUTFILE […]
【MySQL】切り捨てたら1円アップ
2010-01-26 MySQL4環境にて発生。 次のSQLをMySQL4環境で実行 select 5800, 5800*0.05, ceil(5800*0.05), ceil(5800*5/100), ceil(5800*0.05 - 0) […]
【MySQL】変更した行が0行でも更新ログ(バイナリログ)は残るの?
2010-01-25 ためしてみました。 空のテーブルを作成。 適当なupdate文を実行(もともと0行なので、影響を受ける行も当然0行) バイナリログを確認。 結果 バイナリログに、影響を受けた行が0行であっても、ログが残りました。(my. […]
【MySQL】SQLで誕生日を計算する
2010-01-22 誕生日が日付Aの人が、日付Bのとき何歳か計算する。 月数を算出する日付関数があれば、「切り捨て(AからBの月数/12)」の計算式で算出できる。 MySQLには月数を算出する日付関数はないようなので、これでどうでしょう。 […]
MySQL文字化けの確認(文字コード変換を誰がやる?)
2010-01-04 波ダッシュ、全角チルダ、全角ハイフン、半角ハイフンが、「?」になる、文字化けする。 そんなMySQL文字化けの確認。 UTF-8の入力があって、EUCのデータベースに入れる…などの場合に文字コード変換が必要。これをMyS […]
【MySQL】4.1系で不具合?(NULL許可のUNIQUE制約のあるカラムにて)
2009-12-06 今回は、不思議な現象の報告のみ。 MySQL 4.1.22付近の複数のバージョンで発生。 MySQL 5系では発生しませんでした。 現象) 下記の定義とデータのテーブルで、NULL許可のUNIQUE制約のあるカラムを S […]
update文にはwhere句を必ず書く(気をつけていること)
2009-12-02 個人的に注意していることですが、update文には必ずwhere句を書くようにしています。 update member set namae='太郎さん' 意図せずこの状態で実行してしまうと、全件更新の事件発生です。 必ず […]
文字コードC2A0(UTF-8の半角空白)なんてあるんですね
2009-11-30 あるテキストファイルをiconvコマンドで文字コード変換しようとすると、iconvコマンドが失敗する現象に遭遇した。 どうやら、バイトコードC2A0(UTF8の半角空白)が入っているのが原因のようだ。 キーボードでは入力 […]
【MySQL】 データ格納フォルダをコピーして動くのはMyISAMだけ
2009-11-20 MySQLがデータを格納しているディレクトリを見てみると、データベースをあらわしているっぽいディレクトリが並んでいます。またその中にはテーブルをあらわしているっぽいファイルが並んでいます。 これを見て、安易にディレクトリ […]
【MySQL】サーバーの文字セット、クライアントの文字セット
2009-11-16 MySQLではサーバーが持っている文字セットの指定とクライアントが持っている文字セットの指定があります。 mysql> show variables like 'character\_set\_%'; +----- […]
MySQLのバージョンが知りたい?
2009-11-13 接続ができるなら、このようなSQLでMySQLのバージョンがわかります。 select version(); 実行結果例) mysql> select version(); +------------+ | versio […]
【MySQL】SQLの最大長は?
2009-11-09 普段意識することはないですが、MySQLのクエリの長さには制限値があります。 ● どこで分かるの? → /etc/my.cnf に書いてある。 max_allowed_packet という設定項目。 こんな感じで書いてあ […]
【MySQL】 GROUP_CONCAT()で文字化けする
2009-10-21 GROUP_CONCAT()で文字化けした。原因不明。 実際にはテーブルを2つ結合したときに発生した。以下の説明は擬似的SQLにて。 こんなSQLを実行。 SELECT GROUP_CONCAT(name) FROM U […]
MySQLのtimestamp型のカラムについて(タイムスタンプ自動更新など)
2009-10-20 MySQLのtimestamp型のカラムについて http://dev.mysql.com/doc/refman/5.1/ja/timestamp-4-1.html MySQLのtimestamp型で日付がどのように更新 […]
【MySQL】mysqlbinlogで指定の日時範囲のバイナリログを取得する
2009-10-02 # バイナリログを、テキストログに変換 mysqlbinlog xxxxx-bin.000969 > /tmp/969.log mysqlbinlogでバイナリログからテキストログを生成するとかなりの大きさになることがあ […]
【MySQL】不完全な日付を検出する
2009-10-01 日付の整合性チェックはアプリ側の責任だというのがMySQLの言い分です。 データベース側は渡されれば「2010/02/29」や「2000/00/13」のような日付でも格納してしまいます。 アプリ側(phpなど)での日付チ […]
【MySQL】CREATE … SELECT …文
2009-09-30 create文の後ろにselect文をつけて、テーブルを作成しながらデータも入れてしまうSQLを書くことができます。 素直に次のように書けば、まず普通の動きをします。 検索結果のデータをもとに、新しいテーブルを作ります。 […]
【MySQL】skip-character-set-client-handshake って何?@文字化け対策
2009-09-28 my.cnfにて設定できる項目です。 そのままの意味で、勝手な変換を行わず、 default-character-set = utf8 などの設定に従います。 [mysqld]のセクションのところに書いておくとOKです。 […]