backend
  • README
  • DOCS
    • Java Docs
    • Servlet Docs
    • JSP Docs
    • DB & SQL Docs
    • Spring Boot Docs
    • Spring Security Docs
    • AWS Docs
  • 설치하기
    • Intellij 설정
  • 자바
    • 01 Java란?
    • 02 자바 시작하기
    • 03 자료형과 연산자
    • 04 제어문
    • 05 메소드
    • 06 클래스 기초
      • Static 보충자료
      • 패키지 보충자료
    • 07 객체지향 프로그래밍
    • 08 클래스 더 알아보기
      • 열거형 ENUM 보충자료
    • 09 클래스와 자료형
      • 다형성 보충자료
      • 제네릭 보충자료
    • 10 컬렉션 프레임워크
      • 컬렉션 프레임워크 보충자료
    • 11 람다식과 함수형 프로그래밍
      • 람다식 보충자료
    • 12 오류 대비하기
      • 오류 보충자료
    • 13 멀티태스킹
      • 멀티태스킹 보충자료
    • 교재보충
      • java.lang
  • 스프링
    • 서블릿, JSP
      • 05 Servlet(서블릿)
        • 서블릿 보충자료
        • 서블릿 추가코드
        • XML, YAML, JSON
      • 06 JSP(자바 서버 페이지)
        • JSP 보충자료
      • 07 JSTL(JSP 스탠다드 태그 라이브러리)
        • JSTL 보충자료
      • 08 Cookie(쿠키), Session(세션)
      • 09 서블릿,필터,리스너
        • 서블릿,필터,리스너 보충자료
      • 11 도서관리 프로젝트 실습
    • Spring Boot
      • 01 스프링 등장 배경, 객체지향
        • 스프링 등장 배경, 객체지향 보충자료
      • 02 IOC(제어의 역전), DI(의존성 주입)
        • IOC 보충자료
        • DI 보충자료
      • 03 스프링 구조
        • 스프링 구조 보충설명
      • 04 테스트코드 실습
      • 05 스프링 빈 설정
        • 스프링 빈 설정 보충자료
      • 06 싱글톤
        • 싱글톤 보충 자료
      • 07 스프링 빈 자동설정
        • 스프링 빈 자동설정 보충자료
      • 08 빈 생명주기
        • 빈 생명주기 보충자료
      • 09 빈 스코프
        • 빈 스코프 보충자료
      • 10 스프링 MVC
        • 스프링 MVC 보충자료
        • 데이터베이스 연동에 필요한 부분
      • 11 Validation(검증)
        • Validation(검증) 보충자료
      • 12 Bean Validation(빈검증)
        • Bean Validation(빈검증) 보충자료
      • 13 예외처리
        • 예외처리 보충자료
      • 14 타입변환
      • 15 JDBC(Java Database Connectivity)
      • 16 커넥션풀
      • 17 트랜잭션
        • 트랜잭션 보충자료
      • 18 JDBC 템플릿 활용
      • 19 MyBatis
      • 20 JPA(Java Persistence API)
      • 22 게시판 프로젝트 실습
    • Spring Security
      • 보안(Security)
      • Spring Security
      • 2. Spring Security 알아보기
        • 보안 위협 실제 사례와 방어 전략
      • 3. Spring Security 기본 동작 흐름
      • 4. Spring Security로 인증 권한 추가하기
        • Spring Security의 인증 및 인가
      • 5. Spring Security에서 세션 관리하기
        • 세션(Session)과 쿠키(Cookie) 비교, 토큰(Token)과의 관계
        • 해싱 및 해싱알고리즘
        • base64
      • 6. Spring Security 악용 보호
        • SameSite
      • 7. Spring Security로 인가 권한 추가하기
      • 8. Bcrypt(비크립트) 암호화
      • OAuth2 적용하기
  • 네트워크
    • HTTP
    • OSI 7계층
  • DB&SQL
    • 01 Database(데이터베이스)와 SQL 개요
    • 02 관계형 모델
    • 03 집합
    • 04 JOIN 연산
    • 05 MySQL
      • 세이브포인트
      • DBeaver, Mysql 오토커밋 설정 관련
    • 06 SQL 기초
      • 예시데이터 쿼리문
    • 07 SQL 실습
      • 실습 스키마
    • 08 Join 활용
      • 실습스키마
    • 09 SQL 활용
      • 실습스키마
    • 10 정규화
      • 실습 스키마
    • 데이터타입
    • 예시 프로젝트 스키마 구성
  • AWS
    • SSL 연결하기
    • 보충설명
Powered by GitBook
On this page
  • JOIN 연산
  • JOIN의 목적
  • JOIN 동작
  • JOIN 연산의 종류
  • 1. CROSS JOIN(크로스 결합)
  • 2. INNER JOIN(내부 결합)
  • 3. OUTER JOIN(외부 결합)
  • 4. SELF JOIN(자기 결합)
  • 5. EQUI JOIN(등가 결합)
  • 6. NON-EQUI JOIN(비등가 결합)
  • 7. NATURAL JOIN(자연 결합)
  1. DB&SQL

04 JOIN 연산

Previous03 집합Next05 MySQL

Last updated 5 months ago

JOIN 연산

  • JOIN 연산은 수학적 집합 이론에는 존재하지 않으며, 관계형 모델의 특수한 연산

  • 관계형 데이터베이스에서 두 개 이상의 테이블을 특정 조건에 따라 결합하여 하나의 새로운 결과 테이블을 생성하는 연산

  • 이를 통해 두 테이블의 관련된 데이터를 연결하고 새로운 정보 구조를 만드는 것이 가능함

