본문 바로가기
DB

[SQL] SELECT문 명령어 - BETWEEN, IS NULL, IN

by chan10 2021. 2. 27.

BETWEEN AND (~부터 ~ 까지)

비교하려는 값이 지정한 범위에 포함되면 TRUE를 리턴하는 연산자 상한 값과 하한 값의 경계도 포함된다.

급여를 3500000보다 많이 받고 6000000보다 적게 받는 직원 이름과 급여 조회

SELECT EMP_NAME, SALARY

FROM EMPLOYEE

WHERE SALARY >= 3500000 AND SALARY <= 6000000;

SELECT EMP_NAME, SALARY

FROM EMPLOYEE

WHERE SALARY BETWEEN 3500000 AND 6000000;

 

LIKE (~로 시작,포함,끝나는 단어)

o  특정 패턴의 문자 값을 조회하는 기능으로 비교하려는 값이 특정 패턴을 만족하면 TRUE를 리턴 하는 연산자이다.

‘%’ ‘_’를 와일드카드로 사용한다.

o  사용 형식 : SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 LIKE 패턴;

% : 0개 이상의 임의의 문자 (0개 포함)

_ : 1개의 임의의 문자 표시

LIKE '%안녕' : 안녕(O), ,아아아아안녕(O), 안 녕(X)

-> 안녕으로 끝나는 문자열만 조회

LIKE '%' : 홍으로 시작하는 문자열

LIKE '%%' : 병을 포함하고 있는 문자열

LIKE '_안녕' : 안녕(X) 하안녕(O) 1안녕(O)

-> 안녕으로 끝나는 3글자 문자열

LIKE '___' : 3글자 문자열

LIKE '__' : 가운데 종을 포함하는 3글자 문자열

 

사원 이름에 가 포함된 사원을 조회

핸드폰의 앞 네 자리 중 첫 번호가 7
직원 이름과 전화번호 조회

SELECT *

FROM EMPLOYEE

WHERE EMP_NAME LIKE %%;

SELECT EMP_NAME, PHONE

FROM EMPLOYEE

WHERE PHONE LIKE _ _ _7%;

o  와일드 카드 문자와 패턴의 특수문자가 동일한 경우 어떤 것을 패턴으로 결정하는지 구분할 수 없다.

o  데이터로 처리할 와일드 카드 문자 패턴 기호 앞에 임의의 특수문자를 사용하고 ESCAPE로 등록하여 처리한다.

EMAIL ID 중 ‘_’의 앞이 3자리인 직원 이름, 이메일 조회

SELECT EMP_NAME, EMAIL

FROM EMPLOYEE

WHERE EMAIL LIKE _ _ _#_% ESCAPE #;

SELECT EMP_NAME, EMAIL

FROM EMPLOYEE

WHERE EMAIL LIKE _ _ _^_% ESCAPE ^;

  

NOT LIKE

o  LIKE와 반대되는 개념으로 지정한 특정 패턴에 만족하지 않는 데이터를 출력한다.

씨 성이 아닌 직원 사번, 이름, 이메일 조회

SELECT EMP_ID, EMP_NAME, EMAIL

FROM EMPLOYEE

WHERE EMP_NAME NOT LIKE ‘이%;

SELECT EMP_ID, EMP_NAME, EMAIL

FROM EMPLOYEE

WHERE NOT EMP_NAME LIKE ‘이%;

 

IS NULLIS NOT NULL (NULL인지 아닌지)

o  NULL 여부를 비교하는 연산자

o  NULL값은 아무 의미 없는 공값으로 연산처리가 되지 않는다.

o  IS NULL : 컬럼에 있는 NULL값을 조회하는 연산자

    IS NOT NULL : 컬럼에 있는 NULL이 아닌 값을 조회하는 연산자

부서 배치를 받지 않은 직원 조회

부서 배치를 받지 않았지만 보너스를 지급받는 직원 조회

SELECT *

FROM EMPLOYEE

WHERE AND DEPT_CODE IS NULL;

SELECT EMP_NAME, BONUS, DEPT_CODE

FROM EMPLOYEE

WHERE DEPT_CODE IS NULL AND BONUS IS NOT NULL;

 

IN / NOT IN (~이거나)

o  비교하려는 값 목록에 일치하는 값이 있으면 TRUE를 반환하는 연산자

o  다중행 서브 쿼리를 비교할 때 이용한다.

부서가 D5 또는 D6인 부서원들의 이름, 부서코드 조회

SELECT EMP_NAME, DEPT_CODE

FROM EMPLOYEE

WHERE DEPT_CODE=D6 OR DEPT_CODE=D8;

SELECT EMP_NAME, DEPT_CODE

FROM EMPLOYEE

WHERE DEPT_CODE IN (D6, D8);