LoginSignup
616
498

MySQLとPostgreSQLコマンド比較表

Last updated at Posted at 2015-08-03
機能 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を含む多数のデータベースにクエリできるので、幸せになれるかも?

616
498
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
616
498