JOIN의 목적

  • 테이블 간의 관계 결합: 데이터베이스 설계에서 테이블 간의 관계를 정의하여, 서로 다른 테이블에서 필요한 데이터를 결합함

  • 데이터 결합: 여러 테이블에 흩어져 있는 데이터를 하나의 통합된 뷰로 제공함

  • 정보 추출: 다양한 테이블의 데이터를 결합하여 새로운 의미를 가진 정보를 생성함

JOIN 동작

  • JOIN은 공통된 속성을 가진 두 개의 릴레이션에서 공통된 속성값이 같은 튜플끼리 조합한 릴레이션을 반환함

  • 속성이 일치하는 값이 존재하지 않는 튜플은 결과에서 제외됨

  • 이러한 현태의 결합을 SQL에서는 INNER JOIN(내부조인)이라고 함

JOIN 연산의 종류

  1. CROSS JOIN(크로스 결합)

  2. INNER JOIN(내부 결합)

  3. OUTER JOIN(외부 결합)

  4. SELF JOIN(자기 결합)

  5. EQUI JOIN(등가 결합)

  6. NON-EQUI JOIN(비등가 결합)

  7. NATURAL JOIN(자연 결합)

1. CROSS JOIN(크로스 결합)

  • 곱집합과 같은 결과를 반환함

    • 아래의 경우 3 X 4로 12개의 튜플이 나옴

  • 크로스 결합이 실무에서 사용되지 않는 이유

    • 이러한 결과가 필요한 경우가 없음

    • 비용이 매우 많이 드는 연산

2. INNER JOIN(내부 결합)

  • 가장 많이 사용되는 결합 중 하나

  • INNER JOIN은 두 테이블 간의 공통된 속성 값을 기준으로, 일치하는 튜플(행)만 결합하여 반환함

  • 두 테이블 모두에 존재하는 튜플만 포함되며, 일치하지 않는 튜플은 제외됨

  • 결과 릴레이션은 크로스 결합의 부분 집합임, 크로스 결합의 내부에 존재한다고 하여 내부 결합이라고 함

3. OUTER JOIN(외부 결합)

  • 내부 결합과 외부 결합은 배타적인 연산

  • 내부 결합이 크로스 결합의 부분 집합이라는 의미였으므로 외부 결합은 크로스 결합의 부분 집합이 아님

  • 외부 결합의 종류

    • LEFT (OUTER) JOIN, 왼쪽 외부 결합

    • RIGHT (OUTER) JOIN, 오른쪽 외부 결합

    • FULL (OUTER) JOIN, 완전 외부 결합

LEFT OUTER JOIN(왼쪽 외부 결합)

  • LEFT JOIN은 왼쪽 테이블의 모든 튜플과, 오른쪽 테이블에서 일치하는 튜플을 결합하여 반환함

  • 오른쪽 테이블에 일치하는 튜플이 없는 경우, NULL 값으로 채워짐

  • 왼쪽 테이블의 모든 데이터를 유지하고, 오른쪽 테이블에 결합되지 않은 데이터도 표시하고 싶을 때 사용

RIGHT OUTER JOIN(오른쪽 외부 결합)

  • RIGHT JOIN은 오른쪽 테이블의 모든 튜플과, 왼쪽 테이블에서 일치하는 튜플을 결합하여 반환함

  • 왼쪽 테이블에 일치하는 튜플이 없는 경우, NULL 값으로 채워짐

  • 오른쪽 테이블의 모든 데이터를 유지하고, 왼쪽 테이블에 결합되지 않은 데이터도 표시하고 싶을 때 사용함

FULL OUTER JOIN(완전 외부 결합)

  • FULL JOIN은 두 테이블의 모든 튜플을 결합하여, 일치하지 않는 튜플도 포함함

  • 왼쪽 또는 오른쪽 테이블 중 일치하지 않는 튜플은 NULL 값으로 채움

  • 두 테이블 간의 전체 관계를 파악하고 싶을 때 사용함

4. SELF JOIN(자기 결합)

  • SELF JOIN은 하나의 테이블을 자기 자신과 결합하는 연산

  • 테이블 내에서 서로 다른 튜플 간의 관계를 표현하거나, 동일 테이블에서 특정 조건에 따라 데이터를 비교하고자 할 때 사용됨

  • 계층적 구조나 재귀적 관계를 표현할 때 사용됨

5. EQUI JOIN(등가 결합)

  • EQUI JOIN은 두 테이블을 결합할 때, 특정 열의 값이 서로 일치하는 경우에만 결합하는 방식임. 즉, 두 테이블의 공통 열을 기준으로 값이 같을 때만 결합함

  • 가장 일반적으로 사용되는 JOIN 방식이며, INNER JOIN, LEFT JOIN, RIGHT JOIN 등 다양한 JOIN 유형에서 사용 가능

6. NON-EQUI JOIN(비등가 결합)

  • 비등가 결합은 두 테이블을 결합할 때, 값이 일치하지 않는 조건을 사용하여 결합하는 방식임

  • 등호 대신 >, <, >=, <=, != 등의 연산자를 사용하여 결합 조건을 지정함

  • 주로 범위 조건이나 다른 형태의 관계를 정의할 때 사용됨

  • 다만 비등가 결합은 특정 값이 여러 범위 조건을 만족할 수 있기 때문에, 각 행이 여러 번 결합될 수 있음

7. NATURAL JOIN(자연 결합)

  • 자연 결합(Natural Join) 은 두 테이블 간의 공통된 모든 열을 기준으로 자동으로 결합하는 방식, 별도의 결합 조건을 명시하지 않으며, 두 테이블의 공통 열을 자동으로 찾아 결합함

  • 결과는 공통 열이 일치하는 모든 행이 결합된 형태로 반환됨 (가장 자주 사용하는 내부결합이면서 등가 결합)