[CS 개념 정리 - DB] 서브쿼리와 조인 간략정리

2025. 1. 6. 15:02·면접 준비/DB
728x90
반응형
SMALL

SubQuery

다른 SQL문이 포함된 SQL문을 뜻하는 서브쿼리는 소괄호로 감싸 외부 쿼리와 내부쿼리를 구분할 수 있다.
SELECT문은 소괄호로 감싸진 서브 쿼리의 형태로, 다른 SELECT, INSERT, UPDATE, DELETE 문 안에 포함될 수 있다.
대표적으로 2가지 유형으로 사용한다.

  • SELECT문 안에 SELECT문이 포함된 서브 쿼리
    SELECT
      USERS.USERNAME,
      (SELECT COUNT(*)
          FROM POSTS
          WHERE POSTS.USER_ID = USERS.USER_ID) AS POSTS_COUNT
      FROM USERS;
  • DELETE문 안에 SELECT문이 포함된 서브 쿼리
    DELETE FROM POSTS
    WHERE USER_ID=(
      SELECT USER_ID
      FROM USERS
      WHERE EMAIL LIKE '%naver.com%'
      );

JOIN

서브 쿼리를 통해 복잡한 상황을 세밀한 SQL문으로 작성할 순 있지만 SQL문이 너무 복잡해 질 수 있다.
이때는 조인을 사용하는 것이 좋다.
조인에는 INNER JOIN, OUTER JOIN, FULL OUTER JOIN으로 구분된다.

INNER JOIN ( 교집합)

두 테이블이 조인 조건을 모두 만족하는 레코드를 결과로 반환한다

LEFT OUTER JOIN (왼쪽 차집합)

두 테이블중 왼쪽 테이블의 모든 레코드를 포함하고, 조인 조건을 만족하는 오른쪽 테이블의 레코드를 결과로 반환한다.
조건을 만족하지 않는 오른쪽 테이블의 필드는 NULL로 채워진다.

RIGHT OUTER JOIN (오른쪽 차집합)

LEFT OUTER JOIN의 반대로 작동된다.

FULL OUTER JOIN 

두 테이블의 모든 레코드를 포함하고, 조인 조건을 만족하지 않는 경우에는 상대 테이블 필드를 NULL로 채워 결과를 반환한다.
MySQL에서는 FULL OUTER JOIN을 지원하지 않으나 UNION을 사용하여 구현할 수 있다.
LEFT OUTER JOIN과 RIGHT OUTER JOIN을 UNION 키워드로 묶으면 된다.

SELECT field1
from table1
left join table2 on join_condition
UNION
SELECT field1
from table1
         right join table2 on join_condition

 

728x90
반응형
SMALL

'면접 준비 > DB' 카테고리의 다른 글

[CS 면접 질문 - DB] 파티셔닝  (0) 2025.01.06
[CS 개념 정리 - DB] 정규화  (1) 2025.01.06
[CS 개념 정리 - DB] 인덱스  (0) 2025.01.06
[CS 개념 정리 - DB] SQL 언어  (0) 2025.01.06
[CS 개념 정리 - DB] RDBMS 기본 개념  (0) 2025.01.06
'면접 준비/DB' 카테고리의 다른 글
  • [CS 개념 정리 - DB] 정규화
  • [CS 개념 정리 - DB] 인덱스
  • [CS 개념 정리 - DB] SQL 언어
  • [CS 개념 정리 - DB] RDBMS 기본 개념
공부하고 기억하는 공간
공부하고 기억하는 공간
IT 비전공자로 시작하여 훌륭한 개발자가 되기 위해 공부하고 있는 공간입니다. 틀린 내용이나 부족한 부분이 있으면 댓글로 알려주세요 바로 수정하겠습니다.
    250x250
  • 공부하고 기억하는 공간
    IT - railroad
    공부하고 기억하는 공간
  • 전체
    오늘
    어제
    • 분류 전체보기 (325)
      • 면접 준비 (22)
        • OS (6)
        • Spring Security (0)
        • Java (3)
        • DB (11)
        • Network (3)
      • ElasticSearch (2)
      • Kafka (4)
      • Spring (22)
        • Spring Cloud (7)
        • Security6 (5)
        • JPA (12)
        • 프로젝트 리팩토링 회고록 (4)
        • Logging (8)
        • Batch (2)
      • Redis (17)
        • Redis 개념 (8)
        • Redis 채팅 (5)
        • Redis 읽기쓰기 전략 (1)
      • AWS (11)
      • 리눅스 (29)
        • 리눅스 마스터 2급 (5)
        • 네트워크(기초) (7)
        • 리눅스의 이해 (6)
        • 리눅스의 설치 (2)
        • 리눅스 운영 및 관리 (6)
      • JAVA-기초 (16)
        • JAVA기본 (11)
        • Design Pattern (5)
      • JSP (27)
        • JSP 기본 개념 (10)
        • JSP (1)
      • SQL (1)
      • TIL (36)
      • 문제 풀이 (2)
        • Programmers (9)
        • 백준 문제풀이 (28)
      • JavaScript (10)
      • HTML (17)
      • Ngrinder (1)
        • Ngrinder 문서 정리 (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      jsp기초
      JavaScript
      리눅스
      자바스크립트
      자바
      리눅스마스터2급정리
      Til
      spring redis
      java
      백준
      자바 면접질문
      CSS
      redis 채팅
      리눅스마스터2급
      레디스
      자바 면접
      스프링프레임워크
      jsp request
      자바기초
      Spring
      springsecurity
      JS
      Springframework
      JSP
      프로그래머스
      Spring Data Redis
      자바 알고리즘
      redis
      자바 반복문
      HTML
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    공부하고 기억하는 공간
    [CS 개념 정리 - DB] 서브쿼리와 조인 간략정리
    상단으로

    티스토리툴바