[DBMS] 함수 ③ - join, 서브쿼리(subQuery)

김윤섭·2023년 2월 13일

DBMS

목록 보기
5/8
post-thumbnail

1. Join 조인


(1) join 이란?

두 개 이상의 테이블을 서로 연결하여 데이터를 검색할 때 사용하는 방법으로 두 개의 테이블을 마치 하나의 테이블인 것 처럼 보여주는 것

(2) join 의 기본 사용방법

  • 두개의 테이블에 하나라도 같은 컬럼이 있어야 한다.
  • 두 컬럼의 값은 공유되어야 한다.
  • 보통 종인을 위해 기본키(Primary key)와 외래키(Foreign Key)를 활용힌다.

(3) inner join

  • 각 테이블에 조인 조건에 일치되는 데이터만 가져온다.
  • inner join은 교집합이라고 말한다.
  • 위 테이블에서 라이센스 가지고 있는 사람 찾을 때 사용

		select	* from 	talbe_A t1
        			inner join talbe_B t2

(4) outer join

  • 조인 조건에 일치하는 데이터 및 일치하지 않은 데이터를 모두 select한다.
  • 조인 조건이 일치하지 데이터가 없다면 NULL로 가져온다.
  • Outer Join은 Inner Join과는 다르게 주(main)테이블이 어떤테이블인지가 중요하다. 그래서 어떤테이블이 중심이 되느냐에 따라 다시 Left Outer Join, Right Outer Join, Full Outer Join 으로 세분화 할 수 있다.
  • Left Outer Join은 왼쪽 테이블이,Right Outer Join은 오른쪽 테이블이, Full Outer Join은 양쪽 테이블이 모두가 중심(주)이라는 뜻이다.

    FULL은 거의 안씀, 보통 LEFT OUTER JOIN
    A/B로 뒀을 때, A를 기준으로 B의 정보 가져옴

(5) Left Outer Join

  • 왼쪽 테이블이 기준이 된다.
  • 조인조건에 부합하는 데이터가 조인 당하는 테이블(오른쪽)에 있으면 해당 데이터를, 부재하면 NULL로 select 된다.
		select	* from 	talbe_A t1
        			left outer join talbe_B t2

(6) Right Outer Join

  • 오른쪽 테이블이 기준이 된다.
  • 조인조건에 부합하는 데이터가 조인 당하는 테이블(왼쪽)에 있으면 해당 데이터를, 부재하면 NULL로 select 된다.
		select	* from 	talbe_A t1
        			right outer join talbe_B t2

(7) Full Outer Join

  • 양쪽 테이블이 기준이 된다.
  • 조인조건에 부합하는 데이터가 조인 당하는 테이블(왼쪽 or 오른쪽)에 있으면 해당 데이터를, 부재하면 NULL로 select 된다.
		select	* from 	talbe_A t1
        			full outer join talbe_B t2

(8) Inner Join VS Outer Join

📕 Inner Join

📕 Left Outer Join


💡 결론

  • Inner Join은 null값은 표시 x
  • 데이터는 하나하나 중요하므로 그때그때 필요한 것으로 사용하기

(9) ANSI Join vs Oracle Join


  • SQL은 데이터베이스를 관리하기 위해 만들어진 프로그래밍 언어이며, 데이터베이스를 관리해주는 대부분의 DBMS들은 SQL을 사용한다.
  • 물론 DBMS자체 특수성 때문에 SQL사용법이 조금씩 다르기도 하지만, 큰 틀에서 보면 나름대로 보편성이 있다.
  • ANSI 미국 국립 표준 협회에서도 SQL에 대한 보편적인 문법을 제시하고 있는데, 그것이 바로 ANSI Query이다. join도 마찬가지로 ANSI문법을 사용하는 경우가 대부분이다.

2. 서브쿼리(subQuery)

서브쿼리란?

  • Main Query에 반대되는 개념으로 이름을 붙인 것
  • 메인쿼리를 구성하는 소단위 쿼리
  • select, insert, delete, update절에서 모두 사용가능
  • 서브쿼리의 결과 집합을 메인쿼리가 중간 결과 값으로 사용
  • 서브쿼리 자체는 일반 쿼리와 다를바가 없다.

서브쿼리 만들기

  • 하드코딩으로는 가변 상황에 대비하기 어려움
  • 쿼리 안에 쿼리쓰기

💡 서브쿼리 예시

  • 월급이 가장 적은 사람은?

profile
KIC캠퍼스 교육수료 (2023.01~2023.06) - JAVA, JSP, Springboot, DBeaver

0개의 댓글