WHERE
일반적으로 SELECT 와 FROM 만으로 SQL 문을 작성하면, 모든 데이터가 조회되어 서버 부하를 일으킬 수 있습니다.
또, 원하는 조건의 레코드만 조회하고 싶은 경우가 대부분이기 때문에 WHERE 절을 활용하여 레코드를 필터링할 필요가 있습니다.
id | name | age | gender |
1 | 가이름 | 20 | 남성 |
2 | 나이름 | 21 | 여성 |
3 | 다이름 | 22 | 남성 |
예제의 users 테이블에서 gender 가 남성 인 경우 모든 컬럼을 조회하고 싶다면, 아래와 같이 입력하면 됩니다.
SELECT *
FROM users
WHERE gender = "남성";
이 SQL 문에 대한 결과 값은 다음과 같습니다.
id | name | age | gender |
1 | 가이름 | 20 | 남성 |
3 | 다이름 | 22 | 남성 |
연산자
WHERE 절은 연산자와 함께 사용됩니다.
연산자에는 비교연산자 , SQL연산자 , 논리연산자 가 있습니다.
비교연산자
연산자 | 설명 | 예시 |
= | 같다. | 컬럼 = 10 |
> | 보다 크다. | 컬럼 > 30 |
>= | 보다 크거나 같다. | 컬럼 >= "2022-12-31" |
< | 보다 작다. | 컬럼 < "2020-12-31" |
<= | 보다 작거나 크다. | 컬럼 <= 5 |
!= | 같지 않다. | 컬럼 != "남성" |
^= | 같지 않다. | 컬럼 ^= "김이름" |
<> | 같지 않다. | 컬럼 <> 10 |
NOT 칼럼 = | ~와 같지 않다. | NOT 컬럼 = 100 |
NOT 칼럼 > | ~보다 크지 않다. | NOT 컬럼 > 100 |
SQL연산자
* NULL 값이 있는 필드는 값이 없는 필드입니다.
연산자 | 설명 | 예시 |
BTWEEN A AND B | A와 B 사이에 있다. | 컬럼 BTWEEN 1 AND 3 |
IN () | 리스트 중 하나라도 일치한다. | 컬럼 IN ( 1,2,3 ) |
LIKE | 비교문자열과 형태가 일치한다. | 컬럼 LIKE "김이름" |
IS NULL | NULL 값이다. | 컬럼 IS NULL |
NOT BETWEEN A AND B | A와 B 사이에 있지 않다. | 컬럼 NOT BTWEEN 1 AND 3 |
NOT IN () | 비교문자열과 일치하지 않는다. | 컬럼 NOT IN ( 1,2,3 ) |
IS NOT NULL | NULL 값을 갖지 않는다. | 컬럼 IS NOT NULL |
논리연산자
연산자 | 설명 | 예시 |
AND | A조건과 B조건이 모두 충족된다. | 조건 AND 조건 |
OR | A조건과 B조건 중 하나라도 충족된다. | 조건 OR ( 조건 ) |
NOT | B조건이 아닐 때 레코드를 조회한다. | WHERE NOT 조건 |
다시 예제의 users 테이블에서 몇 가지 예제를 만들어 보겠습니다.
id | name | age | gender |
1 | 가이름 | 20 | 남성 |
2 | 나이름 | 21 | 여성 |
3 | 다이름 | 22 | 남성 |
name 이 가이름 인 레코드의 모든 컬럼을 조회하려면, 다음과 같이 입력합니다.
SELECT *
FROM users
WHERE name = "가이름";
이 SQL 문에 대한 결과 값은 다음과 같습니다.
id | name | age | gender |
1 | 가이름 | 20 | 남성 |
age 가 20 이거나 21 인 레코드의 id 및 name 을 조회하려면, 다음과 같이 입력합니다.
SELECT id, name
FROM users
WHERE age = 20
OR (age = 21);
이 SQL 문에 대한 결과 값은 다음과 같습니다.
id | name | age | gender |
1 | 가이름 | 20 | 남성 |
2 | 나이름 | 21 | 여성 |
age 가 20 과 21 사이에 있는 레코드의 gender 를 조회하려면, 다음과 같이 입력합니다.
SELECT gender
FROM users
WHERE age BETWEEN 20 AND 21;
이 SQL 문에 대한 결과 값은 다음과 같습니다.
id | name | age | gender |
1 | 가이름 | 20 | 남성 |
2 | 나이름 | 21 | 여성 |
이러한 조건을 동시에 충족하는 값을 조회하려면, AND 를 사용합니다.
SELECT *
FROM users
WHERE name = “가이름”
AND age BETWEEN 20 AND 21;
이 SQL 문에 대한 결과 값은 다음과 같습니다.
id | name | age | gender |
1 | 가이름 | 20 | 남성 |
모든 조건을 충족하는 레코드가 하나도 없는 경우, 조회 결과가 빈 값으로 나오게 됩니다.
'SQL' 카테고리의 다른 글
SQL 기초 IN, BTWEEN 연산자 (0) | 2022.06.03 |
---|---|
SQL 기초 LIKE 연산자 및 와일드카드 (0) | 2022.06.03 |
SQL 기초 MIN, MAX, COUNT, AVG, SUM 함수 (0) | 2022.06.03 |
SQL 기초 ORDER BY, GROUP BY 절 (0) | 2022.06.03 |
SQL 기초 문법 및 기본 개념 (0) | 2022.06.02 |