カイワレの大冒険 Third

技術的なことや他愛もないことをたまに書いてます

MySQLのオペレーションを少しでもカジュアルにする方法

MySQL Casual Advent Calendar 2011の補欠記事でございます。折角申し込んだので、書いた次第でございます。

CASE文とは、という話しを書こうと思いましたが、カジュアルにやめましたよ!

そんな話はさておき、タイトルから見る限り、日本語でおkと言われそうですが、単に毎日触れている作業を少しでも軽減できたらいいですよね、ということでカジュアル(気軽)にMySQLと戯れる方法を書いてみたいと思います。

情報足りねーよって場合

まずはデフォルトのプロンプトですね。


こんな感じ。色気がないですな。 なので、味をつけてみましょう。

sugyanさん6日目の記事で触れていましたが、MySQLでは「MYSQL_PS1」という環境変数を利用できます。なので、.bashrcとかに以下のように書いておくと、MySQLのプロンプトにお好みの情報を加えることができます。

ここで使えるオプションは、

オプション 	説明
\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, …)
\P 	am/pm
\o 	月名を数字で
\O 	月明を頭3文字で(Jan, Feb, …)
\c 	発行されたステートメントごとに増加するカウンター
\l 	現デリミタ(5.1.12で新規追加)
\S 	セミコロン
\' 	シングルクオート
\" 	ダブルクオート
オプション 	説明
\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, …)
\P 	am/pm
\o 	月名を数字で
\O 	月明を頭3文字で(Jan, Feb, …)
\c 	発行されたステートメントごとに増加するカウンター
\l 	現デリミタ(5.1.12で新規追加)
\S 	セミコロン
\' 	シングルクオート
\" 	ダブルクオート

(引用:MySQL :: MySQL 5.6 リファレンスマニュアル :: 4.5.1.2 mysql コマンド

SET GLOBAL反映されねーとか、show processlist;の表示少なくね?っていうときあったりするなら、バージョンとかユーザぐらいは表示しといてもよいかもですね!

まぁ、運用者がこの辺に詳しい人だと、my.cnfにこんな感じで追加してくれるかもですね!

全サーバに入っていたら、カジュアルに全員のプロンプトが運用者の好みの表示になりますね!上書きなんてしちゃだめですよ!
また、「auto-rehash」を加えることで補完ができるようになりますね。素晴らしい!!

表示なげーよって場合

カジュアルにMySQL運用してると、1000テーブルとか普通にできてきますよね!「show tables;」なんてやったら、ずーーーーっとテーブル名返して、何も見えなかったなんてことはカジュアルに触ってる人なら毎日あることだと思います。

そういう人は、以下のように「~/.bashrc」に加えておくとよいですね。

alias mysql="mysql --pager='less -S'


まぁ、結果が短くてもページャー開いちゃうんでそこは愛嬌ですが、まぁ何もないよりはよいかもですね!LIKE句使ったほうが良いなんて気のせいですよ!

打つのめんでーよって場合

zshとかに慣れてくると、「SHOW DATABASES;」とか全部打つのが切なくなってくるんですよね。なので、「~/.inputrc」に以下のように追加しておきましょうね!

$if mysql
    “\C-xd”: “SHOW DATABASES;\n”
    “\C-xt”: “SHOW TABLES;\n”
$endif
alias mysql="mysql --pager='less -S'

引用:http://www.connect-i.co.jp/tipsblog/?p=25, mysqlでいちいちshow databasesとか打つのがめんどい→readlineのマクロで解決 - (ひ)メモ

readlineのマクロ使ってやることで、Ctrl+x押したあとにそれぞれのキーを押すと、必要なコマンド貼りつけてくれてカジュアルですよね!ってことでございます。ソースからインストールした人の場合は、readlineのオプションつけてくださいね!

こんな感じになりますよ!画像じゃ分からないですよね!なので試して下さい!

なんでviのキーマップ使えないのって場合

MySQLでもviライクに使いたくなるときありますよね。Vim充の人は当たり前ですよね!
そういうときは、以下のように「\~/.inputrc」に加えましょうね。

そうすると、escキー使うことで、Viライクニデキマスヨ!
まぁ、長いクエリでターミナル上から十字キー連打とかいやですもんね!

終わりに

カジュアルに戯れるって楽しいですね!ってことで、カジュアルに触れる方法を書いてみましたよ!
是非試してくださいね!!