Kong Eunho

3.4 WHERE

2025년 08월 05일 18시
카테고리 - TIL, sqld, 3_SQL_기본


3.4.1 WHERE절

WHERE : 특정 조건을 만족하는 행만을 대상으로 연산을 수행한다. INSERT에는 사용할 수 없다. 먼저 수행하는 FROM절에서 정의한 테이블의 별명은 사용할 수 있으나 후에 수행하는 SELECT절에서 정의한 칼럼의 별명은 사용할 수 없다.

SELECT 칼럼1 [[, 칼럼2] … ] FROM 테이블1 [[, 테이블2] … ] WHERE 조건식;

SELECT * FROM TEST WHERE NUM = 3; : TEST 테이블에서 NUM이 3인 모든 행을 조회.

UPDATE TEST SET SUBJECT = ‘sqld’ WHERE NUM = 3; : TEST 테이블에서 NUM이 3인 행의 SUBJECT 칼럼을 ‘sqld’로 변경.

DELETE FROM TEST WHERE NUM IS NULL; : TEST 테이블에서 NUM이 NULL인 행을 삭제.

3.4.2 비교연산자

비교연산자 : 두 값이 같은지를 비교하거나 크기를 비교하여 참, 거짓을 반환하는 연산자. 비교 대상이 다중행인 경우 복합적인 비교를 위해 별도의 연산자(IN, EXISTS, ALL, ANY)를 사용할 수 있다. NULL 값에 대해서는 동작하지 않는다.

① 단일행 비교연산자

연산자 설명
= 두 값이 같으면 참을 반환.
< 첫 번째 값이 두 번째 값보다 작으면 참을 반환.
<= 첫 번째 값이 두 번째 값보다 작거나 같으면 참을 반환.
> 첫 번째 값이 두 번째 값보다 크면 참을 반환.
>= 첫 번째 값이 두 번째 값보다 크거나 같으면 참을 반환.
IS NULL NULL이면 참을 반환.

② 다중행 비교연산자

연산자 설명
IN 리스트 중 동일한 값이 하나라도 있으면 참을 반환.
WHERE NUM IN (10, 20, 30)
EXISTS 서브쿼리를 대상으로, 결과가 한 건이라도 있으면 참을 반환.
WHERE EXISTS (SELECT * FROM TEST)
ALL 단일행 비교연산자와 결합하여 리스트가 모두 참이면 참을 반환.
WHERE NUM < ALL(10, 20, 30)
ANY 단일행 비교연산자와 결합하여 리스트가 하나라도 참이면 참을 반환.
WHERE NUM < ANY(10, 20, 30)


3.4.3 부정 비교연산자

부정 비교연산자 : 두 값이 서로 다른지를 비교하여 참, 거짓을 반환하는 연산자. 비교 대상이 다중행인 경우 복합적인 비교를 위해 별도의 연산자(NOT IN, NOT EXISTS)를 사용할 수 있다. NULL 값에 대해서는 동작하지 않는다.

① 단일행 부정 비교연산자

연산자 설명
!= 두 값이 서로 다르면 참을 반환.
^=
<>
IS NOT NULL NULL이 아니면 참을 반환.

② 다중행 부정 비교연산자

연산자 설명
NOT IN 리스트 중 동일한 값이 하나도 없으면 참을 반환.
WHERE NUM NOT IN (10, 20, 30)
NOT EXISTS 서브쿼리를 대상으로, 결과가 한 건도 없으면 참을 반환.
WHERE NOT EXISTS (SELECT * FROM TEST)


3.4.4 SQL 연산자

SQL 연산자 : SQL에서 사용되는 특수한 연산자.

연산자 설명
BETWEEN
A AND B
A보다 크거나 같고 B보다 작거나 같으면 참을 반환.
LIKE 패턴문자열로 문자 검색 시 사용.
(% : 0개 이상의 문자, _ : 임의의 1개 문자.)
WHERE NAME LIKE 'E%O'
WHERE NAME LIKE '_____'


3.4.5 부정 SQL 연산자

연산자 설명
NOT BETWEEN
A AND B
A보다 작거나 B보다 크면 참을 반환.
NOT LIKE 패턴과 매칭되는 것이 하나도 없으면 참을 반환.


3.4.6 논리연산자

연산자 설명
AND 연결된 모든 조건이 참이면 참을 반환.
OR 연결된 조건 중에 하나라도 참이면 참을 반환.
NOT 뒤에 오는 식의 부정을 반환.
◀ 이전 글 TIL, sqld, 3_SQL_기본
3.3.7 CASE
2025-08-04
목록으로 다음 글 ▶ TIL, sqld, 3_SQL_기본
3.5 GROUP BY, HAVING
2025-08-05