- IN (list) : OR와 비슷한 역할을 한다. (리스트에 있는 값 중에서 어느 하나라도 일치하면 된다.)
부정 : NOT IN (list) (리스트의 값 모두 포함하지 않는다)
- BETWEEN A AND B : a와 b의 값 사이에 있으면 된다. (a와 b 값이 포함됨)
부정 : NOT BETWEEN A AND B (A와 B 사이의 값을 포함하지 않는다)
- LIKE : 비교문자열과 형태가 일치하면 된다. (와일드카드 문자 %, _ 사용)
부정 : NOT LIKE
- IS NULL : NULL 값인 경우
부정 : NOT IS NULL
IN
직업이 SALESMAN 또는 MANAGER 인 사원을 알아보려고 할 때,
select * from emp where job = 'SALESMAN' or job = 'MANAGER';
위와 같이 입력해도 되지만 'or job = ' 를 여러번 입력해주어야 하는 번거로움이 있다.
때문에 조건식에 많은 조건이 들어가는 경우 IN (list)를 이용 해주면 간편하다.
list안의 조건을 만족하는 것을 자동으로 보여준다.
select * from emp where job in('SALESMAN','MANAGER');
예시 6
두 SQL 문 모두 같은 결과를 출력한다.
부정의 경우 NOT IN (list) 로 사용되는데 list에 있는 것이 아닌 경우만 출력된다. (모두 아닌 경우)
BETWEEN A AND B
between a and b 연산자는 a와 b 사이의 결과를 도출한다(a와 b도 포함한다)
select * from emp where sal between 2000 and 3000;
예시 7
위 결과도 마찬가지로
select * from emp where sal >= 2000 and sal <= 3000;
처럼 표현할 수도 있지만 between 연산자를 이용하면 편리하다.
부정의 경우 NOT BETWEEN A AND B 로 사용. A와 B 사이의 값을 포함하지 않는 결과를 보여준다 (A미만 or B초과)
LIKE
LIKE 연산자는 와일드카드 문자를 사용하여 특정한 값 검색을 할 때 같이 사용되는 문자를 말한다 패턴을 정의하여 검색을 효율적으로 할 수 있다.
- % : 개수에 관계없이 모든 문자 ex) S% => S로 시작하는 모든 문자열. S도 포함 - _ : 특정한 위치에 위치한 문자(한글자) ex) _S => 두번째 글자가 S인 문자. / _S% => 두번째글자가 S로 시작하는 모든 문자열
이를 이용하여 사원 이름에 S가 포함되지 않는 사원 데이터를 출력해보도록 하자.
select * from emp where ename not like ('%S%');
예시 8
이번에는 2번째 글자가 A로 시작하는 모든 사원 데이터를 출력해본다.
select * from emp where ename like('_A%');
예시 9
부정의 경우 NOT LIKE로 사용하고 특정 문자를 포함하지 않는 결과를 출력해준다.
IS NULL
NULL은 ‘현재 무슨 값인지 확정되지 않은 상태’ 이거나 ‘값 자체가 존재하지 않는 상태’를 나타내는 데이터에 사용한다.
NULL 예시
where 문에서는 조건식의 결과가 null이 되면 출력되지 않는다.
때문에 값이 존재하지 않는 null과의 연산을 하게 되면 결과는 null이 되므로 출력되지 않는다.
ex) null + 100 = null
때문에 이 null 값을 확인하기 위해서는 IS NULL 연산자를 사용한다.
select * from emp where comm is not null;
위 예문에서는 comm(추가수당) 이 null 이 아닌 사원 데이터를 출력한다.
예시 10
0인 데이터를 출력하더라도 null 인 데이터는 출력하지 않는 것을 볼 수 있다.