便利なSQL

ユニークインデックスを貼れるか確認(0件ならOK)
> SELECT カラム名 FROM テーブル名
  GROUP BY カラム名 HAVING COUNT(*) > 1;

複合の場合は対象カラムを並べればOK
> SELECT カラム名1, カラム名2 FROM テーブル名
  GROUP BY カラム名1, カラム名2 HAVING COUNT(*) > 1;

外部キー(foreign_key)を貼れるか確認(0件ならOK)
> SELECT カラム名 FROM テーブル名
  LEFT JOIN 対象テーブル名 ON テーブル名.カラム名 = 対象テーブル名.対象カラム名
  WHERE 対象テーブル名.対象カラム名 IS NULL;

MySQL

DBダンプ
$ file=データベース名_`date +"%Y%m%d%H%M%S"`.sql
$ mysqldump -q --single-transaction データベース名 > $file

DBリストア
$ ll $file
$ mysql -u ユーザー名 -p データベース名 < $file

データベース接続
$ mysql -u ユーザー名 -p データベース名
(-h localhost -P 3306)

データベース切り替え
> USE データベース名;

データベース一覧
> SHOW DATABASES;
データベース作成
> CREATE DATABASE データベース名;
データベース削除
> DROP DATABASE データベース名;

ユーザー作成
> CREATE USER 'ユーザー名'@'%' IDENTIFIED BY 'パスワード';
> GRANT ALL PRIVILEGES ON データベース名.* TO 'ユーザー名'@'%';

テーブル一覧
> SHOW TABLES;
テーブル定義確認
> SHOW CREATE TABLE テーブル名\G

PostgreSQL

データベース接続
$ psql -U ユーザ名 データベース名
(-h localhost -p 5432)

データベース一覧
# \l
データベース作成
# CREATE DATABASE データベース名;
データベース削除
# DROP DATABASE データベース名;

テーブル・シーケンス一覧
# \d
テーブル一覧
# \dt
テーブル定義確認
# \d テーブル名

CSVファイル出力
# \o ファイル名
# \a
# \f ','
# 出力したいSQL文
# \a
# \o

SQLite3

データベース接続
$ sqlite3 db/development.sqlite3

テーブル一覧
> .table

スキーマ確認
> .schema テーブル名(省略ですべて)

SELECTでカラム名表示
> .headers ON

> .mode column
> .mode tabs
> .mode list
> .mode csv
> .mode insert