Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

미국 사는 수스의 코딩

SQL 데이터 검색 조건 지정하기 : WHERE 문 활용법 본문

SQL

SQL 데이터 검색 조건 지정하기 : WHERE 문 활용법

캘리 사는 수스 2023. 3. 29. 04:30
반응형

Copyright © 미국 사는 수스의 코딩. All rights reserved.

 

SQL에서 WHERE 절은 특정 조건에 맞는 데이터만을 조회하는 데 사용됩니다.

WHERE 절은 SELECT 문 뒤에 추가하여 사용하며, WHERE 절에서는 비교 연산자(=, >, <, >=, <=)를 사용하여 원하는 데이터를 검색합니다.

이외에도 다양한 조건문을 사용하여 WHERE 절을 활용할 수 있습니다.

아래는 WHERE 절에서 사용되는 주요 비교 연산자와 조건문에 대한 설명입니다.

 

비교 연산자

  • = (equal to): 왼쪽 항과 오른쪽 항이 같은 경우 참을 반환합니다.
  • > (greater than): 왼쪽 항이 오른쪽 항보다 큰 경우 참을 반환합니다.
  • < (less than): 왼쪽 항이 오른쪽 항보다 작은 경우 참을 반환합니다.
  • >= (greater than or equal to): 왼쪽 항이 오른쪽 항보다 크거나 같은 경우 참을 반환합니다.
  • <= (less than or equal to): 왼쪽 항이 오른쪽 항보다 작거나 같은 경우 참을 반환합니다.
  • <> 또는 != (not equal to): 왼쪽 항과 오른쪽 항이 다른 경우 참을 반환합니다.

 

조건문

WHERE 절에서는 비교 연산자 외에도 다양한 조건문을 사용할 수 있습니다.

  • LIKE : 특정 패턴과 일치하는 값을 조회합니다. %와 _ 등의 와일드카드를 사용할 수 있습니다.
  • IN : 지정된 값 목록 중 하나와 일치하는 값을 조회합니다.
  • BETWEEN : 지정된 범위에 속하는 값을 조회합니다.
  • IS NULL : NULL 값을 조회합니다.
  • NOT : 조건을 부정합니다.

 

예시

Google Cloud Platform BigQuery에서 예시를 보여드리는데, 셋업하시는 방법은 여기 포스팅에서 확인해주세요.

Link : https://swecode.tistory.com/11

# GCP BigQuery에서 데이터를 확인해줍니다
SELECT *
FROM housecanary-com.sample.national_ts

 

예시 : WHERE 절에 여러 조건을 넣는 법 (AND | OR)

# WHERE 문에 AND 또는 OR 을 넣어 여러 조건들을 넣을 수 있습니다.
SELECT *
FROM housecanary-com.sample.national_ts
WHERE hpi_value <= hpi_trend
AND date(month) BETWEEN "1991-02-01" AND "2021-01-01"
AND risk is not NULL
AND hpi_returns > 1

 

예시 : AND | OR 주의사항

  • AND : 모든 조건이 참일 때 검색 결과가 나타납니다.
  • OR : 조건 중 하나라도 참이면 검색 결과가 나타납니다.

AND와 OR을 함께 사용할 경우, 괄호를 사용하여 우선순위를 명확하게 지정해주는 것이 좋습니다.

  • 우선순위: AND 연산자가 OR 연산자보다 우선순위가 높습니다. 그러므로, OR 연산자를 사용할 경우 괄호를 사용하여 우선순위를 명확하게 지정해주는 것이 좋습니다.
  • 중복 조건: 같은 열에 대해 중복 조건을 지정할 경우, AND와 OR에 따라 결과가 달라질 수 있습니다. 예를 들어, WHERE 조건절에서 "age > 30 OR age < 40 AND salary > 50000"라는 조건을 지정할 경우, 실제로는 "(age > 30 OR (age < 40 AND salary > 50000))"와 같은 우선순위로 계산됩니다. 따라서, 조건을 명확하게 지정하기 위해 괄호를 사용하는 것이 좋습니다.

date이 1990년 이전과 2021년 이후에서 distance(거리)가 1이상의 데이터를 출력하고 싶을 때, 아래 예시처럼하게 된다면, 괄호를 지정해주지 않았기에, 원하는 결과를 출력하지 못합니다. (distance가 1미만의 데이터가 출력됨)

#괄호 없는 쿼리
SELECT month, hpi_distance
FROM housecanary-com.sample.national_ts
WHERE date(month) < "1990-01-01" 
OR date(month) > "2021-01-01"
AND hpi_distance >=1

# 괄호 추가
SELECT month, hpi_distance
FROM housecanary-com.sample.national_ts
WHERE (date(month) < "1990-01-01" 
OR date(month) > "2021-01-01")
AND hpi_distance >=1

 

괄호를 추가했을 시, 처음에 원했던 결과를 출력할 수 있습니다.

 

예시 : String Column에서 사용하는 Like | IN

아래 예시에서 fips column이 '06013'과 '06075'을 둘다 출력하고 싶다면, IN을 사용할 수 있습니다. 

그리고 property_type에서 'C'를 포함한 데이터를 출력하고 싶다면, Like와 %를 사용할 수 있습니다.

  • %는 0개 이상의 모든 문자를 대체합니다. 따라서, %를 사용하면 모든 문자열을 대상으로 검색할 수 있습니다. 예를 들어, "LIKE 'a%'"는 'a'로 시작하는 모든 문자열을 검색합니다. 'a' 다음에 어떤 문자도 올 수 있습니다.
  • %를 여러 번 사용할 수도 있습니다. 이 경우, %는 0개 이상의 모든 문자를 대체합니다. 예를 들어, "LIKE '%a%'"는 어떤 위치에 'a'라는 문자가 하나 이상 있는 모든 문자열을 검색합니다.
  • %는 LIKE 연산자 외에도 다른 연산자와 함께 사용될 수 있습니다. 예를 들어, WHERE 절에서 "name LIKE '%John%'"과 같은 조건을 지정할 경우, 이름에 'John'이라는 문자열이 포함된 레코드를 검색합니다.
  • %를 사용하여 특정한 문자열을 검색하면, 검색 범위가 넓어져서 성능 문제가 발생할 수 있습니다. 따라서, %를 사용하는 경우에는 검색 대상을 좁히는 다른 조건과 함께 사용하는 것이 좋습니다.

# 괄호와 ,(comma)로 여러 개의 value를 토대로 출력할 수 있습니다.
# Like로 적힌 글자와 매칭되는 데이터를 출력합니다.
SELECT property_type
, state
, fips
FROM `housecanary-com.sample.block_value`
WHERE fips in ('06013', '06075') # 06013 또는 06075면 매칭
AND property_type like '%C%' # 'C'가 포함되면 매칭

 

이 블로그의 제작물을 불법 도용할 경우 법적 처벌을 받습니다.

 

Copyright © 미국 사는 수스의 코딩. All rights reserved.

반응형
Comments