♣ SQL
◆ 외래키(Foreign Key)
- 회원 ID를 참조하도록 설정
- 자바에서는 DB의 외래키와 상관없이 코드 작성 방법은 기존과 동일하다.
- 존재하지 않는 회원 ID를 추가하지 않도록 설정할 수 있다.
- 컬럼명 REFERENCES 테이블(대상 컬럼명)
- 회원 탈퇴 시 게시글의 처리 여부를 설정할 수 있다.
- ON DELETE CASCADE
로 작성하면 회원 탈퇴 시 연결된 글이 모두 삭제된다.
- ON DELETE SET NULL
로 작성하면 회원 탈퇴 시 연결된 글의 작성자가 NULL로 변경된다.
0210.게시판.sql
◆ View
- 공지사항을 상단에 조회하고 나머지를 하단에 위치하도록 조회
- 서로 다른 두 개의 조회 구문을 사용한 뒤 결과를 합침(집합연산)
UNION ALL
- 합집합
UNION DISTINCT
- 합집합에서 중복제거
INTERSECT
-교집합
MINUS
- 차집합
14.View.sql
◆ 테이블 조인(Table Join)
- 분리되어 있는 테이블을 특정 기준에 의해서 합치는 것
- 합칠 때의 기준이 있어야 한다.
- 연관이 있는 테이블을 합쳐야 한다.
◆ INNER JOIN
-
연결된 데이터만 조회가 가능하다.
-
구문 : SELECT 항목 FROM A테이블 INNER JOIN B테이블 ON 연결조건
-
(주의!) 중복되는 컬럼명을 제거하거나 별칭으로 변경해야 한다.
-
데이터가 있을 경우에만 사용한다.
-
퀴즈 : 게시글 조회 시 회원 닉네임을 같이 조회
-
(문제점) 회원이 탈퇴하여 작성자가 NULL이 되면 조회가 이루어지지 않는다.
-
(해결책) OUTER JOIN을 사용 (없는 경우를 조회할 경우) VS INNER JOIN은 반드시 있는 데이터일 경우 사용
SELECT B.*, M.MEMBER_NICK
FROM BOARD B INNER JOIN MEMBER M
ON B.BOARD_WRITER = M.MEMBER_ID;
◆ OUTER JOIN
- 특정 테이블은 전부 조회
- 기준(방향)이 필요
- 상하관계일 때 주로 사용한다.
- 데이터가 없을 수 있을 경우 사용한다.
- 특정 테이블을 기준으로 하여 연관된 데이터를 합쳐 조회한다.
- 기준 테이블이 어느 위치에 있느냐에 따라 방향이 결정된다.
- A ← B면
A LEFT OUTER JOIN B
- A → B 면
A RIGHT OUTER JOIN B
- A ↔ B 면
A FULL OUTER JOIN B
- 기준 테이블은 연관 데이터가 없어도 모두 조회가 된다.
- COUNT는 와일드카드(*)를 사용하지 않는다.
- GROUP BY를 같이 작성해주어야 한다.
- GROUP BY는 와일드카드(*)를 사용할 수 없다.
15.테이블조인.sql
◆ Dual
- 오라클에서 임시 작업을 수행하기 위한 테이블이다. (임시 테이블)
- 임시테이블을 생성해서 해당 컬럼을 한 줄 출력하고 싶을 때 사용한다.
- 게시글 등록까지는 기존과 같으나 등록 이후에 이동해야 하는 페이지에서 번호를 필요로 한다.
- 밖에서는 시퀀스가 몇 번인지 알지 못하므로 시퀀스 생성 후 등록하도록 처리한다.
(기존)
시퀀스를 등록 과정에서 생성
(변경)
시퀀스 생성 후 등록하도록 처리
SELECT BOARD_SEQ.NEXTVAL FROM DUAL;
2010.게시판.sql