メモ。
mysqldump -u [ユーザー名] -p [データベース名] > [出力ファイルパス]
下記例。
mysqldump -u root -p hoge > /path/to/output.sql
メモ。
mysqldump -u [ユーザー名] -p [データベース名] > [出力ファイルパス]
下記例。
mysqldump -u root -p hoge > /path/to/output.sql
調べていたら神SQLを見つけたのでメモ。
サブクエリを用いる。
delete from `[table_name]` where id not in (select min_id from (select min(t1.id) as min_id from `[table_name]` as t1 group by t1.[duplicate_col]) as t2);
table_nameに対象のテーブル名を。
duplicate_colに重複レコードが確認できるカラム名を。
これで重複していた行は古いものを1件のみ残し、すべて削除される。
神すぎる。
めも。
例。
SELECT CONCAT_WS('-', col_1, col_2) as col_12 FROM table_name
上記のSQLは「col_1」と「col_2」の値を「-」で連結した結果がかえってくる。
CONCAT_WS()関数は、第1引数に連結文字列を、それ以降の引数(任意)に連結対象の文字列(またはカラム)を指定する。
上記の例は、関数の出力結果に「col_12」というカラム名をつけて取得している。
めも。
カラム作成時にbinary属性を与えてやればよい。
もしくは検索時、WHERE句を下記のように記述する。
where col = binary 'aAbBcCdD';
と言った感じ。
またカラム作成後でもbinary属性は付与してあげられるが、すでにprimary key属性が与えられている場合は、それを解除してからbinaryを指定してやる必要があるので注意。
めも。
TRUNCATE(num, 0);
numの部分に任意の少数を渡せば切り捨てた値を返してくれる。
第2引数を1にすれば少数第1位、2にすれば少数第2位という様に切り捨て処理を行ってくれる。
尚、テーブルを空にするTRUNCATE文と同じ綴りであるが、こちらは関数なので安心して使用してOK。
めも。
DESCRIBE table_name col_name
上記のSQLを叩くことで、そのテーブル内に指定のカラムが存在していればカラムの情報が返り、存在しなければ空が返される。
めも。
REPLACE()関数を用いる。
UPDATE table_name SET col_name = REPLACE(col_name, 'before', 'after');
上記のSQLは「table_name」テーブルの「col_name」カラムに「before」という値があれば、それを「after」に置換するという意味。
この場合WHERE句を指定していないので、すべてのレコードが対象となり置換される。
SQLだけで置換できちゃうのは便利だね。
めも。
mysql -h [ホスト名] -u [ユーザー名] -p [DB名]
加えてsqlを流し込みたい場合は下記の通り。
mysql -h [ホスト名] -u [ユーザー名] -p [DB名] < [SQLダンプファイル]