DB/Oracle
[Oracle DB] WHERE
로아다
2023. 4. 21. 05:31
728x90
반응형
SELECT 컬럼명 FROM 테이블명 WHERE 조건절;
- SELECT문 뒤에 WHERE절을 추가하여 해당 조건을 만족하는 행만 조회할 수 있다.
- 조건에 사용되는 데이터는 대소문자에 영향을 받으므로 주의해야 한다.
- 오라클의 비교 연산자와 논리 연산자를 사용해 조건절을 만들 수 있다.
비교 연산자
= : 같으면 true, (==은 안된다.)
<, >, <=, >= : 비교
!=, <>, ^= : 다르면 true
논리 연산자
AND, OR, NOT
SELECT * FROM employees WHERE job_id = 'FI_ACCOUNT';
-- 숫자 타입 비교
SELECT * FROM employees WHERE salary >= 10000;
SELECT * FROM employees WHERE salary <= 5000;
-- 문자 타입 비교
SELECT * FROM employees WHERE first_name < 'C';
SELECT * FROM employees WHERE first_name >= 'T';
SELECT * FROM employees WHERE job_id = 'SH_CLERK';
SELECT * FROM employees WHERE job_id != 'SH_CLERK';
SELECT * FROM employees WHERE job_id <> 'SH_CLERK';
SELECT * FROM employees WHERE job_id ^= 'SH_CLERK';
-- 날짜 타입 비교
SELECT * FROM employees WHERE hire_date >= '2007/09/09';
-- AND, OR, NOT
SELECT * FROM employees
WHERE hire_date >= '2007/09/09' AND job_id = 'SH_CLERK';
SELECT * FROM employees
WHERE job_id = 'SH_CLERK' OR job_id = 'IT_PROG';
컬럼명 BETWEEN A AND B : 해당 컬럼 값이 A와 B사이인 경우 true
SELECT * FROM employees WHERE salary BETWEEN 2000 AND 3000;
SELECT * FROM employees WHERE hire_date BETWEEN '05/01/01' AND '05/12/31';
컬럼명 IN (A, B, C ...) : () 안의 내용에 해당 값이 있으면 true
SELECT * FROM employees WHERE department_id IN (30, 60, 100);
SELECT * FROM employees WHERE job_id IN ('SH_CLERK', 'FI_ACCOUNT');
( )안의 나열하는 장소에는 다른 쿼리문이 들어갈 수 있다. (서브 쿼리)
SELECT * FROM employees WHERE department_id
IN (SELECT DISTINCT department_id FROM employees WHERE job_id IN ('SH_CLERK', 'FI_ACCOUNT'));
NULL 비교법 (IS)
-- NULL은 크기 비교가 불가능하기 때문에 일반 비교 연산자를 통해 연산할 수 없다.
SELECT * FROM employees WHERE commission_pct = null;
-- 해당 컬럼의 행이 NULL인 경우를 조회하고 싶다면 IS를 사용해야 한다.
SELECT first_name, salary, NVL(commission_pct, 0) AS commission FROM employees
WHERE commission_pct IS NULL;
-- 반대로, NULL이 아닌경우를 조회하고 싶을 때는 IS NOT NULL을 사용한다.
SELECT first_name, commission_pct FROM employees
WHERE commission_pct IS NOT NULL;
사원 번호가 홀수인 사원들만 조회해보기 (MOD 함수)
-- 데이터베이스에서 %는 연산자가 아니므로 나머지를 구하고 싶다면 MOD() 함수를 사용해야 한다.
SELECT * FROM employees WHERE MOD(employee_id, 2) = 1;
SELECT * FROM employees WHERE MOD(employee_id, 2) = 0;
조건으로 LIKE 사용하기
- 데이터의 일부분이 일치하는 내용을 조회할 수 있다.
- % : 길이 제한 없이 문자가 있어도 되고 없어도 되는 자리
- _ : 어떠한 문자든 한 글자가 반드시 존재해야하는 자리
SELECT first_name FROM employees WHERE first_name LIKE 'A%';
SELECT first_name FROM employees WHERE first_name LIKE '_a%';
SELECT first_name FROM employees WHERE first_name LIKE '__a%';
SELECT first_name FROM employees WHERE first_name LIKE '%a';
SELECT first_name FROM employees WHERE first_name LIKE '%a_';
SELECT hire_date FROM employees WHERE hire_date LIKE '07/%';
SELECT hire_date FROM employees WHERE hire_date LIKE '%/_2/%';
-- UPPER(value) : 모두 대문자로 변환하는 함수
-- LOWER(value) : 모두 소문자로 변환하는 함수
728x90
반응형