とりあえず、SQL 描きたいとき。とりあえず、レコードがたくさんあるテーブルを欲しくなります。そんなときに SQL だけでサクッと環境をつくりたくなります。
そんな記事です。
テーブルを作る。
create_users_table.sql
create table users (
id int not null auto_increment,
name varchar(255),
primary key (id)
);
レコードを while で insert する
insert_users.sql
delimiter //
create procedure insert_users()
begin
declare i int default 0;
while i < 10 do
insert into users (name) values (concat('name', i));
set i = i + 1;
end while;
end
//
delimiter ;
call insert_users;
procedure については この記事(ストアドプロシージャの基本的ななにか) が、とてもわかりやすいです!
while 構文はこちらの ドキュメント(13.6.5.8 WHILE 構文) を見れば一発でわかります。
入ったデータを見てみる
mysql> select * from users;
+----+-------+
| id | name |
+----+-------+
| 1 | name0 |
| 2 | name1 |
| 3 | name2 |
| 4 | name3 |
| 5 | name4 |
| 6 | name5 |
| 7 | name6 |
| 8 | name7 |
| 9 | name8 |
| 10 | name9 |
+----+-------+
以上です。簡単でした。
おまけ ~ procedure の引数でレコード数を渡せるようにする ~
insert_users_v2.sql
delimiter //
create procedure insert_users(in x int) -- 引数
begin
declare i int default 0;
while i < x do -- 引数使う
insert into users (name) values (concat('name', i));
set i = i + 1;
end while;
end
//
delimiter ;
call insert_users(100); -- ここでレコード件数を指定
では、これらを使って docker 環境でいろいろ SQL 叩いて行きたいとおもいます。