[SQL] 데이터 필터링 - WHERE

2024. 8. 13. 22:12Language/SQL

 데이터를 조회하는 기본적인 방법은 배웠으니 이번엔 쿼리에 조건을 달아 특정 조건에 부합하는 결과를 조회해 보도록 하자. 참! 'WHERE' 은 'SELECT, FROM' 과 함께 SQL 의 데이터 조작 언어(DML, Data Mainpulation Language) 중 하나이다.

 

1. 기본 문법

SELECT 조회할 컬럼명
FROM 조회할 컬럼이 위치한 테이블명
WHERE 조건식

 

'조건식' 에는 일반적인 특정 값 지정부터 비교 연산이나 논리 연산을 활용한 다양한 조건식들을 사용할 수 있다.

 

 

2. 사용 예시

2-1. 특정 속성 값을 가진 데이터 조회

 'food_orders' 테이블에서 'cuisine_type' 값이 'Korean' 인 데이터들을 조회해 보았다. 

SELECT *
FROM food_orders
WHERE cuisine_tye = 'Korean'

특정 속성 값을 가진 데이터 조회

 

' = ' 를 사용해 특정 속성 값을 갖는 데이터들을 조회할 수 있다. 예시에서는 숫자가 아닌 문자를 사용했는데, 당연히 숫자도 사용 가능하다. 숫자를 사용할 경우 작은 따옴표(' ')를 사용하지 않아도 된다.

 

2-2. 비교 연산을 통한 데이터 필터링

 'food_orders' 테이블에서 'cuisine_type' 값이 'Korean' 이 아닌 데이터들을 조회해 보았다.

SELECT *
FROM food_orders
WHERE cuisine_type <> 'Korean'

비교 연산을 통한 데이터 조회

 

사실 위에서 사용한 ' = ' 도 비교 연산자의 한 종류이지만 기본적인 조건문에 사용되기에 나머지 비교 연산자와 따로 정리하였다.

  • <> : '같지 않음', Java 에서는 ' != ' 인 연산자이다. 평소 사용하던 연산자와 다른 방식으로 사용하기에 해당 연산자로 예시를 작성했다.
  • > : '크다', 사실 해석 기준에 따라 '작다' 라는 의미를 가질수 있는 연산자이지만 여기서는 '지정 값보다 큰 속성 값을 가진 데이터를 조회한다' 라는 의미를 가지기 때문에 해당 의미를 고정적으로 갖는다.
  • < : '작다', 역시 해석 기준에 따라 '크다' 라는 의미를 가질 수 있는 연산자이지만 여기서는 '지정 값보다 작은 속성 값을 가진 데이터를 조회한다' 라는 의미를 가지기 때문에 해당 의미를 고정적으로 갖는다.
  • >= : '크거나 같다'
  • <= : '작거나 같다'

※ 참고 : 만약 NULL 값을 제외한 데이터를 원한다면 조건식에 '컬럼명 <> NULL' 이 아닌 '컬럼명 IS NOT NULL' 을 사용해야 원하는 결과를 얻을 수 있을 것이다. 

 

2-3. BETWEEN

 'food_orders' 테이블의 'price'  값이 20,000 에서 21,000 사이인 데이터를 조회해 보았다.

SELECT *
FROM food_orders
WHERE price BETWEEN 20000 AND 21000

BETWEEN 을 사용한 데이터 조회

 

'BETWEEN a AND b' 방식으로 작성하며 'a' 와 'b' 사이의 속성 값을 가진 데이터들을 조회한다. 확인해본 결과 정확히는 'a' 이상 'b' 이하의 속성 값이 해당 범위에 속한다.

 

2-4. IN

 'customers' 테이블에서 'age' 속성 값으로 '22' 또는 '31' 을 갖는 데이터를 조회해 보았다.

SELECT *
FROM customers
WHERE age in (22, 31)

IN 을 사용한 데이터 조회

 

'IN (값1, 값2, ...)' 방식으로 작성하며 괄호 안에 포함된 값들 중 하나를 가진 데이터를 조회한다.

 

2-5. LIKE

 'customers' 테이블의 'name' 속성 값으로 '이' 로 시작하는(이씨 성) 값을 가진 데이터를 조회해 보았다.

SELECT *
FROM customers
WHERE name LIKE '이%'

LIKE 를 사용한 데이터 조회

 

'LIKE 값의일부' 방식으로 작성한다. 값의 일부는 ' % (나머지를 의미)' 를 사용해 표현식을 작성하는데 아래와 같은 방식으로 사용한다. 참고로 숫자든 문자든 작은 따옴표를 사용해 표현식을 작성해야 한다(테스트 해보니 작은 따옴표 없이 숫자를 표현하면 에러 발생, 아마 숫자의 경우 ' % ' 는 백분율로 사용되는 기호라서 그런 것 같음).

  • '이%' or '5%' : 특정 문자(숫자)로 시작되는 값을 의미
  • '%이' or '%5' : 특정 문자(숫자)로 끝나는 값을 의미
  • '%이%' or '%5%' : 특정 문자(숫자)를 포함하는 값을 의미
  • '이%자' or '1%5' : 특정 문자(숫자)들로 시작, 끝나는 값을 의미

 

2-6. 논리연산을 사용, 다수의 조건을 통한 데이터 필터링

 'customers' 테이블에서 '윤 씨' 성을 가진 30대 이상의 남성을 만족하는 데이터를 조회해 보았다.

SELECT *
FROM customers
WHERE name LIKE '윤%' AND age >= 30 AND gender = 'male'

논리 연산을 통한 데이터 조회

 

논리 연산을 사용하면 다수의 조건식을 WHERE 에 지정할 수 있고, 연산자에 따라 다양한 결과를 도출 할 수 있다.

  • AND : 'AND' 좌우 조건식을 모두 만족하는 데이터를 조회한다.
  • OR : 'OR' 좌우 조건식 중 하나 이상을 만족하는 데이터를 조회한다.
  • NOT : 비교 연산자의 ' <> ' 와 같은 의미로 조건식을 만족하지 않는 데이터를 조회한다.