mysqlのメモ書きです。

■■■ シェルからの操作
>mysqldump
mysqlのダンプ(dump)取得
>mysql --help
mysqlのヘルプ。コマンド一覧表示。

>mysqladmin ping -uroot -p
Enter password: *********
mysqld is alive

■■■ mysqlログイン状態での操作
>\q:終了する
>help(\h):ヘルプ表示する
>clear(\c):途中まで書いたsqlを無効にする
>status(\s):mysqlサーバのステータス情報を表示する
>print(\p):現在のコマンドを表示する

desc t_book_info;
show columns from t_book_info;
show fields from t_book_info;
⇒テーブルのカラム情報を表示する。3つとも一緒。

■テーブル情報
mysql> show table status;
⇒テーブル一覧の情報を表示する。
mysql> show table status like 'hoge_info';
⇒hoge_infoテーブルの情報を表示する
mysql> show table status like 'hoge_info'\G
⇒\Gをけつに付けて縦表示にすると見やすい。項目数が多いときとか。

■テーブルのindexを調べる
> show keys from hoge_table;
> show index from inout_history;

ちなみにmysqlのindexは、昇順・降順を設定できるけど、すべて昇順で設定されているらしい・・・
refs:MySQLでの逆キーインデックスの挙動 ~desc(降順)で貼るインデックス~


■showコマンド
showコマンドを使った例をいくつか書いたけどほかにもいろいろある。
showコマンドの一覧を見たいときは「help(\h) show;」

refs:show構文を知ろう

■横縦変換
コマンドの最後に「\G」をつけと結果が縦に表示される。項目数が多いテーブルの情報を見るときに使える。
mysql> select * from memo_info\G

mysql> show table status like 'autotest';
+----------+--------+---------+------------+------+---------------
------------+-----------------+----------+----------------+-------
| Name | Engine | Version | Row_format | Rows | Avg_row_length
Check_time | Collation | Checksum | Create_options | Commen
+----------+--------+---------+------------+------+---------------
------------+-----------------+----------+----------------+-------
| autotest | InnoDB | 10 | Compact | 0 | 0
NULL | utf8_general_ci | NULL | |
+----------+--------+---------+------------+------+---------------
------------+-----------------+----------+----------------+-------
1 row in set (0.00 sec)

mysql> show table status like 'autotest'\G
*************************** 1. row ***************************
Name: autotest
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 0
Avg_row_length: 0
Data_length: 16384
Max_data_length: 0
Index_length: 16384
Data_free: 0
Auto_increment: 1
Create_time: 2013-06-12 21:12:37
Update_time: NULL
Check_time: NULL
Collation: utf8_general_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.00 sec)

■日時とか時刻とか
mysql> select version(), now(), current_date(), current_date, sysdate(), curdate();
+-----------+---------------------+----------------+--------------+---------------------+------------+
| version() | now() | current_date() | current_date | sysdate() | curdate() |
+-----------+---------------------+----------------+--------------+---------------------+------------+
| 5.6.11 | 2013-06-12 19:59:10 | 2013-06-12 | 2013-06-12 | 2013-06-12 19:59:10 | 2013-06-12 |
+-----------+---------------------+----------------+--------------+---------------------+------------+
1 row in set (0.00 sec)

・sysdate()はnow()のシノニム。
・current_date,current_data()はcurdate()のシノニム。

mysql> select current_date(), current_date()+0, sysdate(), sysdate()+0;
+----------------+------------------+---------------------+----------------+
| current_date() | current_date()+0 | sysdate() | sysdate()+0 |
+----------------+------------------+---------------------+----------------+
| 2013-06-12 | 20130612 | 2013-06-12 20:02:18 | 20130612200218 |
+----------------+------------------+---------------------+----------------+

・+0したら数字だけになる。

■ステータス系情報
>status; (\s)

>show status;
⇒show statusで表示できる情報は多い。で、LIKEが使える。
>select status LIKE 'Ssl%';

・サーバ変数を表示する。
> show variables;
⇒これもLIKEが使える。
> show variables LIKE '%version%';
+-------------------------+------------------------------+
| Variable_name | Value |
+-------------------------+------------------------------+
| innodb_version | 5.6.11 |
| protocol_version | 10 |
| slave_type_conversions | |
| version | 5.6.11 |
| version_comment | MySQL Community Server (GPL) |
| version_compile_machine | x86_64 |
| version_compile_os | Win64 |
+-------------------------+------------------------------+
7 rows in set (0.00 sec)




mysql> select current_user(), user(), database();
+----------------+----------------+------------+
| current_user() | user() | database() |
+----------------+----------------+------------+
| root@localhost | root@localhost | testdb |
+----------------+----------------+------------+
1 row in set (0.00 sec)

・実行中のプロセス一覧を表示する。
mysql> show processlist;
+----+------+-----------------+------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------------+------+---------+------+-------+------------------+
| 8 | root | localhost:53985 | NULL | Query | 0 | init | show processlist |
+----+------+-----------------+------+---------+------+-------+------------------+
1 row in set (0.00 sec)

■外部キー
外部キーの確認
>show create table hoge_table\G

外部キーの削除
alter table hoge_table drop foreign key hoge_table_ibfk_1;

■トランザクション
mysqlのトランザクションはデフォルトでオフ。
>start trancastionではじめられる。
コミットするときはcommit;、ロールバックするときはrollback;

■teeコマンド、pagerコマンド
・mysqlターミナルの結果をファイルに保存したい時は、teeで開始、noteeで終了する
・pager,systemコマンドも便利だけど、windows環境じゃ使えない。

refs
MySQLコマンドラインツールで使えるコマンド小ネタ
4.9.2. mysql(コマンドラインツール)

■ユーザ作成、削除と権限管理
⇒別記事にしたい
ユーザ管理・権限

■ロック
⇒別記事にしたい
MySQLのInnoDBにおける行ロック:トランザクション――共有モードと排他モード、デッドロックの問題

■サイト内
mysqldumpの取得
mysqlのテーブルエンジン(InnnoDB,MyISAM)
・mysql文字コード環境の調査方法
auto_increment(オートインクリメント)
mysqlのストアドプロシージャ、トリガ
mysqlキーワード(関数とか)
case文
truncate tableで外部キー制約エラー

■参考
mysql room
mysql5.1リファレンス(日本語版)
mysql5.6ReferenceMannual Including MySQL Cluster NDB 7.3 Reference Guide
・mysqlデータベースマニュアル基礎 for Windows,Linux入門(PDF