MySQL vs. PostgreSQL

機能MySQLPostgreSQL
起動$ 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ダンプmysqldumppg_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~/.
show user listSELECT User, Host FROM mysql.user;\du

その他

$ psql -h localhost -p 5432 -U root -W root
$ create database xxx OWNER = admin TEMPLATE = template0 ENCODING = 'UTF8';

MySQL \Gに匹敵するもの

select * from users \gx

クオーテーションの違い

dbシングルクォーテーションダブルクォーテーションバッククォート
postgre文字列定数カラム名todo
mysql文字列定数文字列定数名カラム名

REFERENCES:

  • https://qiita.com/aosho235/items/c657e2fcd15fa0647471
  • https://serverfault.com/questions/34741/postgres-equivalent-to-mysqls-g