ラベル mysql の投稿を表示しています。 すべての投稿を表示
ラベル mysql の投稿を表示しています。 すべての投稿を表示

2011年12月2日金曜日

[MySQL] TEXT 型の容量

備忘録的にメモ。

MySQL の TEXT 型は 65,535 バイトまでしか入れられない。
これ以上の容量が欲しい場合は MEDIUMTEXT(16,777,216 バイト), LONGTEXT(4,294,967,296 バイト) を検討。

MySQL :: MySQL 5.1 リファレンスマニュアル :: 10.5 データタイプが必要とする記憶容量

2010年8月13日金曜日

[MySQL] コマンドラインプロンプトを変更する

MySQL のコマンドラインプロンプトは mysql> がデフォルトですが、実は変更・カスタマイズすることができます。

通常
$ mysql -h host database
mysql>

ユーザ、ホスト、データベース名を表示してみる
$ mysql -h host database --prompt="(\u@\h) [\d]> "
(user@host) [database]>

毎回コマンドオプションを指定するのが面倒な場合は、$HOME/.my.cnf を下記のようにすればOKです。
※オプションファイル上では、プロンプトオプションとエスケープシーケンスに重複があるようなので、\ は \\ としてエスケープするのが良いです。
[mysql]
prompt=(\\u@\\h) [\\d]>\\_

使用できるオプションは次の通り。

オプション説明
\vサーババージョン
\dデフォルトデータベース
\hサーバホスト
\p現TCP/IPポートかソケットファイル
\uユーザネーム
\Uフルのuser_name@host_nameアカウント名
\\リテラル‘\’バックスラッシュキャラクタ
\nニューラインキャラクタ
\tタブキャラクタ
\ スペース(バックスラッシュの後のスペース)
\_スペース
\R現時刻、軍隊表記(0-23)
\r現時刻、標準表記(1-12)
\m現時刻の分
\y現年、2桁
\Y現年、4桁
\D日付(フルで)
\s現時刻の秒
\w曜日名を頭3文字で(Mon, Tue, …)
\Pam/pm
\o月名を数字で
\O月明を頭3文字で(Jan, Feb, …)
\c発行されたステートメントごとに増加するカウンター
\l現デリミタ(5.1.12で新規追加)
\Sセミコロン
\'シングルクオート
\"ダブルクオート

詳しくは MySQL のドキュメントを。
http://dev.mysql.com/doc/refman/5.1/ja/mysql-commands.html

2010年5月13日木曜日

[MySQL] MySQL4.1前後でのtimestampのフォーマット

あまり古いバージョンの MySQL を扱う機会は少ないと思いますが、知らないとバグになりやすい仕様があります。
なんと、MySQL の timestamp 型が返す文字列は、バージョン 4.1 の前後で異なっています。

4.1 以前のバージョンでは、YYYYMMDDHHMMSS のフォーマットで返りますが、
4.1 以降のバージョンでは、YYYY-MM-DD HH:MM:SS のフォーマットで返ります。

詳細は下記ドキュメントをご覧ください。

http://dev.mysql.com/doc/refman/4.1/ja/datetime.html
注意: バージョン 4.1 以降、TIMESTAMP は 'YYYY-MM-DD HH:MM:SS' 形式の文字列として返されます。その他のタイムスタンプ長のサポートは中止されました。

開発環境や本番環境で MySQL のバージョンが違うケースなどで地味にハマりますのでご注意を…

2009年12月12日土曜日

[MySQL] timestamp型から日別に集計する

SQLで集計を行う際に、日別に集計を取りたいときがあります。
でも持っている日付データは timestamp のみ。
この時、timestamp に対して GROUP BY を行うと、
日付のみならず時刻までもグルーピングしてしまって、
秒単位の集計になってしまい、使い物になりません。

そこで、SUBSTRING を使って頭 10 文字だけを GROUP BY することで、
日別に集計することができます。
SELECT
    SUBSTRING(timestamp,1,10) AS date,
    COUNT(*)
FROM
    table
GROUP BY
    date;
timestamp が 'YYYY-MM-DD HH:MM:SS' のフォーマットなので、
先頭から 10 文字を見れば、'YYYY-MM-DD' になるという寸法ですね。

2009年10月15日木曜日

[MySQL] mysqldump の INSERT 文を複数行にする

mysqldump のオプション --skip-extended-insert を使う。
dump データの diff をとる時とかに便利。

[参考] http://dev.mysql.com/doc/refman/5.1/ja/mysqldump.html