요즘
sql
로 테스트할 일이 잦은데, 이때마다 샘플 table, data 만드는 게
여간 귀찮은 게 아니더군요. 그래서 테스트DataSet
만드는 쿼리 자체를 여기에
기록해뒀다가 필요할 때마다 복사 + 붙여넣기하려고 합니다.
drop table if exists users cascade;
drop table if exists users_group;
create table users
(
user_id integer not null,
user_name varchar(100) not null,
group_code smallint,
constraint users_pk primary key (user_id)
);
create table users_group
(
users_group_id smallint not null,
group_name varchar(100) not null,
constraint users_group_pk primary key (users_group_id)
);
insert into users (user_id, user_name, group_code)
select id, concat('user-', id), floor((id - 1) / 1000) + 1 -- 1000 단위로 그룹핑
from generate_series(1, 50000) as t(id);
;
-- user_id : 1 ~ 1000 ==> group : 1
-- user_id : 1001 ~ 2000 ==> group : 2
-- user_id : 2001 ~ 3000 ==> group : 3
-- ...
-- user_id : 49000 ~ 50000 ==> group : 50
insert into users_group (users_group_id, group_name)
select id / 1000, concat('group-', id / 1000) -- 1000 단위로 그룹핑
from generate_series(1, 50000) as t(id)
group by id / 1000;
alter table users
add constraint users_foreign_constraint foreign key (group_code)
references users_group (users_group_id);