ぺーぺーSEのブログ

備忘録・メモ用サイト。

MySQLの使い方めも

MySQLの基本的な使い方

MySQLへ接続。

mysql -h [ホスト名、FQDN] -u [ユーザ名] -p

上記コマンドの後パスワードを要求される。
晴れて接続完了すると下記が表示される。

mysql>

パスワードを要求されるのが嫌な場合は下記のように記述する。

mysql -h [ホスト名、FQDN] -u [ユーザ名] -p[パスワード]

「-p」とパスワードの間にスペースを入れないのがポイント。
データベースの一覧を表示してみる。

mysql> show databases;

「;」をつけるのがポイント。
MySQLは「;」を見て、命令の終わりを判断してるみたい。
なので下記のような感じでもOK。

mysql> show databases
    -> ;

データベースの作り方は下記。

mysql> create database [データベース名];

データベースの一覧から接続したいデータベース(HOGE_DBとする)を選択して接続する。

mysql> use HOGE_DB;

「Database changed」と表示されて接続しているデータベースが切り替わる。
現在選択中のデータベースを表示する方法は下記。

mysql> select database();

MySQLに接続する際にデータベースまで指定したい場合は下記。

mysql -h [ホスト名、FQDN] -u [ユーザ名] -p[パスワード] [データベース名]

接続したデータベースに含まれるテーブルを表示してみる。

mysql> show tables;

テーブルの一覧からあるテーブル(HOGE_TABLEとする)のカラム定義を表示してみる。

mysql> desc HOGE_TABLE;

以降は普通にSQL投げて使う。
最後に下記で切断。

mysql> quit;

もしくは

mysql> \q

MySQL固有(?)の使い方

データのロード方法

普通にinsertするのもいいが、一気にデータを入れたい場合の方法。
hoge.txtに記述した内容をロードする場合のコマンドは下記。

mysql> load data local infile "hoge.txt" into table [テーブル名];

区切り文字は「タブ」、改行は「LF」である必要がある。

バッチ形式でMySQLを実行

ここまでの説明は対話形式でSQLを発行するものであった。
バッチ形式とは、予めファイルに実行したいSQLを記述しておき、一気に実行する方法。
SQLを記述したファイル名を「batch-file」とすると下記にようになる。

mysql < batch-file

# 特殊文字等でエラーが出る場合の回避コマンド
mysql -e "source batch-file"

# ホストやユーザ等を指定する場合のコマンド
mysql -h host -u user -p < batch-file

MySQLへログオンした後でも実行可能。

mysql> source batch-file;

AUTO_INCREMENT

テーブル作成の際にカラム定義にくっつけると自動でカウントアップした値を挿入してくれる。
http://dev.mysql.com/doc//refman/4.1/ja/example-auto-increment.html

各種値の確認方法

MySQLでは「show構文」を使うことで各種値の参照が可能である。
http://dev.mysql.com/doc/refman/5.1/ja/show.html

下記に代表例を挙げる。

show [global] status

サーバ ステータス情報を提供。
各種メトリクスを記録している。
global修飾子を利用すると、show statusはMySQLへの全ての接続のステータス値を表示します。

mysql> show staus;
+--------------------------+------------+
| Variable_name            | Value      |
+--------------------------+------------+
| Aborted_clients          | 0          |
| Aborted_connects         | 0          |
| Bytes_received           | 155372598  |
| Bytes_sent               | 1176560426 |
| Connections              | 30023      |
| Created_tmp_disk_tables  | 0          |
| Created_tmp_tables       | 8340       |
| Created_tmp_files        | 60         |
...
| Open_tables              | 1          |
| Open_files               | 2          |
| Open_streams             | 0          |
| Opened_tables            | 44600      |
| Questions                | 2026873    |
...
| Table_locks_immediate    | 1920382    |
| Table_locks_waited       | 0          |
| Threads_cached           | 0          |
| Threads_created          | 30022      |
| Threads_connected        | 1          |
| Threads_running          | 1          |
| Uptime                   | 80380      |
+--------------------------+------------+

