MySQLのデータベース一覧確認の方法についてまとめています。
データベース一覧の確認は、show databases
MySQLでデータベースの一覧を確認するSQLは、show databasesです。
mysql> show databases; +--------------------+ | Database | +--------------------+ | employees | | employees2 | | information_schema | | mysql | | performance_schema | | sys | +--------------------+
シノニム(エイリアス)として、show schemasでも同じ結果が表示されます。
mysql> show schemas; +--------------------+ | Database | +--------------------+ | employees | | employees2 | | information_schema | | mysql | | performance_schema | | sys | +--------------------+
likeでワイルドカード文字による、絞り込みも可能です。
mysql> show databases like 'emp%'; +-----------------+ | Database (emp%) | +-----------------+ | employees | | employees2 | +-----------------+
mysqlshowコマンドは、データベース、テーブル、カラム一覧が同じコマンドで表示できる
mysqlshowコマンドで、データベース一覧を表示するには以下のようにします。
$ mysqlshow -u root -p Enter password: +--------------------+ | Databases | +--------------------+ | employees | | employees2 | | information_schema | | mysql | | performance_schema | | sys | +--------------------+
mysqlshowでテーブル件数一覧表示
–countオプションを指定すると、データベースごとのテーブル数とデータのロウ数一覧が表示されます。
内部的にselect count(*)を使っていると思われるため、巨大なデータを保管しているテーブルがあると、データベース自体のパフォーマンスに影響を及ぼす恐れがあります。注意しましょう。
$ mysqlshow --count -u root -p Enter password: +--------------------+--------+--------------+ | Databases | Tables | Total Rows | +--------------------+--------+--------------+ | employees | 8 | 4519063 | | employees2 | 8 | 4519063 | | information_schema | 73 | 28980 | | mysql | 33 | 140834 | | performance_schema | 103 | 369292 | | sys | 101 | 4732 | +--------------------+--------+--------------+
データベース名指定で、テーブル一覧表示
データベース名を指定すると、対象データベースのテーブル一覧を表示します。
SQLで実現するなら、show tablesと同等です。
-tオプションで、テーブルタイプも表示します。
$ mysqlshow employees -t -u root -p Enter password: Database: employees +----------------------+------------+ | Tables | table_type | +----------------------+------------+ | current_dept_emp | VIEW | | departments | BASE TABLE | | dept_emp | BASE TABLE | | dept_emp_latest_date | VIEW | | dept_manager | BASE TABLE | | employees | BASE TABLE | | salaries | BASE TABLE | | titles | BASE TABLE | +----------------------+------------+
-iオプション指定で、テーブルの詳細つきで一覧表示を行います。
$ mysqlshow employees -i -u root -p Enter password: Database: employees +----------------------+--------+---------+------------+---------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+ | Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment | +----------------------+--------+---------+------------+---------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+ | current_dept_emp | | | | | | | | | | | 2020-01-17 05:27:16 | | | | | | VIEW | | departments | InnoDB | 10 | Dynamic | 9 | 1820 | 16384 | 0 | 16384 | 0 | | 2020-01-17 05:27:15 | | | utf8mb4_0900_ai_ci | | | | | dept_emp | InnoDB | 10 | Dynamic | 331143 | 36 | 12075008 | 0 | 5783552 | 4194304 | | 2020-01-17 05:27:15 | | | utf8mb4_0900_ai_ci | | | | | dept_emp_latest_date | | | | | | | | | | | 2020-01-17 05:27:16 | | | | | | VIEW | | dept_manager | InnoDB | 10 | Dynamic | 24 | 682 | 16384 | 0 | 16384 | 0 | | 2020-01-17 05:27:15 | | | utf8mb4_0900_ai_ci | | | | | employees | InnoDB | 10 | Dynamic | 299246 | 50 | 15220736 | 0 | 0 | 4194304 | | 2020-01-17 05:27:15 | | | utf8mb4_0900_ai_ci | | | | | salaries | InnoDB | 10 | Dynamic | 2838426 | 35 | 100270080 | 0 | 0 | 4194304 | | 2020-01-17 05:27:16 | | | utf8mb4_0900_ai_ci | | | | | titles | InnoDB | 10 | Dynamic | 442605 | 46 | 20512768 | 0 | 0 | 0 | | 2020-01-17 05:27:16 | | | utf8mb4_0900_ai_ci | | | | +----------------------+--------+---------+------------+---------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+
データベース名、テーブル指定でカラム一覧の情報を表示
データベース名とテーブル名を指定すると、カラム一覧を表示します。
SQLで実現するなら、desc テーブル名の結果と近いです。
-kオプションでキーの情報を合わせて表示します。
$ mysqlshow employees departments -k -u root -p Enter password: Database: employees Table: departments +-----------+-------------+--------------------+------+-----+---------+-------+---------------------------------+---------+ | Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment | +-----------+-------------+--------------------+------+-----+---------+-------+---------------------------------+---------+ | dept_no | char(4) | utf8mb4_0900_ai_ci | NO | PRI | | | select,insert,update,references | | | dept_name | varchar(40) | utf8mb4_0900_ai_ci | NO | UNI | | | select,insert,update,references | | +-----------+-------------+--------------------+------+-----+---------+-------+---------------------------------+---------+ +-------------+------------+-----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | Expression | +-------------+------------+-----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+ | departments | 0 | PRIMARY | 1 | dept_no | A | 9 | | | | BTREE | | | YES | | | departments | 0 | dept_name | 1 | dept_name | A | 9 | | | | BTREE | | | YES | | +-------------+------------+-----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
まとめ
- データベース一覧を表示するには、show databases
- mysqlshowコマンドでもデータベース一覧を表示可能
- mysqlshowコマンドは、同じコマンドでテーブル一覧、カラム一覧と付加情報を表示可能