Database - 3(SQL 2)

김세영·2021년 4월 15일
0

LIKE

  • LIKEWHERE절에 주로 사용되며, 부분적으로 일치하는 문자열을 찾을 때 사용합니다.

  • SELECT name
    FROM instructor
    WHERE name LIKE '%dar%'
    "instructor 테이블에서 namedar을 포함하고 있는 튜플들을 골라 name을 뽑아서 보여주세요"

    • % : 글자 숫자 제한 X
      • 'Ap%'는 Ap로 시작하기만 하면 됩니다. ex) Ap, Api, Apple, Application, Approach, ...
    • _ : _ 수 만큼 글자 수 제한
      • 'Ap___'는 Ap가 일치하고, 뒤에 3글자가 와야 합니다. ex) Apple, Apart, ...
    • 응용
      • '__%'은 최소 두 글자 이상 있어야 합니다.
      • '___'은 세 글자 문자열만 있어야 합니다.

Set Operations [UNION, INTERSECT, EXCEPT]

  • UNION은 합집합, INTERSECT는 교집합, EXCEPT는 차집합을 나타냅니다.

    • (SELECT course_id FROM section WHERE sem = 'Fall' AND year = 2017)
      UNION
      (SELECT course_id FROM section WHERE sem = 'Spring' AND year = 2018)
      "section 테이블에서 2017년 가을학기와 2018년 봄학기의 course_id를 모두 뽑아서 보여주세요"

    • (SELECT course_id FROM section WHERE sem = 'Fall' AND year = 2017)
      INTERSECT
      (SELECT course_id FROM section WHERE sem = 'Spring' AND year = 2018)
      "section 테이블에서 2017년 가을학기와 2018년 봄학기의 course_id중 둘이 일치하는 것을 뽑아서 보여주세요"

    • (SELECT course_id FROM section WHERE sem = 'Fall' AND year = 2017)
      UNION
      (SELECT course_id FROM section WHERE sem = 'Spring' AND year = 2018)
      "section 테이블에서 2017년 가을학기의 course_id 중 2018년 봄학기에 있는 것을 제외하고 뽑아서 보여주세요"

  • Set Operation은 기본적으로 중복이 자동 제거됩니다.

    • UNION ALL / INTERSECT ALL / EXCEPT ALL 을 사용하면 중복을 허용합니다.

Ordering

  • SELECT DISTINCT name
    FROM instructor
    ORDER BY name
    "instructor 테이블의 모든 튜플을 name을 기준으로 사전순 정렬하고, name을 중복을 제거하고 뽑아서 보여주세요"

    • 기본적으로 오름차순 정렬 기준이며, DESC / ASC 구문을 활용해 정렬 기준을 바꿀 수 있습니다.
      ORDER BY name DESC
      "... name을 사전 역순으로 정렬하고 ..."
    • 여러 값들을 동시에 정렬할 수 있으며, 이 땐 앞에 놓은 attribute부터 우선 정렬됩니다.
      ORDER BY dept_name, name
      "... dept_name을 정렬한 후 name이 정렬 가능하면 정렬하고 ..."

NULL

  • 모든 Tuple들은 null값을 가질 수 있습니다.
    이는 '알 수 없는 값' 이거나 '존재하지 않는 값' 입니다.

  • null을 이용한 산술 연산의 결과는 항상 null입니다. ex) 3 + null = null

  • IS NULL은 값이 null인지 확인해줍니다.
    SELECT name
    FROM instructor
    WHERE salary IS NULL
    "instructor 테이블에서 연봉이 null인 모든 튜플의 name을 뽑아서 보여주세요"

    • predicate IS NULLpredicate = NULL과 다른 의미입니다.
      null은 값이 아니기 때문에 <, >, ≤, ≥, =, <> 연산은 unknown으로 간주합니다.
  • IS NOT NULL은 값이 null이 아닌지 확인해줍니다.

  • WHERE절에서는 AND, OR, NOT과 같은 논리 연산을 할 수 있습니다.
    WHERE절은 unknown값을 false로 인식합니다.
    unknown과 논리 연산을 할 수도 있는데, 결과는 다음과 같습니다.

    • AND
      (true AND unknown) = unknown
      (false AND unknown) = false
      (unknown AND unknown) = unknown

    • OR
      (unknown OR true) = true
      (unknown OR false) = unknown
      (unknown OR unknown) = unknown

profile
초보 iOS 개발자입니다ㅏ

0개의 댓글