■ 데이터의 무결성
- 데이터가 실제 현실 세계의 자료와 차이가 없는 수준의 정확성을 보이는 것
- 여러 사용자가 동일 내용의 테이블을 중복하여 사용할 경우, 데이터에 이상현상 발생 가능성 높음
-> 제약조건으로 데이터 자체의 무결성 유지
-> 정규화를 사용하여 테이블을 분해
-> 동기화
■ 조인
- 정규화한 테이블을 역정규화하는 키워드
- 원리 : 각 테이블의 Key를 사용하여 연결한다.
- 장점 : 중복된 레코드 수를 줄인다. 이상현상을 방지하고 성능이 높아진다.
1) 오라클 조인 - WHERE를 사용한 방법 2) 공통 SQL 조인 - ANSI 방식 |
■ 조인의 종류
종류 | |
INNER JOIN | 조인 조건(두 테이블의 키)에 일치하는 데이터만 가져온다. |
OUTER JOIN | 조인 조건에 일치하는 데이터 및 일치하지 않는 데이터 모두 가져온다. *일치하지 않는 데이터는 : NULL로 가져온다. |
CROSS JOIN | 별도의 조인 조건 없이 두 테이블을 조언 시 가능한 모든 경우의 데이터를 가져온다. |
SELF JOIN | 자기 자신을 하나의 테이블로 취급하여 조인하는 방법 *칼럼명이 중복되므로 반드시 ALIAS를 사용하여 조인 필요 |
■ ANSI 조인
INNER JOIN
SELECT
a.APPLY_NO AS 순번,
c.COM_NAME AS 기업명,
c.COM_CAT AS 기업분야,
c.COM_FOCUS AS 주력요소,
TO_CHAR(a.APPLY_DATE, 'YYYY-MM-DD') AS 지원일자,
a.APPLY_STATE AS 지원상태
FROM MY_APPLY a INNER JOIN COMPANY c
ON a.APPLY_NO = c.APPLY_NO;
>> 결과
OUTER JOIN
LEFT OUTER JOIN
- 좌측테이블을 기준으로 조건에 일치하는 데이터 추출, 조건에 맞지 않으면 NULL
SELECT
c.COM_NO AS 순번,
c.COM_NAME AS 기업명,
w.SALARY AS 연봉,
w.OVERTIME_PAY AS 야근수당,
W.FACILITY AS 시설
FROM COMPANY c LEFT OUTER JOIN WORK_ENV w
ON c.COM_NO = w.COM_NO;
>> 결과
RIGHT OUTER JOIN
- 우측테이블을 기준으로 조건에 일치하는 데이터 추출, 조건에 맞지 않으면 NULL
SELECT
c.COM_NO AS 순번,
c.COM_NAME AS 기업명,
w.SALARY AS 연봉,
w.OVERTIME_PAY AS 야근수당,
W.FACILITY AS 시설
FROM WORK_ENV w RIGHT OUTER JOIN COMPANY c
ON w.COM_NO = c.COM_NO;
>> 결과
CROSS JOIN
SELECT
c.COM_NO AS 순번,
c.COM_NAME AS 기업명,
w.SALARY AS 연봉,
w.OVERTIME_PAY AS 야근수당,
W.FACILITY AS 시설
FROM WORK_ENV w CROSS JOIN COMPANY c
>> 결과
- 심플컴패니2에 해당되는 연봉, 야근수당, 시설을 입력한 적이 없는데, 심플컴패니에 해당되는 부분이 추출됐다.
SELF JOIN
- 반드시 ALIAS를 써서 자기 자신의 테이블을 구분할 수 있게 해야한다.
SELECT
c.COM_NO AS 순번,
c2.COM_NAME AS 회사명,
c2.COM_CAT AS 카테고리
FROM COMPANY c JOIN COMPANY c2
ON c.COM_NO = c2.COM_NO;
>> 결과
■ 오라클 조인 ---- WHERE를 사용한다.
INNER JOIN
SELECT
a.APPLY_NO AS 순번,
c.COM_NAME AS 기업명,
c.COM_CAT AS 기업분야,
c.COM_FOCUS AS 주력요소,
TO_CHAR(a.APPLY_DATE, 'YYYY-MM-DD') AS 지원일자,
a.APPLY_STATE AS 지원상태
FROM MY_APPLY a, COMPANY c
WHERE a.APPLY_NO = c.APPLY_NO;
OUTER JOIN
LEFT OUTER JOIN
SELECT
c.COM_NO AS 순번,
c.COM_NAME AS 기업명,
w.SALARY AS 연봉,
w.OVERTIME_PAY AS 야근수당,
W.FACILITY AS 시설
FROM COMPANY c, WORK_ENV w
WHERE c.COM_NO = w.COM_NO;
RIGHT OUTER JOIN
SELECT
c.COM_NO AS 순번,
c.COM_NAME AS 기업명,
w.SALARY AS 연봉,
w.OVERTIME_PAY AS 야근수당,
W.FACILITY AS 시설
FROM WORK_ENV w, COMPANY c
WHERE w.COM_NO = c.COM_NO;
[출처]
- 뉴렉처 강의
'Language > SQL' 카테고리의 다른 글
[DATABASE] PreparedStatement를 사용하여 시큐어코딩하기 (0) | 2022.04.21 |
---|---|
[DATABASE] JAVA프로그램과 DB 연결하기 (0) | 2022.04.21 |
[DATABASE] SEQUENCE, INDEX (0) | 2022.04.21 |
[DATABASE] DB모델링, 정규화와 이상현상, 역정규화 (0) | 2022.04.19 |
[DATABASE] 뷰 (VIEW), 인라인 뷰 (0) | 2022.04.19 |