はじめに
MySQLでよく使う管理系コマンドについて学習したことを簡単にまとめます。
検証に使用した環境
DB:MySQL8.0
諸注意
MySQLにはスキーマはない
MySQLには、他のデータベースのようにスキーマはなく、データベースがスキーマと同じ位置付けになります。
データベースの操作
データベースに接続する
shell> mysql -h ホスト -u ユーザ名 -p
Enter password:
※MySQLが稼働しているホスト上で実行する場合、ホストは省略できます
データベースとの接続を切断する
exit、quitで接続を切ることができます。
UNIX系であれば「ctrl + D」でも可能です。
mysql> exit
Bye
コマンドラインから直接SQLを実行する場合
mysql> mysql -u ユーザ名 -pパスワード DB名 -e'show databases;'
※-pにスペース無くパスワードを付与するとコマンド内にパスワードを入れ込めます。(警告あり)
例)
sh-4.2# mysql -umysql -pPassword@1 mysql -e'show databases;'
mysql: [Warning] Using a password on the command line interface can be insecure.
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
データベースを作成する
データベース名は64文字まで
日本語も使用出来ますが、半角の英数字の大・小文字と「_」を使用する方が良い
mysql> create database オプション データベース名 データベースの仕様オプション;
データベースの定義を変更する
mysql> alter database データベース名 データベースの仕様オプション;
仕様オプションの例
文字セット・文字照合
character set=utf8
データベースを削除する
mysql> drop database オプション データベース名;
オプション例
IF EXISTS
データベースが存在しなくてもエラーにならなくなります。
データベースを一覧する
mysql> show databases;
操作するデータベースを指定する
mysql> use データベース名;
現在使用しているデータベースを表示する
mysql> SELECT database();
+------------+
| database() |
+------------+
| mysql |
+------------+
1 row in set (0.00 sec)
テーブルの操作
テーブルを作成する
mysql> create table オプション テーブル名 (列定義, ...) テーブルオプション;
列定義
列名 データ型 列オプション
列オプション例
default
データを登録した時、対象の列の値が未指定の場合のデフォルト値を指定します。
auto_increment
自動でカウントアップを指定します。
unique
列内で重複する値を許容しなくなります。
※主キーとは別
primary key
対象列を主キーとて扱います。
not null
nullを許容しなくなります。
オプション例
IF NOT EXISTS
テーブルが存在してもエラーにならなくなります。
テーブルオプション
ストレージエンジンや行フォーマット、暗号の有無を指定出来ます。
テーブル定義を変更する
mysql> alter table テーブル名 操作 操作内容;
列を追加する
mysql> alter table テーブル名 add 追加列名 列定義;
mysql> # 例
mysql> alter table hogetable add col_hoge varchar(10);
既存列の型を変更する
mysql> alter table テーブル名 change 列名 列定義;
mysql> # 例
mysql> alter table hogetable change col_hoge col_hoge int;
既存列に列オプションを追加する
mysql> alter table テーブル名 alter 列名 set 列オプション;
mysql> # 例
mysql> alter table hogetable alter col_hoge set default '';
既存列の列名を変更する
注意として、列定義であるデータ型とオプションを全て指定する必要があります。
mysql> alter table テーブル名 change 現列名 新列名 列定義;
mysql> # 例
mysql> alter table hogetable change col_hoge_old col_hoge_new varchar(10) default '';
列を削除する
mysql> alter table テーブル名 drop 列名;
テーブル名を変更する
mysql> alter table 旧テーブル名 rename to 新テーブル名;
テーブルを削除する
mysql> drop table オプション テーブル名;
オプション
IF EXISTS
テーブルが存在しなくてもエラーにならなくなります。
truncate
truncate tbl_name;
テーブルを一覧する
mysql> show tables;
テーブルの列定義を確認する
mysql> describe テーブル名;
参考文献