개발(Web)/DB

[Oracle] WHERE(조건문)절과 ORDER BY(정렬)절

shinyelee 2020. 6. 26. 10:16

WHERE절과 ORDER BY절에 대해 알아보자.

Ⅰ. WHERE절

1. where절

where절은 조건에 맞는 데이터 찾아줌.
no rows selected : 오류 아님. 해당 조건과 일치하는 데이터가 없는 것(없는 데이터거나, 대소문자 다르거나 등).
날짜 데이터는 정해진 포맷이 있음(DD-MON-YY 또는 DD-MON-RR로 표기).
employees 중 salary 3000 이하인 last_name 리스트 출력.
날짜도 지정 가능함(between '더 과거 날짜' and '과거 날짜';).
문자도 between 써서 범위 지정 가능(단, between '순서 앞인 알파벳' and '순서 뒤인 알파벳';).
in은 합집합. manager_id가 100 or 101 or 201인 employees 모두 출력.
조건 2개면 or, 3개 이상이면 in을 쓰는 게 경제적.
정확한 이름이나 문자 위치 모르겠으면 like _(언더바) 또는 %(퍼센트) 활용해 검색하자.

* _(언더바) : 문자 있어야 하는 자리(언더바 1개당 1글자).

* %(퍼센트) : 문자 있어도 되고, 없어도 되는 자리.

입력 a% %a% %a _a a__
조건 a로 시작 a가 포함 a로 끝남 앞에서 두번째  a 끝에서 세번째 a
abc O O X X X
a O O O X X
deabc X O X X O
dsa X O O X X
bab X O X O X

manager_id 값이 null인 직원 검색.

2. 연습문제

가. employees 테이블로부터 사원들의 employee_id, last_name, salary, commission_pct를 출력하되 커미션을 받지 않는 사원만 출력하는 구문을 작성하시오.

commission_pct 받지 않는 직원을 물어봤으니 is null; 입력해 검색.
* 참고 : is null의 반대는 is not null

나.  employees 테이블로부터 04년도에 입사한 모든 사원의 last_name과 hire_date를 출력하시오.

효율 갑.
효율 을.
효율 병(신).

3. 비교연산자

= <>, !=
>, >= <, <=
between A and B not between A and B
in (의미 : or) not in (의미 : and)
like not like
is null is not null

Ⅱ. ORDER BY절

1. order by절

* 오름차순 : asc(ascending order, 기본값)

* 내림차순 : desc(descending order)

hire_date 기준으로 내림차순 정렬.
salary*12(월급*12)한 테이블명 annsal(연봉)로 지정 후 annsal 기준으로 정렬.
select절 기준 세 번째 테이블(department_id) 기준으로 정렬.
department_id 기준 오름차순 정렬 후 salary 기준 내림차순 정렬.
응용 ver. salary, last_name, department_id 순서대로 오름차순 정렬.
salary로 내림차순 정렬하되 employee_id와 last_name만 출력. King이 1등, Kochhar가 2등, De Haan이 3등이다.
salary 포함 출력해보니 Kochhar와 De Haan이 공동 2위다. 정렬 기준이 되는 컬럼을 함께 출력해야 이런 불상사가 없다. 

2. 연습문제

가.  employees 테이블로부터 커미션을 받지 않는 모든 사원의 last_name, salary, commission_pct를 출력하되 salary를 기준으로 내림차순 정렬하시오.

is null로 조건 지정, desc로 정렬.

출처 : 아이티윌 부산교육센터 Oracle Database 12c : 실습가이드북

반응형

'개발(Web) > DB' 카테고리의 다른 글

[Oracle] GROUP BY절과 HAVING절  (0) 2020.06.30
[Oracle] 단일 행 함수 (2)  (0) 2020.06.30
[Oracle] 단일 행 함수 (1)  (0) 2020.06.30
[Oracle] SELECT구문을 사용한 데이터 검색  (0) 2020.06.23
[Oracle] 터미널 실행하기  (0) 2020.05.30