3.4 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인 행을 삭제.
비교연산자 : 두 값이 같은지를 비교하거나 크기를 비교하여 참, 거짓을 반환하는 연산자. 비교 대상이 다중행인 경우 복합적인 비교를 위해 별도의 연산자(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) |
부정 비교연산자 : 두 값이 서로 다른지를 비교하여 참, 거짓을 반환하는 연산자. 비교 대상이 다중행인 경우 복합적인 비교를 위해 별도의 연산자(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) |
SQL 연산자 : SQL에서 사용되는 특수한 연산자.
연산자 | 설명 |
---|---|
BETWEEN A AND B |
A보다 크거나 같고 B보다 작거나 같으면 참을 반환. |
LIKE | 패턴문자열로 문자 검색 시 사용. (% : 0개 이상의 문자, _ : 임의의 1개 문자.) WHERE NAME LIKE 'E%O' WHERE NAME LIKE '_____' |
연산자 | 설명 |
---|---|
NOT BETWEEN A AND B |
A보다 작거나 B보다 크면 참을 반환. |
NOT LIKE | 패턴과 매칭되는 것이 하나도 없으면 참을 반환. |
연산자 | 설명 |
---|---|
AND | 연결된 모든 조건이 참이면 참을 반환. |
OR | 연결된 조건 중에 하나라도 참이면 참을 반환. |
NOT | 뒤에 오는 식의 부정을 반환. |