1. tamano

    Posted

    tamano
Changes in title
+PostgreSQLとMySQLで、僕がよく使うシステムコマンドのメモ
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,114 @@
+DBの調査をする時に、PostgreSQLとMySQLのコマンドの違いによく戸惑うので、今覚えてるものだけでもメモ。
+
+# 接続とDBの確認
+## DBに接続する
+
+```bash:PostgreSQL
+$ psql -U ユーザ名 DB名
+```
+- パスワードの要否は自動的に判断されて、必要な時は入力が促される。
+
+```bash:MySQL
+$ mysql -u ユーザ名 -p ;
+```
+- パスワードの要否は自動的に判断されず、必要な時に`-p`がないと接続エラーとなる。
+
+## DBの確認
+
+```bash:PostgreSQL(bashから)
+$ psql -U ユーザ名 -l
+```
+
+```dummy:PostgreSQL(ログイン後)
+\dn
+```
+
+```sql:MySQL
+SHOW DATABASES;
+```
+
+# テーブル定義関係
+## テーブル一覧を確認する
+
+```dummy:PostgreSQL
+\d
+```
+
+```sql:MySQL
+SHOW TABLES;
+```
+
+## テーブル定義を確認する
+
+```dummy:PostgreSQL
+\d table_name
+```
+
+```sql:MySQL
+DESC table_name;
+```
+
+## テーブル定義の完全な情報を確認する
+
+```dummy:PostgreSQL
+あれ?どうだっけ?
+```
+
+```sql:MySQL
+SHOW CREATE TABLE table_name;
+```
+
+# プロセス関係
+## 動いているプロセス状況を確認する
+
+```sql:PostgreSQL
+SELECT * FROM pg_stat_activity;
+```
+
+```sql:MySQL
+SHOW processlist;
+SHOW full processlist; --実行されたSQLも確認。
+```
+
+## 実行中のプロセスを殺す
+
+```sql:PostgreSQL
+SELECT pg_cancel_backend(process_id);
+```
+
+```sql:MySQL
+kill process_id;
+```
+
+# その他
+
+## 定義されたファンクション一覧を確認する
+
+```dummy:PostgreSQL
+\df
+```
+
+```sql:MySQL
+SHOW FUNCTION STATUS;
+```
+
+## ファンクションの定義を確認する
+
+```sql:PostgreSQL
+SELECT prosrc FROM pg_proc WHERE proname = 'function_name';
+```
+
+```sql:MySQL
+SHOW CREATE FUNCTION function_name;
+```
+
+## SQLの実行計画を確認する
+
+```sql:PostgreSQL
+EXPLAIN ANALYZE sql;
+```
+
+```sql:MySQL
+EXPLAIN sql;
+```
+余談だけど、MySQLのEXPLAINの見方は[漢のコンピュータ道](http://nippondanji.blogspot.jp/2009/03/mysqlexplain.html)を読むのが一番理解しやすいと思う。