Big Ben
Big Ben's Log
Big Ben
전체 방문자
오늘
어제
  • 전체 글 (80)
    • 파이썬 (23)
      • 파이썬 기초 (5)
      • 클래스 (6)
      • 자료구조 (4)
      • Tensorflow (3)
      • PyTorch (2)
      • konlpy (1)
      • anaconda (1)
    • 머신러닝 (3)
      • 선형회귀 (1)
      • Tree 기반 (1)
    • 딥러닝 (6)
      • NLP (2)
      • VISION (2)
      • TABULAR (0)
      • 딥러닝 서버 구축 (2)
    • 그래프 이론 (1)
      • 그래프마이닝 (1)
      • GNN (0)
    • 강화학습 (3)
      • 강화학습 기본 (3)
    • 인공지능 (5)
    • 추천시스템 (2)
      • 추천시스템 기초 (2)
    • Competitions (1)
    • 빅데이터 (8)
      • 하둡 (3)
      • 스파크 (4)
      • 클라우드 (1)
    • SQL (7)
      • MariaDB (2)
    • 논문 리뷰 (2)
    • 대학원 (0)
      • 데이터 사이언스 (0)
      • 경제학 (0)
    • 선형대수학 (7)
      • 선형대수 ICE BREAKING (1)
      • 벡터 (5)
      • 고윳값 (1)
    • 개인프로젝트 (0)
      • 포트폴리오 대시보드 + AI기반 주식 자동매매 (0)
    • 재테크 (1)
    • 자동차 (0)
    • 알고리즘 (11)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • 하둡
  • TensorFlow
  • 머신러닝
  • class
  • PYTHON
  • pytorch
  • 데이터베이스
  • 객체
  • 데이터사이언스
  • 프로그래밍
  • 빅데이터
  • 파이썬
  • 백준
  • 코딩테스트
  • MariaDB
  • 딥러닝
  • AI
  • 데이터
  • 선형대수
  • mysql
  • sql
  • 알고리즘
  • 객체지향
  • 파이썬기초
  • 선형대수학
  • 프로그래머스
  • Baekjoon
  • 인공지능
  • 자료구조
  • 코테

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Big Ben

Big Ben's Log

[SQL] 검색 - 목록 검색 연산자와 중첩 질의 Nested Query (2)
SQL

[SQL] 검색 - 목록 검색 연산자와 중첩 질의 Nested Query (2)

2024. 3. 20. 15:35
반응형

SQL에서 목록 검색 연산자라고 하면 IN과 NOT IN이 있다.

 

IN 연산자는 일반적으로 주 질의의 WHERE 절에서 하나의 컬럼 값이 하위 질의가 반환한 결과 목록에 포함되는지 확인을 하는 역할을 한다.

 

지난 첫번째 중첩질의 포스팅에서도 다뤘지만, 하위 질의는 테이블(뷰) 형태를 반환할 수 있기 때문에 두개 이상의 값을 취할 수 있다.

 

주 질의는 WHERE 절의 컬럼 값이 하위 질의의 결과 목록에 포함되면 True를 반환한다고 이해하면 된다.

 

예시를 들어보자. 

 

다음과 같은 3개의 테이블(emplyee, department, dependent) 이 존재한다고 가정해보자.

 

 

employee 테이블

 

department 테이블

 

dependent 테이블

 

예제 1) 관리자인 사원의 정보를 검색 

중첩질의를 활용해 이 문제를 해결해보자면 다음과 같이 SQL을 만들어서 원하는 답을 구할 수 있다.

SELECT *
FROM employee
WHERE ssn IN (SELECT mgr_ssn FROM department);

 

(where 절에서 manager의 사번을 참고하기 위해 department에서 select하는 하위 질의를 하나 만들어서 활용했다.)

 

예제 2) 부양가족이 존재하지 않는 사원의 정보를 검색

이 문제는 다음처럼 JOIN을 활용한 SQL로 답을 구하는 것이 더 익숙할 수는 있어도, 중첩 질의를 통해서도 충분히 구할 수 있다.

SELECT e.*
FROM employee e
LEFT JOIN department d ON e.ssn = d.essn
WHERE essn IS NULL;

 

- 중첩 질의 ver

SELECT * 
FROM employee 
WHERE ssn NOT IN (SELECT essn FROM dependent);

 

이면에 대규모 DB에서 쿼리를 할 때, 속도와 리소스 측면에서는 다를 수 있겠으나 

단순하게 SQL을 연습하는 과정에서는 두 쿼리 모두 동일한 결과를 리턴한다.

반응형
저작자표시 (새창열림)

'SQL' 카테고리의 다른 글

[SQL] 프로그래머스 특정 물고기를 잡은 총 수 구하기 - 조인 & 상관중첩질의  (0) 2024.03.25
[SQL] 중첩 질의 - 상관 중첩 질의와 존재 연산자 EXISTS (3)  (0) 2024.03.21
[SQL] 검색 - 비교 연산자와 중첩 질의 Nested Query (1)  (0) 2024.03.20
[SQL] 조건에 부합하는 중고거래 댓글 조회 (프로그래머스)  (0) 2024.03.18
    'SQL' 카테고리의 다른 글
    • [SQL] 프로그래머스 특정 물고기를 잡은 총 수 구하기 - 조인 & 상관중첩질의
    • [SQL] 중첩 질의 - 상관 중첩 질의와 존재 연산자 EXISTS (3)
    • [SQL] 검색 - 비교 연산자와 중첩 질의 Nested Query (1)
    • [SQL] 조건에 부합하는 중고거래 댓글 조회 (프로그래머스)
    Big Ben
    Big Ben
    Data Scientist

    티스토리툴바