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%'; 

 

+ Recent posts