機能 | 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; |
SQLファイル実行 | \. | \i |
SQLダンプ | mysqldump | pg_dump |
TSVダンプ | mysqldump -u USER --password=PASS DATABASE_NAME TABLE_NAME -T /tmp | ??? |
TSVインポート | LOAD DATA LOCAL INFILE '\$FILE_NAME' REPLACE INTO TABLE \$TABLE_NAME IGNORE 1 LINES; | copy table_name from '/absolute_path/to/data.tsv' ( delimiter ' ', format csv, header true ); ※1 |
SQL時間計測 | デフォルトで表示される | \timing on |
ログ出力開始 | \T log.txt | \o log.txt |
ログ出力終了 | \t | \o |
定義をコピーしてテーブル作成 | create table t2 like t1; | create table t2 (like t1); |
実行計画 | SQLの先頭にEXPLAINをつける | SQLの先頭にEXPLAINをつける |
接続先サーバ確認 | \s | \conninfo |
接続を確認 | show processlist; | select * from pg_stat_activity; |
連番ID | カラム名 int auto_increment | カラム名 serial |
今日の日付 | curdate() | current_date |
現在時刻 | now() | now() |
ヘルプ | \h または \? | \? |
設定ファイル | ~/.my.cnf | ~/.psqlrc |
※1 TSVインポートはMySQL, PostgreSQLとも面倒だから、TSVからSQLに変換するスクリプトを自作するのがベスト。
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=パスワード