0922

ezzange·2022년 9월 22일
0

oracle

목록 보기
4/5

select from board;
select
from member;

--물리적인 테이블 요소에서 pk----fk의 관계----
--테이블을 여러개 만들어지는 것을 다라고 설정하면
--1 : 1 일 대 일 관계
--1 : N 일 대 다 관계
--M : N 다 대 다 관계

--+Foreign Key를 가지고 있는 테이블은 다 테이블이다
--+이름은 중복(동명이인)이 존재하기 때문에 닉네임이나 이메일을 이용한다

select b.bno , b.title, b.read_count, m.email, b.created_date
from board b, member m;

select b.bno , b.title, b.read_count, m.email, b.created_date,b.mno b_mno_fk ,m.mno m_mno_fk
from board b, member m
where b.mno=m.mno
order by bno;

select bno ,title, read_count, email, b.created_date
from board b join member
using (mno)--양쪽의 컬럼명이 일치하는 경우 사용가능 유징이 자동으로 식별자처리해줌
order by bno;

select b.bno, b.title, b.read_count, email, created_date, mno
from board b natural join member--양쪽 테이블의 같은 이름의 컬럼이 존재하면 모두 AND 동등조건으로
order by bno;--조인조건을 쓰지 않고 내부적으로 자동으로 처리

select bno ,title, read_count, email, b.created_date
from board b LEFT join member m --OUTER는 의미 없음 LEFT 혹은 right
on b.mno = m.mno
order by bno;

select bno ,title, read_count, email, b.created_date
from board b right join member m--OUTER는 의미 없음 LEFT 혹은 right
on b.mno = m.mno
order by bno;

--fk + not null
insert into member VALUES(seq_mem.NEXTVAL,'테스트@', '0000', '테', sysdate);

--스칼라 서브쿼리로도 board기준 outer join과 동일한 결과를 얻을 수 있다.
select bno ,title, read_count, (select email from member m where m.mno = b.mno)name, created_date
from board b
order by bno;

SELECT from member;
SELECT
from board;

insert into reply(rno, content, bno, mno)
values(seq_re.NEXTVAL, 2||'댓글정보',2,2);
commit;

SELECT * from reply;

--2번의 게시글의 댓글정보를 출력하세요
select rno, content 댓글내용, r.created_date, name 작성자, r.mno
from reply r, member m
where bno=3 and r.mno=m.mno;

select * from member;

delete member where mno=61;
--종속된 관계가 없는 61번은 바로 삭제가 가능

delete member where mno=2;
--게시글이랑 댓글쓴 2번은 종속된 관계를 가지고 있기 때문에 멤버정보를 삭제하기 위해서는
--그 해당 멤버의 종속된 관계를 정리해야 삭제가 가능하다.

0개의 댓글