DBの調査をする時に、PostgreSQLとMySQLのコマンドの違いによく戸惑うので、今覚えてるものだけでもメモ。
接続とDBの確認
DBに接続する
PostgreSQL
$ psql -U ユーザ名 DB名
- パスワードの要否は自動的に判断されて、必要な時は入力が促される。
MySQL
$ mysql -u ユーザ名 -p ;
- パスワードの要否は自動的に判断されず、必要な時に
-p
がないと接続エラーとなる。
DBの確認
PostgreSQL(bashから)
$ psql -U ユーザ名 -l
PostgreSQL(ログイン後)
\l
MySQL
SHOW DATABASES;
スキーマの確認 (PostgreSQLのみ)
PostgreSQL(ログイン後)
\dn
テーブル定義関係
テーブル一覧を確認する
PostgreSQL
\d
MySQL
SHOW TABLES;
テーブル定義を確認する
PostgreSQL
\d table_name
MySQL
DESC table_name;
テーブル定義の完全な情報を確認する
PostgreSQL
$ pg_dump database_name -Uuser_name -s -t table_name
MySQL
SHOW CREATE TABLE table_name;
プロセス関係
動いているプロセス状況を確認する
PostgreSQL
SELECT * FROM pg_stat_activity;
MySQL
SHOW processlist;
SHOW full processlist; --実行されたSQLも確認。
実行中のプロセスを殺す
PostgreSQL
SELECT pg_cancel_backend(process_id);
MySQL
kill process_id;
その他
定義されたファンクション一覧を確認する
PostgreSQL
\df
MySQL
SHOW FUNCTION STATUS;
ファンクションの定義を確認する
PostgreSQL
SELECT prosrc FROM pg_proc WHERE proname = 'function_name';
MySQL
SHOW CREATE FUNCTION function_name;
SQLの実行計画を確認する
PostgreSQL
EXPLAIN ANALYZE sql;
MySQL
EXPLAIN sql;
余談だけど、MySQLのEXPLAINの見方は漢のコンピュータ道を読むのが一番理解しやすいと思う。