FROM절 다음
에 위치select
from
where 조건 -> from절의 테이블에서 조건을 작성하여 제한적으로 출력
SELECT * | { [DISTINCT] column [alias], ... }
FROM 테이블명
[WHERE logical expression(s)];
예시
select employee_id, last_name, job_id, department_id
from employees
where department_id = 90;
작은따옴표
로 묶음대소문자를 구분
하고 날짜 값은 형식을 구분
DD-MON-RR
대소문자를 구분
select last_name, job_id, department_id
from employees
where last_name = 'Whalen';
select last_name, hire_date
from employees
where hire_date = '1990/01/03';
ㄴ SQL Developer에서 날짜설정을 YYYY/MM/DD
로 바꿔둠
작성 형식에 맞춰서 검색해야 정확히 출력됨
=
: 같음
>
: 보다 큼
>=
: 보다 크거나 같음
<
: 보다 작음
<=
: 보다 작거나 같음
<>
: 같지 않음
BETWEEN ...AND...
: 두 값 사이(경계값 포함)
IN(set)
: 값 리스트 중 일치하는 값 검색
LIKE
: 일치하는 문자 패턴 검색 (ex. 김씨를 찾아라)
IS NULL
: null 값인지 여부
select last_name, salary
from employees
where salary <= 3000;
BETWEEN 작거나 같은 값 AND 크거나 같은 값
select last_name, salary
from employees
where salary between 2500 and 3500;
select employee_id, last_name, salary, manager_id
from employees
where manager_id in (100, 101, 201);
일부분에 대한 검색
%
는 0개 이상의 문자를 나타냄_
은 한 문자를 나타냄select first_name
from employees
where first_name like 'S%';
select first_name
from employees
where first_name like '%S';
select last_name
from employees
where last_name like '_o%';
특수문자 그대로를 조건이나 검색에 사용하고 싶을 때
식별자 뒤에 문자 자체로 인식할 수 있도록 지정하는 키워드select cust_id, lname, email, birthday, gender
from custs
where email like '%\_%' escape '\';
IS NULL
IS NOT NULL
select last_name, manager_id
from employees
where manager_id is null;
where manager_id = null --> 오류
AND
: 두 구성 요소 조건이 모두 참인 경우, TRUE 반환
OR
: 구성 요소 중 하나가 참인 경우, TRUE 반환
NOT
: 조건이 거짓인 경우, TRUE 반환
select employee_id, last_name, job_id, salary
from employees
where salary >= 10000
and job_id like '%MAN%';
select employee_id, last_name, job_id, salary
from employees
where salary >= 10000
or job_id like '%MAN%';
NOT IN
으로 작성하면 조건에 해당되는 경우가 없는 값들만 출력select last_name, job_id
from employees
where job_id
not in ('IT_PROG', 'ST_CLERK', 'SA_REP');
select last_name, salary
from employees
where salary not between 2500 and 3500;
select first_name
from employees
where first_name not like 'S%';
1: 산술 연산자
2: 연결 연산자
3: 비교 조건
4: IS [NOT] NULL LIKE, [NOT] IN
5: [NOT] BETWEEN
6: 같지 않음
7: NOT 논리 연산자
8: AND 논리 연산자
9: OR 논리 연산자
select last_name, department_id, salary
from employees
where department_id = 60
or department_id = 80
and salary > 10000;
select last_name, department_id, salary
from employees
where (department_id = 60
or department_id = 80)
and salary > 10000;
select last_name, department_id, salary
from employees
where department_id in (60, 80)
and salary > 10000;
ASC
: 오름차순, 기본값DESC
: 내림차순문장 가장 마지막
에 위치select last_name, job_id, department_id, hire_date
from employees
order by hire_date desc;
select employee_id, last_name, salary*12 annsal
from employees
order by annsal;
(여기서는 department_id)
select last_name, job_id, department_id, hire_date
from employees
order by 3;
select last_name, department_id, salary
from employees
order by department_id, salary DESC;
department_id를 기준으로 1차 정렬 후,
같은 department_id 안에서는 salary가 큰 값부터 검색
(department_id는 지정하지 않았기 때문에 기본값으로 asc가 적용,
salary는 desc로 지정했기 때문에 내림차순 정렬)
select employee_id, first_name
from employees
order by employee_id
fetch first 5 rows only;
select employee_id, first_name
from employees
order by employee_id
offset 5 rows fetch next 5 rows only;