下記SQLを実行。
1 |
delete from wp_comments where comment_approved = '0'; |
下記SQLを実行。
1 |
delete from wp_comments where comment_approved = '0'; |
知っとくと便利なので自分用にメモ。
1 2 3 4 5 6 |
update posts set status = case floor(rand() * 2) when 0 then 1 when 1 then 2 end |
※この例だと1 or 2がセットされる。when
、then
を増やしていけば複数の値に対応可能。
1 2 3 |
update posts set updatedAt = now() + interval (rand() * 365) day |
1 2 3 |
update posts set updatedAt = concat(date_format(date_add(date('2010-06-06'), interval (rand() * 365) day), '%Y-%m-%d'), ' ', cast(time(sec_to_time(ceil((rand() * 86400)))) as char)) |
※2010-06-06をスタートとした場合
1 2 3 |
update posts set title = substring(md5(rand()), 1, 32) |
1 2 3 |
update posts set title = substring(sha2(md5(rand()), 512), 1, 100) |
1 2 3 |
update posts set title = substring(concat(sha2(md5(rand()), 512), sha2(md5(rand()), 512), sha2(md5(rand()), 512), sha2(md5(rand()), 512), sha2(md5(rand()), 512)), 1, 500) |
※これ以上はconcat()をマンパワーで足していくくらいしか思い浮かばない。単に長さがほしいだけならrepeat()とかでもいいかも。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
insert into posts () values (); -- 1 行 insert into posts (id) select 0 from posts; -- 2 行 insert into posts (id) select 0 from posts; -- 4 行 insert into posts (id) select 0 from posts; -- 8 行 insert into posts (id) select 0 from posts; -- 16 行 insert into posts (id) select 0 from posts; -- 32 行 insert into posts (id) select 0 from posts; -- 64 行 insert into posts (id) select 0 from posts; -- 128 行 insert into posts (id) select 0 from posts; -- 256 行 insert into posts (id) select 0 from posts; -- 512 行 insert into posts (id) select 0 from posts; -- 1024 行 insert into posts (id) select 0 from posts; -- 2048 行 insert into posts (id) select 0 from posts; -- 4096 行 insert into posts (id) select 0 from posts; -- 8192 行 insert into posts (id) select 0 from posts; -- 16384 行 insert into posts (id) select 0 from posts; -- 32768 行 insert into posts (id) select 0 from posts; -- 65536 行 insert into posts (id) select 0 from posts; -- 131072 行 insert into posts (id) select 0 from posts; -- 262144 行 insert into posts (id) select 0 from posts; -- 524288 行 insert into posts (id) select 0 from posts; -- 1048576 行 |
※20行繰り返すところがポイント。
メモ。
1 |
show character set; |
こんな感じで取得される。
メモ。
例)文字コードutf8
、照合順序utf8_unicode_ci
で作成する場合。
1 |
create database db_name character set utf8 collate utf8_unicode_ci; |
mysqldump
コマンドを使う際、--ignore-table
オプションを用いると、dumpしたくないテーブルを指定することが出来る。
例)
1 |
mysqldump -u root -p db_name --ignore-table=db_name.hoge > dump.sql |
と言った感じ。
複数テーブルを除外したければ--ignore-table
オプションを複数回書いてあげればいい。
例)
1 |
mysqldump -u root -p db_name --ignore-table=db_name.hoge --ignore-table=db_name.fuga > dump.sql |
※この際テーブル名にデータベース名のプレフィックスを付けてやらないとダメなので注意されたし。
主にPHPMyAdminでの話。
group_concatの部分をこうしてやればいい。
1 |
CONVERT(GROUP_CONCAT(user_id) USING 'utf8') |
group by
句でグルーピングしたレコードに対して条件を指定したい場合はwhere
ではなくhaving
を用いる。
例)
1 2 3 4 5 6 7 8 9 |
select host, count(id) as cnt from hosts group by host having cnt < 10 |
と言った感じ。
CLI上でMySQLにログインしてselectするとテーブルレイアウトのような形で結果が帰ってくるが、カラム数が膨大なテーブルでこれをやるともはや見るに耐えない状態になる。
そういう時はクエリの最後に\G
を付けてやるとクエリ毎に分割されて見やすくなるのでオススメ。
例)
1 |
select * from information_schema.COLUMNS \G; |
これはかなり見やすい。