2024. 8. 13. 22:12ㆍLanguage/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 a AND b' 방식으로 작성하며 'a' 와 'b' 사이의 속성 값을 가진 데이터들을 조회한다. 확인해본 결과 정확히는 'a' 이상 'b' 이하의 속성 값이 해당 범위에 속한다.
2-4. IN
'customers' 테이블에서 'age' 속성 값으로 '22' 또는 '31' 을 갖는 데이터를 조회해 보았다.
SELECT *
FROM customers
WHERE age in (22, 31)
'IN (값1, 값2, ...)' 방식으로 작성하며 괄호 안에 포함된 값들 중 하나를 가진 데이터를 조회한다.
2-5. LIKE
'customers' 테이블의 'name' 속성 값으로 '이' 로 시작하는(이씨 성) 값을 가진 데이터를 조회해 보았다.
SELECT *
FROM customers
WHERE name 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 : 비교 연산자의 ' <> ' 와 같은 의미로 조건식을 만족하지 않는 데이터를 조회한다.
'Language > SQL' 카테고리의 다른 글
[SQL] 카테고리별 필터링 - HAVING (0) | 2024.08.14 |
---|---|
[SQL] 데이터 정렬 - ORDER BY (0) | 2024.08.14 |
[SQL] 카테고리별 연산 - GROUP BY (0) | 2024.08.14 |
[SQL] 데이터 계산 - SUM, AVG, COUNT, MIN, MAX (0) | 2024.08.14 |
[SQL] 데이터 조회 - SELECT, FROM (0) | 2024.08.13 |