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
반응형