LoginSignup
15
15

More than 5 years have passed since last update.

【MySQL】超簡易リファレンス

Last updated at Posted at 2015-09-23

接続

$ mysql --help   # ヘルプを表示する
$ mysql --help | grep my.cnf   # 設定ファイルのパスを表示する
$ mysql --version   # バージョン情報を表示する
$ mysql -u user -p [database]   # データベースに接続する
mysql> exit   # データベースとの接続を切る

// 接続情報
mysql> \s
mysql> SHOW VARIABLES LIKE ‘%port%’;

ユーザー管理

mysql> SELECT host, user FROM mysql.user;
mysql> DELETE FROM mysql.user where password='';
mysql> DELETE FROM mysql.user where host='';
mysql> CREATE USER user_name IDENTIFIED BY 'password';
mysql> SET PASSWORD FOR user@host=password('new_password');

データベース操作

mysql> SHOW DATABASES;   -- データベースの一覧を表示する
mysql> USE db_name;   -- 作業するデータベースを指定する
mysql> CREATE DATABASE db_name;   -- データベースを新規作成する
mysql> DROP DATABASE db_name;   -- 指定したデータベースを削除する

// 特定のデータベースの作業権限を付与した新規ユーザーを作成する
mysql> grant all on db.table to user@host identified by 'password';

テーブル操作

mysql> CREATE TABLE IF NOT EXISTS table_name (
           id int,
           group_id int,
           name varchar(255),  -- varcharは可変長文字列
           email varchar(255),
           password char(32),  -- charは固定長文字列
           PRIMARY KEY (id),   -- 主キー制約
           CONSTRAINT FOREIGN KEY (group_id) REFERENCES ex_table (ex_column)   -- 参照整合性制約
       );

mysql> SHOW TABLES LIKE '%hoge%';   -- 名前に hoge を含むテーブルを表示する
mysql> SHOW CREATE TABLE table_name;   -- テーブルの定義を表示する
mysql> SHOW INDEX FROM table_name;   -- テーブルのインデックスを表示する
mysql> DESC table_name;   -- テーブルの定義を表示する

mysql> ALTER TABLE table_name   -- カラムを追加する
    -> ADD COLUMN new_column_name TINYINT UNSIGNED NOT NULL DEFAULT 0 AFTER existing_column_name;
mysql> ALTER TABLE table_name   -- カラムを削除する
    -> DROP COLUMN existing_column_name;
mysql> ALTER TABLE table_name   -- カラムの位置を変更する
    -> MODIFY COLUMN target_column_name INT DEFAULT 0 NOT NULL AFTER other_column_name;

mysql> DROP TABLE table_name;   -- テーブルを削除する
mysql> TRUNCATE TABLE table_name;   -- テーブルのレコードを全て削除する(定義情報は残る)

//  文字コードの変更
mysql> ALTER TABLE table_name charset=characer_code;
mysql> ALTER TABLE table_name convert to character set character_code;

CREATE文で宣言するカラムの制約

制約 意味
NOT NULL NULLを登録しようとするとエラー
UNIQUE ある列の組が一意でない場合はエラー
CHECK ある列が取りうる値を指定し、違反した場合はエラー

レコード操作

mysql> INSERT INTO table_name (column_1, column_2) VALUES (value_1, value_2)
    -> ON DUPLICATE KEY UPDATE column_a = value_a;   -- レコードを追加する(キーが重複した場合は更新する)

mysql> INSERT INTO table_name (column_1, column_2) VALUES (value_1, value_2)
    -> , (value_3, value_4), (value_5, value_6);   -- 複数レコードを一括で挿入する(バルク INSERT 文)

mysql> UPDATE table_name SET column_1 = value_1, column_2 = value_2 WHERE column_a = value_a;   -- レコードを更新する

mysql> DELETE FROM table_name WHERE column_name = value;   -- レコードを削除する

mysql> SELECT * FROM table_name LIMIT 50 OFFSET 5;   -- 最初の5件をスキップし、それ以降の50件を取得する
mysql> SELECT * FROM table_name LIMIT 5 \G;   -- \G で各カラムを縦に並べて出力する。カラムが多くて見にくい時に。

バックアップ

$ mysqldump -u user -h host database > ./file.sql   # 論理バックアップを作成
$ mysql -u user -h host database < ./file.sql   # 論理バックアップから復元

参考情報

15
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
15