728x90
SELECT문에 WHERE절을 추가하여 특정 조건에 일치하는 데이터만 조회할 수 있다.
비교 연산자
두 개의 값을 비교할 때 사용하는 연산자를 비교 연산자라 한다.
=
!=
<>
^=
>
>=
<
<=
-- employees 테이블에서 월급이 10000 이상인 사원의 사원번호, 이름을 조회
SELECT employee_id,last_name
FROM employees
WHERE salary >= 10000;
-- employees 테이블에서 이름이 King 인 사원의 사원번호,이름을 조회
SELECT employee_id,last_name
FROM employees
WHERE last_name = 'King';
-- employees 테이블에서 입사일이 2008년도 이후에 입사한 사원의 사원번호, 이름 조회
SELECT employee_id,last_name
FROM employees
WHERE hire_date > '07/12/31';
💡 Oracle은 기본적으로 날짜 데이터를 RR/MM/DD 형식으로 관리한다
💡 SQL문은 대소문자를 구별하지 않지만 데이터 값인 리터럴은 대소문자를 구별한다.
BETWEEN a AND b 연산자
-- 월급이 7000과 8000 사이에 있는 사원 조회
SELECT employee_id,last_name
FROM employees
WHERE salary BETWEEN 7000 AND 8000;
-- 2007년부터 2008년 사이에 입사한 사원 조회
SELECT employee_id,last_name
FROM employees
WHERE hire_date BETWEEN '07/01/01' AND '08/12/31';
IN 연산자
IN 연산자는 내부적으로 OR 연산자로 변환되어 처리한다.
-- 사원번호가 100 또는 200 또는 300 사원 조회
SELECT employee_id,last_name
FROM employees
WHERE employee_id IN ( 100,200,300 );
-- King 또는 Abel 또는Jones 이름을 가진 사원 조회
SELECT employee_id,last_name
FROM employees
WHERE last_name IN ( 'King','Abel','Jones');
-- 입사일이 2001/01/13 또는 2007/02/07 인 사원 조회
SELECT employee_id,last_name
FROM employees
WHERE hire_date IN ( '01/01/13','07/02/07');
LIKE 연산자
LIKE 연산자는 전체가 아닌 임의의 문자만 일치하더라도 데이터 검색을 가능하게 해준다.
-- 사원들 중에서 이름이 대문자 J로 시작하는 사원만 조회
SELECT employee_id,last_name
FROM employees
WHERE last_name LIKE 'J%';
-- 사원들 중에서 이름이 'ai' 글자를 포함하는 사원만 조회
SELECT employee_id,last_name
FROM employees
WHERE last_name LIKE '%ai%';
-- 사원들의 이름 중에서 두 번째 문자가 b인 사원만 조회
SELECT employee_id,last_name
FROM employees
WHERE last_name LIKE '_b%';
-- 사원들 이름 중에서 마지막 글자가 소문자 d 로 끝나고 반드시 4글자로 된 사원만 조회
SELECT employee_id,last_name
FROM employees
WHERE last_name LIKE '___d';
만약 검색하려는 문자열에 와일드카드 문자%
_
가 포함된 경우, 와일드카드 문자로 처리하지 않도록 설정해야 한다. 이때 사용하는 옵션이 ESCAPE
이다. ESCAPE 뒤에 오는 단 한글자의 와일드카드 문자를 일반문자로 인식시킨다.
-- 직업(job_id) 데이터 중에서 뒤에서 3번째 문자로 _를 가진 사원 조회
SELECT employee_id,last_name
FROM employees
WHERE job_id LIKE '%$___' ESCAPE '$';
-- escape 문자 $ 뒤에 오는 와일드카드 문자는 일반 문자로 처리
논리 연산자
- 명시된 조건이 두 개 이상인 경우에는
AND
또는OR
을 사용할 수 있다. - 단,
AND
연산자가OR
연산자보다 우선순위가 높다. NOT
연산자는 조건식의 앞에 사용해 조건식의 연산을 부정한다.
-- 직급(job\_id)이 IT\_PROG 이고 월급(salary)이 5000 이상인 사원 조회
SELECT employee\_id,last\_name
FROM employees
WHERE job\_id = 'IT\_PROG' AND salary >= 5000;
-- 직급(job\_id)이 IT\_PROG 이거나 월급(salary)이 5000 이상인 사원 조회
SELECT employee\_id,last\_name
FROM employees
WHERE job\_id = 'IT\_PROG' OR salary >= 5000;
-- 월급이 9000이거나 8000 또는 6000이 아닌 사원 조회
SELECT employee\_id,last\_name
FROM employees
WHERE salary NOT IN (9000,8000,6000 );
IS NULL 연산자
IS NULL 연산자는 널(null)값을 가지고 있는 데이터를 검색할 때 사용한다.
-- 커미션(commission_pct)에 널(null)값을 가지고 있는 사원 조회
SELECT employee_id,last_name
FROM employees
WHERE commission_pct IS NULL;
-- employees 테이블에서 관리자가 있는 사원 조회
SELECT employee_id,last_name
FROM employees
WHERE manager_id IS NOT NULL;
728x90
'Database > SQL' 카테고리의 다른 글
[SQL] SQL 함수 개요 (0) | 2023.07.26 |
---|---|
[SQL] SELECT문 - ORDER BY 절 (0) | 2023.07.26 |
[SQL] SELECT 문 (0) | 2023.07.26 |
[SQL] Java를 사용한 데이터베이스 응용프로그램의 개발 - JDBC (0) | 2021.12.06 |
[SQL] 트리거 (0) | 2021.12.06 |