1. tamano
Changes in tags
Changes in body
Source | HTML | Preview
@@ -1,114 +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
-あれ?どうだっけ?
+$ pg_dump database_name -Uuser_name -s -t table_name
```
```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)を読むのが一番理解しやすいと思う。