[DB] 4.4 SELECT문

Cherish·2023년 10월 21일
0

DataBase

목록 보기
4/7
post-thumbnail

🍏 SELECT문

  • 관계 데이터베이스에서 정보를 검색
  • 관계 대수의 실렉션, 프로젝션, 조인, 카티션 곱 등을 결합한 것
  • 관계 데이터베이스에서 가장 자주 사용된다


✅ 범위 연산자


✅ 리스트를 사용한 검색


✅ NULL값

  • NULL값에 다른 값을 + , - 해도 연산 결과는 NULL이다.
  • COUNT(*)를 제외한 집단 함수들은 널값 무시
  • 어떤 애트리뷰트가 널인지 비교하기 위해서 'DNO=NULL'처럼 하면 안됨
  • 잘못된 예

  • 올바른 표기


✅ ORDER BY절

ASC / DESC


✅ 집단 함수

COUNT / SUM / AVG / MAX / MIN

  • SELECT절과 HAVING절에만 나타날 수 있음
  • COUNT(*) : 결과 릴레이션의 총 행 개수
  • COUNT(애트리뷰트) : 해당 애트리뷰트에서 NULL값이 아닌 값들의 개수
  • DISTINCT를 앞에 쓰면 중복 제거 후 함수 실행

✅ 그룹화

GROUP BY

  • 그룹화 애트리뷰트 : 그룹화에 사용된 애트리뷰트
  • SELECT절에는 집단 함수, 그룹화 애트리뷰트들만 나타낼 수 있음


✅ HAVING절

  • 각 그룹이 만족해야 하는 조건을 명시
  • HAVING절에 나타나는 애트리뷰트는 반드시 GROUP BY절에 나타나거나 집단 함수에 포함되어야 함


✅ 집합 연산

  • 두 릴레이션이 합집합 호환성을 가져야 한다.

UNION / EXCEPT / INTERSECT
UNION ALL / EXCEPT ALL / INTERSECT ALL


✅ 조인

  • 두 개 이상의 릴레이션으로부터 연관된 투플들을 결합
  • 조인 조건을 생략했을 때와 조인 조건을 틀리게 표현했을 때는 카티션 곱이 생성됨
  • 질의가 수행되는 과정
    • 조인 조건을 만족하는 튜플들 찾기
    • 튜플 중 SELECT절에 명시된 애트리뷰트만 프로젝트
    • 필요한 경우 중복 배제


✅ 자체 조인 (self join)

  • 실제로는 한 릴레이션에 접근이지만 FROM 절에서 두개로 나눠서 사용해야 한다.

✅ 중첩 질의 (nested query)

부질의 (subquery)

  • 외부 질의 : 중첩 질의를 포함하는 질의
  • INSERT, DELETE, UPDATE문에도 사용 가능


✅ 중첩 질의 (nested query) - (1)

  • 한 개의 스칼라 값이 반환되는 경우


✅ 중첩 질의 (nested query) - (2)

  • 한 개의 애트리뷰트로 이루어진 릴레이션이 반환되는 경우

  • 대부분의 중첩 질의는 조인 질의로 대체 가능

  • 외부 질의 WHERE 절에서 쓰이는 연산자
    • IN

    • ANY

    • ALL

    • EXISTS
      결과가 빈 릴레이션인지 여부 검사 ( 빈 릴레이션 = false )

중첩 질의 다시

✅ 중첩 질의 (nested query) - (3)

  • 여러 애트리뷰트들로 이루어진 릴레이션이 반환되는 경우

✅ 상관 중첩 질의 (correlated nested query)


✅ FROM절 중첩 질의








0개의 댓글

관련 채용 정보