DB/오라클 SQL문

26. Join & Foreign key 복습 | 부모테이블 | 자식테이블

DEV-HJ 2022. 2. 24. 11:21
반응형

--Join & Foreign key 복습
create table board (bno number(3) CONSTRAINT board_pk_bno primary key,
writer varchar2(30), 
subject varchar2(50),
writeday date);

--insert 
insert into board values (seq_sawon.nextval, '딸기치즈', '안녕 오늘춥네', sysdate);
insert into board values (seq_sawon.nextval, '김탱구리', '오늘 보자구', sysdate);
insert into board values (seq_sawon.nextval, '임탱구리', '오늘 왜이래', sysdate);
insert into board values (seq_sawon.nextval, '정어니', '점심 어디서 먹을래?', sysdate);
insert into board values (seq_sawon.nextval, '강동원', '오늘 과제를요~', sysdate);
commit;

--answer 라는 테이블을 생성...bno는 board의 bno를 외부키로 설정
--부모테이블의 글을 지우면 그글에 달린 댓글은 자동으로 설정되도록 설정
create table answer(num number(5) CONSTRAINT answer_pk_num primary key,
bno number(3) CONSTRAINT answer_fk_bno REFERENCES board (bno) on delete cascade, 
nickname varchar2(20), 
content varchar2(50) );

--원하는 글번호에 댓글추가 하기
insert into answer values (seq_sawon.nextval, 38, '지니', '나 댓글 1번이야');
insert into answer values (seq_sawon.nextval, 38, '흥시기', '나 댓글 2번이야ㅠㅠ');
insert into answer values (seq_sawon.nextval, 21, '오늘은왠지', '나 이번주 어디갈거야');
insert into answer values (seq_sawon.nextval, 22, '써니', '좋아좋아');
insert into answer values (seq_sawon.nextval, 20, '후니', '3일절 만나자');
insert into answer values (seq_sawon.nextval, 20, '늘졸린아이', '야 이글재밋다');

commit;

--join
--bno(글번호), writer(작성자), subject(작성자글, 제목),nickname(댓글단사람), content(댓글내용), writeday (원글작성날짜)
select b.bno 글번호, b.writer 작성자, b.subject 작성자글, a.nickname 댓글단사람, a.content 댓글내용, b.writeday 원글작성날짜
from board b, answer a
where b.bno=a.bno;

--원글 14번 삭제후.....answer의 14번에 달았던 댓글 사라지는지 확인
delete from board where bno=20;

select * from answer;

--연습 끝난 테이블 삭제
--board 먼저
drop table board; --외래 키에 의해 참조되는 고유/기본 키가 테이블에 있습니다
--자식 테이블 먼저삭제
drop table answer; --삭제성공
--다시 부모테이블
drop table board;--삭제성공

 

--어제 테이블을 지운다면 이런순서
--drop table cart1;
--drop table cart2;
--drop table shop;


반응형