simDev1234
심플하고 차분하게
simDev1234
전체 방문자
오늘
어제
  • 분류 전체보기
    • Computer Science
      • Basic Math
      • Data Structure
      • Algorithm
      • Database
      • OS
    • Language
      • Java
      • Kotlin
      • SQL
    • Framework
      • Spring
      • Orm&Mapper
      • 프로젝트로 스프링 이해하기
      • 스프링 라이브러리
    • Infra
      • Cloud
      • Docker
      • Redis
      • AWS, Azure
      • Device
    • Etc
      • CleanCoding
    • Git,Github

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 자바메모리구조
  • scanner #next() #nextLine()
  • JVM메모리구조
  • 컨트롤러
  • 자바프로그래밍
  • controllerTest
  • 404
  • 자바
  • 참조타입
  • 참조변수
  • 자바프로그램
  • 스프링
  • null

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
simDev1234

심플하고 차분하게

[DATABASE] JOIN
Language/SQL

[DATABASE] JOIN

2022. 4. 21. 13:39

■ 데이터의 무결성

- 데이터가 실제 현실 세계의 자료와 차이가 없는 수준의 정확성을 보이는 것

- 여러 사용자가 동일 내용의 테이블을 중복하여 사용할 경우, 데이터에 이상현상 발생 가능성 높음

-> 제약조건으로 데이터 자체의 무결성 유지

-> 정규화를 사용하여 테이블을 분해

-> 동기화

 

■ 조인

- 정규화한 테이블을 역정규화하는 키워드

- 원리 : 각 테이블의 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;

 

 

[출처]

- 뉴렉처 강의

- https://tragramming.tistory.com/74

'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
    'Language/SQL' 카테고리의 다른 글
    • [DATABASE] PreparedStatement를 사용하여 시큐어코딩하기
    • [DATABASE] JAVA프로그램과 DB 연결하기
    • [DATABASE] SEQUENCE, INDEX
    • [DATABASE] DB모델링, 정규화와 이상현상, 역정규화
    simDev1234
    simDev1234
    TIL용 블로그. * 저작권 이슈가 있는 부분이 있다면 댓글 부탁드립니다.

    티스토리툴바