최보름달

[SQL] where절 SQL연산자 (BETWEEN, IN, LIKE, IS NULL) 본문

문송한 회사생활/SQL 공부

[SQL] where절 SQL연산자 (BETWEEN, IN, LIKE, IS NULL)

PieMoon 2020. 8. 8. 15:01

SQL 연산자

SQL 연산자는 SQL 문장에서 사용하도록 기본적으로 예약되어 있는 연산자로, 모든 데이터 타입에 대해서 연산이 가능하다. 

 

SQL 연산자 종류

연산자 의미
BETWEEN A AND B A와 B의 값이 포함된 사이값
IN (list) 리스트에 있는 값 중에서 일치하는 값
LIKE '비교문자열' 비교 문자열과 형태가 일치하는 값
IS NULL NULL 값

 

BETWEEN A AND B

-- 키가 170 이상, 180 이하인 선수 정보를 찾아라

SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키
FROM   PLAYER
WHERE  HEIGHT BETWEEN 170 AND 180 ;

 

IN

-- 팀 아이디가 K02, K07인 선수를 찾아라

SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키
FROM   PLAYER
WHERE  TEAM_ID IN ('K02', 'K07') ;


-- 사원 테이블에서 
-- JOB이 MANAGER 이면서 20번 부서에 속하거나, 
-- JOB이 CLERK 이면서 30번 부서에 속하는 사원 정보를 찾아라

SELECT ENAME, JOB, DEPTNO
FROM   EMP
WHERE  (JOB, DEPTNO) IN (('MANAGER', 20), ('CLERK', 30)) ;

IN 연산자는 SQL문장을 짧게 만들어주면서도 성능이 잘 나오는 유용한 연산자이다. 

 

LIKE

-- 포지션이 MF인 선수를 찾아라. 

SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키
FROM   PLAYER
WHERE  POSITION LIKE 'MF' ;

LIKE는 비교 연산자 '=' 를 사용해서 작성해도 같은 결과를 얻을 수 있다. 

LIKE는 와일드카드를 사용할 수 있다. 와일드카드란 한 개 혹은 0개 이상의 문자를 대신해서 사용하기 위한 특수문자다. 

  • % : 0개 이상의 어떤 문자
  • _ : 1개인 단일 문자
-- 선수이름이 장~ 으로 시작하는 선수를 찾아라. 

SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키
FROM   PLAYER
WHERE  PLAYER_NAME LIKE '장%' ;

 

IS NULL

NULL은 존재하지 않는 것으로 확정되지 않은 값을 표현할 때 사용한다. 

NULL의 특성은 다음과 같다. 

  • NULL 값과 수치연산은 NULL값을 리턴한다.
  • NULL 값과의 비교연산은 거짓(FALSE)를 리턴한다.
  • 어떤 값과도 비교할 수 없으며, 특정 값보다 크다, 적다라고 표현할 수 없다. 
-- 포지션이 NULL인 선수를 찾아라. 

SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키
FROM   PLAYER
WHERE  POSITION = NULL ; -- 틀린 쿼리이다. where 조건절이 거짓(false)되어 데이터가 추출되지 않는다. 


SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키
FROM   PLAYER
WHERE  POSITION IS NULL ; -- 옳은 쿼리이다. 

 

 

 

kdata 한국데이터진흥원에서 출간한 SQL 전문가 가이드 2013 Edition을 요약했습니다.