PostgreSQLとMySQLで、僕がよく使うシステムコマンドのメモ

More than 1 year has passed since last update.

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の見方は漢のコンピュータ道を読むのが一番理解しやすいと思う。