작성할 때 생소했던 SQL 기록!
insert into tbl_board (title, content, writer) (select title, content, writer from tbl_board);
- 현재 tbl_board 테이블에서 꺼낸 데이터를 다시 tbl_board 테이블에 넣는 방식
- 여러 번 실행하면 현재 데이터의 배수만큼 들어가므로 100만건의 데이터도 금방 만들 수 있다.
select * from tbl_board whrer bno > 0 order by bno desc limit 0, 10'
- 10개씩 데이터를 출력하는 경우
- 1 page = limit 0, 10
- 2 page = limit 10, 10
- 20개씩 데이터를 출력하는 경우
- 1 page = limit 0, 20
- 2 page = limit 20, 20
alter table tbl_reply add constraint fk_board foreign key (bno) references tbl_board (bno);
형식 : alter table (테이블명) add constraint (외래키 별칭) foreign key (외래키 줄 컬럼명) references (부모 테이블명) (참조할 테이블명) (옵션)
옵션은 참조당하는 부모 테이블의 컬럼이 삭제되었을 때 외래키가 어떻게 동작할 것인지에 대한 옵션
- on delete restrict - 참조하는 부모테이블의 컬럼이 갱신/삭제 시도 -> 갱신/삭제 불가
- on delete cascade - 부모테이블 컬럼 삭제 -> 자식테이블 컬럼 모두 삭제
- on delete set null - 부모테이블 컬럼 삭제 -> 자식테이블 컬럼이 모두 NULL 된다.
- on delete no action - 부모테이블 컬럼 삭제 -> 무시
- on delete set default - 부모테이블 컬럼 삭제 -> 지정된 값으로 대체
<select id="listWithOption" parameterType="kr.cloudcash.jetsurf.model.Product" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
, t.prod_option_json
from t_product p
, (select t."prodSeq" prod_seq, array_to_json(array_agg(row_to_json(t))) prod_option_json
from (select po.prod_seq "prodSeq", po.opt_seq "optSeq", po.opt_name "optName", po.prod_opt_img "prodOptImg", po.color "color"
from t_prod_opt po
, t_product p
where po.prod_seq = p.prod_seq
and po.sale_cond = '01'
and p.sale_cond = '01'
) t
group by prod_seq
) t
where p.prod_seq = t.prod_seq;
</select>