機能 | MySQL | PostgreSQL |
---|---|---|
起動 | $ mysql -p -h ホスト名 -P ポート番号 -u ユーザ名 DB名 |
$ psql -h ホスト名 -p ポート番号 -U ユーザ名 DB名 |
データベース一覧 | show databases; | \l |
データベース切替 | use DB名 \u DB名 |
\c DB名 |
テーブル一覧 | show tables; | \d、\dt、\d+、\dt+ |
テーブル定義確認 | desc テーブル名; | \d テーブル名 |
テーブルCREATE文確認 | show create table テーブル名 | pg_dump DB名 -U ユーザ名 -s -t テーブル名 |
インデックス一覧 | SHOW INDEX FROM tbl_name; | \d table_name |
行表示の切り替え | select * from t \G | \x select * from t; ※mysql同様、1回のクエリだけ\xしたい場合は select * from t \gx psql 9以前の場合はこちら |
SQLファイル実行 | \. | \i |
SQLダンプ | mysqldump | pg_dump |
TSVダンプ | mysqldump -u USER --password=PASS DATABASE_NAME TABLE_NAME -T /tmp | \copy テーブル名 to 'data.tsv' csv delimiter E'\t' header; または \copy (select * from テーブル名) to 'data.tsv' csv delimiter E'\t' header; |
TSVインポート | LOAD DATA LOCAL INFILE ファイル名 REPLACE INTO TABLE テーブル名 IGNORE 1 LINES; | copy テーブル名 from '/absolute_path/to/data.tsv' ( delimiter E'\t', format csv, header true ); |
SQL時間計測 | デフォルトで表示される | \timing on |
ログ出力開始 | \T log.txt | \o log.txt |
ログ出力終了 | \t | \o |
1回のクエリだけファイルに出力 | 不明 | SQLの末尾に\g FILENAMEをつける |
1回のクエリだけvimで表示 | 不明 | SQLの末尾に\g |vim -をつける |
バッファをエディタで編集 | SQLの末尾に \e をつける | SQLの末尾に \e をつける |
定義をコピーしてテーブル作成 | create table t2 like t1; | create table t2 (like t1); |
実行計画 | SQLの先頭にEXPLAINをつける | SQLの先頭にEXPLAINをつける |
接続先サーバ確認 | \s | \conninfo SELECT version(); |
接続を確認 | show processlist; | select * from pg_stat_activity; |
連番ID | カラム名 int auto_increment | カラム名 serial |
今日の日付 | curdate() | current_date |
現在時刻 | now() | now() |
ヘルプ | \h または \? | \h と \? (内容が異なる) |
設定ファイル | ~/.my.cnf | ~/.psqlrc |
information_schemaは両方に共通
information_schemaはSQL標準なので、どちらでも同じSQLが使える。
テーブル一覧を表示
SELECT table_catalog
,table_schema
,table_name
,table_type
FROM information_schema.tables;
カラム一覧を表示
SELECT table_schema
,table_name
,column_name
,data_type
,character_maximum_length
,numeric_precision
,column_default
FROM information_schema.columns
WHERE table_name = 't1'
ORDER BY table_name
,ordinal_position;
デフォルト接続先
PostgreSQL:環境変数で設定
export PGDATABASE=DB名
export PGHOST=ホスト
export PGPORT=ポート番号
export PGUSER=ユーザー名
export PGPASSWORD=パスワード
パスワードは~/.pgpassでも設定できる。
MySQL:~/.my.cnfで設定
[client]
database=DB名
user=ユーザー名
password=パスワード
その他
xo/usql: Universal command-line interface for SQL databases
を使うとpsqlとほぼ同じインターフェイスで PostgreSQL, MySQL, Oracle Database, SQLite3, Microsoft SQL Serverを含む多数のデータベースにクエリできるので、幸せになれるかも?