WHERE (조건절)
형식
SELECT 컬럼명
FROM 테이블명
WHERE 조건식;
비교연산자
같다 : =
다르다 : <>, !=, ^=
크다 : >
작다 : <
크거나 같다 : >=
작거나 같다 : <=
형식
SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 비교연산자 검색값;
예시
-- hr 스키마
-- 이름 -> Julia
SELECT first_name, last_name FROM employees WHERE first_name = 'Julia';
-- 급여가 $9000 이상인 사원
SELECT first_name, salary FROM employees WHERE salary >= 9000;
-- 이름이 Shanta 보다 큰 이름 (이름도 비교가능)
SELECT first_name FROM employees WHERE first_name > 'Shanta';
-- 이름의 첫 스팰링이 J보다 큰 이름
SELECT first_name FROM employees WHERE first_name >= 'J';
-- 2007년 12월 31일 이후에 입사한 사원을 출력
-- 날짜 형식 비교시 날짜 -> '07/12/31' 이런식으로 써줘야 한다.
SELECT first_name, hire_date FROM employees WHERE hire_date > '07/12/31';
-- TO_DATE -> DATE -> String으로 변환
SELECT first_name, hire_date FROM employees WHERE hire_date > TO_DATE( '071231', 'yymmdd');
IS NULL( = NULL ), IS NOT NULL( != NULL ) : 값이 없는 상태 검색하기
형식
SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 IS NULL;
SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 IS NOT NULL;
예시
-- 매니저가 없는 사원
SELECT first_name FROM employees WHERE manager_id IS NULL;
-- = , '' 사용할 수 없다!!!
-- SELECT first_name FROM employees WHERE manager_id = NULL;
-- SELECT first_name FROM employees WHERE manager_id = '';
-- 매니저가 있는 사원
SELECT first_name FROM employees WHERE manager_id IS NOT NULL;
AND : 모두 만족하면 검색하기
형식
SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 = 검색값 AND 컬럼명 = 검색값;
예시
-- 이름 John, 월급은 5000이상
SELECT first_name, salary FROM employees WHERE first_name = 'John' AND salary >= 5000;
-- 입사일자가 06/01/01 ~ 06/12/31 사이인 사원
SELECT first_name, hire_date FROM employees
WHERE hire_date >= '06/01/01' AND hire_date <= '06/12/31';
OR : 하나라도 만족하면 검색하기
형식
SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 = 검색값 OR 컬럼명 = 검색값;
예시
-- 이름이 Shanta이거나 Vollman인 사원 검색
SELECT first_name FROM employees WHERE first_name = 'Shanta' OR first_name = 'Vollman';
IN : 여러 데이터로 검색하기
형식
SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 IN (검색값, 검색값);
SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 NOT IN (검색값, 검색값);
예시
-- 급여가 8000, 3200, 6000 인 직원들
SELECT first_name, salary FROM employees WHERE salary IN (8000, 3200, 6000);
-- 급여가 8000, 3200, 6000 아닌 직원들
SELECT first_name, salary FROM employees WHERE salary NOT IN (8000, 3200, 6000);
ANY : 여러 데이터로 검색하기(=OR, =IN)
형식
SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 = ANY(검색값, 검색값);
예시
-- 급여가 8000, 3200, 6000인 직원들
SELECT first_name, salary FROM employees WHERE salary = ANY(8000, 3200, 6000);
BETWEEN .. AND(범위 연산자) : 범위에 만족하면 검색하기
형식
SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 BETWEEN 검색값 AND 검색값;
SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 NOT BETWEEN 검색값 AND 검색값;
예시
-- 월급이 3200에서 9000사이인 사원 검색
SELECT first_name, salary FROM employees -- WHERE salary >= 3200 AND salary <= 9000;
WHERE salary BETWEEN 3200 AND 9000; -- 위와 동일
-- 월급이 3200에서 9000사이인 사원을 제외한 사원 검색
SELECT first_name, salary FROM employees WHERE salary NOT BETWEEN 3200 AND 9000;
LIKE : 포함된 문자로 검색하기 ★★★★★
형식
SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 LIKE '%검색값&';
참고
'문자%' : 문자로 시작하는 값
'%문자' : 문자로 끝나는 값
'%문자%' : 문자가 포함된 값
'_' : 지정한 위치에 1자리 문자면 무엇이든 가능
예시
-- _ 한글자가 어떠한 문자든 허용
SELECT first_name FROM employees WHERE first_name LIKE 'G_ra_d';
-- % 글자수에 제한없이 모두 허용
SELECT first_name FROM employees WHERE first_name LIKE 'K%y';
-- 이름의 시작이 K인 이름 모두 허용
SELECT first_name FROM employees WHERE first_name LIKE 'K%';
-- a 들어있는 이름 모두 허용
SELECT first_name FROM employees WHERE first_name LIKE '%a%';