STUDY/SQL

WHERE 조건(SQL연산자 : 조회 조건 확정하기)

sorrow16 2021. 3. 5. 16:21

SQL 연산자는 비교 연산자보다 조금 더 확장된 연산자로 자주 쓰는 연산자로 종류는 아래와 같습니다.

구분연산자의미
SQL 연산BETWEEN a AND b a와 b 사이에 값이 있다(a,b 값 포함)
IN (list)list 중 어느 값이라도 일치한다
LIKE '비교 문자'비교 문자와 형태가 일치한다(%, _ 사용)
IS NULLnull 값을 갖는다

 

BETWEEN 연산자

 

BETWEEN 연산자는 두 값의 범위에 해당하는 행을 출력할 때 사용합니다. a 이상 b 이하의 값을 조회하라는 의미로 >=와 <= 연산자를 함께 사용한 것과 같습니다.

 

예시> employees 테이블에서 salary가 10,000 이상이고, 20,000 이하인 직원 정보를 출력하세요.

 

[입력문]

 

SELECT * FROM employees WHERE salary BETWEEN 10000 AND 20000;

 

 

[실행결과]

 

 

 

 

IN 연산자

 

조회하고자 하는 데이터 값이 여러 개일 때 사용합니다. = 연산자와 유사하지만 = 연산자는 조회 조건으로 데이터 값을 하나만 지정할 수 있는데 반해 IN 연산자는 데이터 값을 여러 개, 즉 목록(list)으로 지정할 수 있습니다.

 

예시> employees 테이블에서 salary가 10000,17000, 24000인 직원 정보를 출력하세요.

 

[입력문]

 

SELECT * FROM employees WHERE salary IN(10000, 170000, 24000);

 

 

[실행결과]

 

 

 

※ WHERE 절의 조건식이 목록이기 때문에 IN 연산자 대신 = 연산자를 사용하면 오류가 발생합니다.

 

LIKE 연산자

 

LIKE 연산자는 조회 조건 값이 명확하지 않을 때 사용합니다. LIKE 연산자는 '~와 같다'라는 의미입니다.

 

[LIKE 연산자 특징]

  • LIKE 연산자는 %와 _ 같은 기호 연산자(wild card)와 함께 사용합니다.
  • 조건에는 문자나 숫자를 포함할 수 있습니다.
  • %는 '모든 문자'라는 의미고, _는 '한글자' 라는 의미입니다.

예시> employees 테이블에서 job_id 값이 AD를 포함하는 모든(%) 데이터를 조회하세요.

 

[입력문]

SELECT * FROM employees WHERE job_id LIKE 'AD%';

 

 

※ 'AD%' 는 맨 앞에 AD라는 문자 값을 가지면서 그 뒤로 모든 문자(%)를 포함하는 데이터

 

[실행결과]

 

 

 

 

 

예시> employees 테이블에서 AD를 포함하면서 AD 뒤에 따라오는 문자열이 3자리인 데이터 값을 갖는 직원 정보를 조회하세요(AD + 3자리 데이터 값)

 

[입력문]

 

SELECT * FROM employees WHERE job_id LIKE 'AD___';

 

 

[실행결과]

 

 

※ 'AD_ _ _' 는 AD 뒤에 따라오는 문자열이 3자리인 데이터

 

IS NULL 연산자

 

IS NULL 연산자는 데이터 값이 null 인 경우를 조회하고자 할 때 사용합니다. null은 값이 지정되지 않았기 때문에 값이 없어 알 수 없는 값을 말합니다.

 

예시> employees 테이블에서 manager_id가 null 값인 직원 정보를 출력해 보세요.

 

[입력문]

 

SELECT * FROM employees WHERE manager_id IS NULL;

 

 

[실행결과]