본문 바로가기

Oracle DB

FOREIGN KEY, INNER JOIN, OUTER JOIN

FOREIGN KEY, INNER JOIN, OUTER JOIN

이번시간엔 외래키(FOREIGN KEY), INNER JOIN, OUTER JOIN 세가지를 알아보겠다.

다음과 같은게시판 형식의 테이블을 하나 더 준비해왔다.

 

TESTBOARD
테이블이름은 testboard

*NULL?컬럼의 'N'값은 필수로 입력해야 하는 값이다.

TEST
TEST

1.외래키FOREIGN KEY

외래키는 두개의 테이블을 연결하는 역할을 한다.

test테이블의 midx컬럼과 testboard의 midx컬럼을 연결해보았다.

외래키

두 컬럼을 외래키로 정하게 되면

testboard테이블의 midx는 test테이블의 midx값들내에서만 정할 수 있다.

testboard테이블을 보면 모두 1~10사이의 값으로 되어있는 것을 확인할 수 있다.

만일 범위 밖의 값으로 설정하게 되면 오류가 발생하게 된다.

외래키 오류
testboard테이블의 midx값을 범위밖으로 설정했을때 출력되는 오류.

어떤 사이트의 회원들만 글을 쓰게하고 싶을 경우 이 기능을 사용하면 된다.

 

2. INNER JOIN

INNER JOIN은 두개의 테이블에서 서로 같은 데이터가 존재하는 경우에만 조회되는 기능이다.

test테이블과 testboard테이블에서 같은 midx값을 가진 데이터를 조회해보자.

INNER JOIN

아래의 결과를 보면 test테이블에서 홍길팔과 홍길구의 데이터가 없는걸 볼 수 있다.

INNER JOIN결과
testboard테이블에 글을 쓴사람만 조회하는걸 알 수 있다.

 

3. OUTTER JOIN

INNER JOIN과 마찬가지로 두 개의 테이블을 이어 붙이지만 약간 다르다.

OUTTER JOIN은 기준이 되는 테이블 데이터전체와 그 반대편의 테이블의 일부를 조회하는 기능이다.

기준이 되는 테이블도 설정할 수 있다. LEFT JOIN과 RIGHT JOIN으로 정하면 된다.

 

LEFT JOIN의 경우

LEFT JOIN
홍길팔과 홍길구는 글을 작성하지 않았기 때문에 null로 표시된다.

RIGHT JOIN의 경우

RIGHT JOIN

'Oracle DB' 카테고리의 다른 글

ROW_NUMBER() OVER()  (1) 2022.01.20
LEFT JOIN, RIGHT JOIN, ROWNUM  (0) 2022.01.13
UNION  (4) 2022.01.08
DECODE, NVL, CASE  (2) 2022.01.07
서브쿼리, 시퀀스  (4) 2022.01.06