ユニークインデックスを貼れるか確認(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;
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
データベース接続
$ psql -U ユーザ名 データベース名
(-h localhost -p 5432)
データベース一覧
# \l
データベース作成
# CREATE DATABASE データベース名;
データベース削除
# DROP DATABASE データベース名;
テーブル・シーケンス一覧
# \d
テーブル一覧
# \dt
テーブル定義確認
# \d テーブル名
CSVファイル出力
# \o ファイル名
# \a
# \f ','
# 出力したいSQL文
# \a
# \o
データベース接続
$ sqlite3 db/development.sqlite3
テーブル一覧
> .table
スキーマ確認
> .schema テーブル名(省略ですべて)
SELECTでカラム名表示
> .headers ON
> .mode column
> .mode tabs
> .mode list
> .mode csv
> .mode insert