【MySQL】コマンドラインで最初に覚えたほうがいいと思うことまとめ
はじめに
わりとphpMyAdmin等のツールを使ってる人や職場は多いのかなと思います。僕がいた職場でもそういうところけっこう多かったです。
けど現場によってはそんなツールは断固として使わない!ていうことも多いと思います。そんなときはコマンドラインでの操作になれてないと最初少し戸惑うこともあるかと思われます。
とはいえ、所詮SQL実行するだけなので慣れかとは思いますが、僕が普段操作しててこれくらい覚えておけばとりあえず開発で作業するくらいでは困らないかなと思う事をメモしておきます
接続用のシェルを用意する
mysql -uユーザ名 -pパスワード db名
これをコピっておけばそれをはりつければいいだけなんですけど、、、
~/bin以下に適当なスクリプトをおいておけばいつでも起動できます。微々たることではありますが
~/bin/mysql_connect.sh
mysql -uUSER -pPASSWORD DBNAME
みたいな感じで用意しておけば毎回アカウントやパスワードを入力する手間も省けるのでいいんじゃないかなぁと思われます
以下、このファイルを用意した前提とします
最低限のカーソル移動を覚える
bashやらの話になってしまうのかもしれないのですが、Linux環境で利用されることが多いと思われるMySQL
以下のカーソル移動を覚えておくだけでも作業負荷軽減に貢献できるのではないかなぁと思ってます
> Ctrl + a
行頭に移動
> Ctrl + e
行末に移動
> Ctrl + f
1文字前へ移動
> Ctrl + b
1文字後ろへ移動
長いSQLとか編集するとき使えると思われます
履歴表示
> Ctrl + p(またはテンキーの上)
おすごとに1つ前に実行したコマンドが表示されます。便利です
¥G
select * from sample ¥G;
のように文末に「¥G」をつけると、結果が劇的に見やすくなります。
テーブル内容確認
desc テーブル名
mysql> desc sample; +-------------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+----------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(64) | NO | MUL | NULL | | +-------------+----------+------+-----+---------+----------------+
show index from テーブル名;
mysql> show index from sample; +----------------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | +----------------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | sample | 0 | PRIMARY | 1 | id | A | 100 | NULL | NULL | | BTREE | | | +----------------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
show create table テーブル名;
mysql> show create table sample\G; *************************** 1. row *************************** Table: sample Create Table: CREATE TABLE `sample` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(64) NOT NULL, PRIMARY KEY (`id`), ) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8
リダイレクトで実行
input.sql
insert into sample (id, name) values(1, "hoge");
こんな感じでSQLだけ記述したファイルを用意します
で、以下のコマンドを実行すれば簡単にSQLが実行できます(mysql_connectは上で書きましたが自前のコマンドです)
mysql_connect < input.sql
画面にコピペだとファイルが大きいときとかは特にこっちのほうが楽だと思います
リダイレクトでファイル出力
input.sql
select id, name from sample;
こんな感じでSQLのみ記述したファイルを用意して、以下のコマンドを実行すればTSV形式(タブ区切り)のファイルが簡単に作れます。
便利です
mysql_connect < input.sql > output.sql
トランザクションをつけるクセをつける
updateやdelete文でwhere句を間違えたりつけ忘れると大問題です
更新系のSQLを実行するときはトランザクションでくくるクセにするといいと思います
// トランザクション開始 begin; // 更新系SQL実行 // SELECT文で更新後のデータを確認 // 問題なければコミット commit;
ページャーを使う
SELECT文を実行してその結果が大量だと結果がどんどん流れて内容を確認するのには不便です。
// 出力先をlessコマンドに pager less -S; // 通常に戻したければ nopager;
ふだんから使ってる人からしたら当たりまえのことばかりだとは思うのですが、自分が普段つかってるのはこれくらいかな。
以上です