MySQLコマンド集

mysqlのよく使うコマンドをまとめてみました。

環境関連

  • 文字コードの確認

    mysql> show variables like 'chara%';
    +--------------------------+----------------------------------+
    | Variable_name            | Value                            |
    +--------------------------+----------------------------------+
    | character_set_client     | ujis                             |
    | character_set_connection | ujis                             |
    | character_set_database   | ujis                             |
    | character_set_filesystem | binary                           |
    | character_set_results    | ujis                             |
    | character_set_server     | ujis                             |
    | character_set_system     | utf8                             |
    | character_sets_dir       | /usr/local/share/mysql/charsets/ |
    +--------------------------+----------------------------------+
    8 rows in set (0.00 sec)
  • 文字化け対策

    mysql> set character_set_results=utf8;

    データベースをutf8としている場合。

トランザクション関連

  • トランザクションの開始

    mysql> start transaction;
  • トランザクションのコミット

    mysql> commit;
  • トランザクションのロールバック

    mysql> rollback;
  • 自動コミットの確認

    mysql> show variables like 'autocommit';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | autocommit    | ON    |
    +---------------+-------+
    1 row in set (0.00 sec)

    ValueがONなら自動コミット中。OFFなら自動コミットされない。

    mysql> select @@autocommit;
    +--------------+
    | @@autocommit |
    +--------------+
    |            1 |
    +--------------+
    1 row in set (0.00 sec)

    @@autocommitが1なら自動コミット中。0なら自動コミットされない。

  • 自動コミットの設定

    mysql>> autocommit=0;

    セットする値が0なら自動コミット解除。1なら自動コミット化設定となる。この設定は設定したセッションの間だけ持続します。一度セッションを切断すると初期値に戻ります。

データーベース関連

  • データーベース一覧を表示

    mysql> show databases;
  • データーベースの切り替え

    mysql> use [database-name];

    [database-name]部分に、使いたいデータベース名を指定する。

テーブル関連

  • テーブル一覧を表示

    mysql> show tables;
  • テーブル構造を表示

    mysql> show columns from [table-name];
    mysql> desc [table-name];

    [table-name]にテーブル名を指定します。

  • テーブル全体をコピー

    mysql> create table [new-table] like [source-table];
    mysql> insert into [new-table] select * from [souce-table];

    [new-table]にコピー先テーブル名を指定。[source-table]にはコピー元のテーブル名を指定します。1行目でテーブル構造を、2行目でデータをコピーしています。1行目の[new-table]には存在しないテーブル名を指定すること。

  • SELECT文を使ったUPDATE

    mysql> UPDATE [table-a] a LEFT JOIN [table-b] b
    -> ON a.ID=b.ID
    -> SET a.content=b.content
    -> WHERE b.ID>100;
    [table-a]には更新される側のテーブル名を、[table-b]には反映させたいデータを持っているテーブル名を指定。

    mysql> desc [table-a]
    +--------------+---------------------+------+-----+---------+----------------+
    | Field        | Type                | Null | Key | Default | Extra          |
    +--------------+---------------------+------+-----+---------+----------------+
    | ID           | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment |
    | content      | longtext            | NO   |     | NULL    |                |
    +--------------+---------------------+------+-----+---------+----------------+
    mysql> desc [table-b]
    +--------------+---------------------+------+-----+---------+----------------+
    | Field        | Type                | Null | Key | Default | Extra          |
    +--------------+---------------------+------+-----+---------+----------------+
    | ID           | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment |
    | content      | longtext            | NO   |     | NULL    |                |
    +--------------+---------------------+------+-----+---------+----------------+