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 | 뒤에 오는 식의 부정을 반환. |