like句等を使用することで特定の値のみ取得可能。

mysql> show global status like '%conn%';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| Aborted_connects         | 0     |
| Connections              | 1042  |
| Max_used_connections     | 31    |
| Ssl_client_connects      | 0     |
| Ssl_connect_renegotiates | 0     |
| Ssl_finished_connects    | 0     |
| Threads_connected        | 12    |
+--------------------------+-------+

マニュアル
http://dev.mysql.com/doc/refman/5.1/ja/show-status.html
http://dev.mysql.com/doc/refman/5.1/ja/server-status-variables.html

show [global] variables

MySQLシステム変数の値を表示する。
mysqladmin variablesコマンドを利用してこの情報を得る事もできる。
global修飾子を利用すると、show variablesはMySQLへの新しい接続に利用される値を表示する。
もしデフォルトのシステム変数が不適切であれば、mysqldがスタートした時にコマンド オプションを利用してそれらを設定する事ができ、またsetステートメントを利用してほとんどの物をランタイムに変更でる。

mysql> show variables;
+---------------------------------+---------------------------+
| Variable_name                   | Value                     |
+---------------------------------+---------------------------+
| auto_increment_increment        | 1                         |
| auto_increment_offset           | 1                         |
| automatic_sp_privileges         | ON                        |
| back_log                        | 50                        |
| basedir                         | /home/jon/bin/mysql-5.1/  |
| binlog_cache_size               | 32768                     |
| bulk_insert_buffer_size         | 8388608                   |
| character_set_client            | latin1                    |
| character_set_connection        | latin1                    |
...
| max_user_connections            | 0                         |
| max_write_lock_count            | 4294967295                |
| multi_range_count               | 256                       |
| myisam_data_pointer_size        | 6                         |
| myisam_max_sort_file_size       | 2147483647                |
| myisam_recover_options          | OFF                       |
| myisam_repair_threads           | 1                         |
| myisam_sort_buffer_size         | 8388608                   |
| ndb_autoincrement_prefetch_sz   | 32                        |
| ndb_cache_check_time            | 0                         |
| ndb_force_send                  | ON                        |
...
| time_zone                       | SYSTEM                    |
| timed_mutexes                   | OFF                       |
| tmp_table_size                  | 33554432                  |
| tmpdir                          |                           |
| transaction_alloc_block_size    | 8192                      |
| transaction_prealloc_size       | 4096                      |
| tx_isolation                    | REPEATABLE-READ           |
| updatable_views_with_limit      | YES                       |
| version                         | 5.1.6-alpha-log           |
| version_comment                 | Source distribution       |
| version_compile_machine         | i686                      |
| version_compile_os              | suse-linux                |
| wait_timeout                    | 28800                     |
+---------------------------------+---------------------------+

show status同様、like句等を使用することができる。

mysql> show global variables like '%conn%';
+--------------------------+-----------------+
| Variable_name            | Value           |
+--------------------------+-----------------+
| character_set_connection | utf8            |
| collation_connection     | utf8_general_ci |
| connect_timeout          | 10              |
| init_connect             |                 |
| max_connect_errors       | 999999999       |
| max_connections          | 247             |
| max_user_connections     | 0               |
+--------------------------+-----------------+

マニュアル
http://dev.mysql.com/doc/refman/5.1/ja/show-variables.html
http://dev.mysql.com/doc/refman/5.1/ja/server-parameters.html

MySQL 5.6 パラメータ検討会
http://d.hatena.ne.jp/sh2/20130806

つぶやき

4章以降はまた見ておくか。。。
http://dev.mysql.com/doc/refman/5.1/ja/index.html

MySQLを勉強するときはここがよさそう。
http://www.oracle.com/technetwork/jp/ondemand/database/mysql/index.html