본문 바로가기
DB/Oracle

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

by 태윤2 2020. 6. 4.

WHERE 행을 제한하는 조건절을 작성할 수 있는 절

ORDER BY 사용자가 지정한 기준으로 결과를 정렬 할 수 있는 절

 

WHERE절 (조건절)

  • 행을 제한 하는 조건절을 작성할 수 있는 절
  • WHERE 조건 대상 컬럼 연산자 조건

 

날짜 데이터의 문자열 형씩 →  'DD-MON-YY'

 

연산자

 

= 같다

> 크다,초과

< 작다, 미만

>= 보다 크거다 같다, 이상

<= 보다 작거나 같다, 이하

!=,<>, ^= 같지 않다

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
[문법]
 
SELECT * | {[DISTINCT] column | expression [alias],...}
FROM table
[WHERE condition(s)]
[ORDER BY {column, expr, alias} [ASC | DESC]];
 
 
SELECT employee_id, last_name, job_id, department_id
FROM employees
WHERE department_id =90// department_id 가 90인 결과를 보여줌
 
 
 
SELECT last_name, job_id, department_id
FROM employees
WHERE last_name ='Whalen';  // 대소문자 구분함, 알파벳도 부등호 가능
 
SELECT last_name
FROM employees
WHERE hire_date = '07-JUN-02' // 날짜값에 맞는 결과를 보여줌
 
SELECT last_name, salary
FROM employees
WHERE salary <=3000// 3000보다 작거나 같은 값을 가진 결과를 모두 보여줌
 
 
 
범위 연산자
- 경계값을 포함한 범위에 해당하는 값을 가진 행을 선택하는 조건
BETWEEN A AND B // A 이상 B이하
A : 하한값 B : 상한값
SELECT last_name, salary
FROM employees
WHERE salary BETWEEN 2500 AND 3500;
// WHERE last_name BETWEEN 'B' AND 'D'// D는 Da보다 작다
 
IN 연산자
- 여러 개의 나열된 조건 중 일치하는 값을 가진 행을 선택하는 조건
 
SELECT employee_id, department_id
FROM employees
WHERE department_id IN (90100);
 
LIKE 연산자 (패턴 연산자)
_ : 한자리 문자
% : 0~n 자리 문자
 
SELECT last_name
FROM employees
WHERE last_name LIKE '_o__'// 이름에 두번째에 o가 오는 4글자 이름
 
SELECT last_name
FROM employees
WHERE last_name LIKE '%op%';
 
SELECT hire_date
FROM employees
WHERE hire_date LIKE '17_____04';
// WHERE hire_date LIKE '%MAY%';
 
AND
 
A and B 
A 조건과 B조건을 동시에 만족하는 행을 결과로 출력
 
OR
 
A or B
A조건 또는 B조건을 만족하는 행을 결과로 출력
 
AND 와 OR을 조합해서 여러 조건식을 달 수 있으나 AND가 OR보다 우선순위가 높기 때문에 이를 고려해서 작성을 한다.
OR이 먼저 연산되어야 하는 경우 괄호를 사용해서 우선순위를 바꿀 수 있다.
 
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE (job_id LIKE '%MAN%' OR job_id LIKE '%REP%') AND salary >= 10000;
 
 
 
NOT 다른 연산자와 조합으로 기존의 연산자와는 반대되는 결과를 내놓는 논리 조건이다.
 
...WHERE salary NOT BETWEEN 10000 AND 15000;
// 10000 미만 15000초과의 값을 가진 결과를 출력한다.
 
...WHERE NOT(last_name LIKE '%A%');
// NOT(조건식)의 형태로도 사용이 가능하다.
 
 
 
cs

ORDER BY(정렬)

- 사용자가 지정한 정렬 기준, 방식으로 결과를 정렬하는 절

- 정렬방식을 생략하면 기본값인 오름차순이 적용 된다

 

데이터타입

오름차순(작 → 큰)
Ascending Order(ASC)

내림차순(큰 → 작)
Descending Order(DESC)

숫자

0 → 9

9 → 0

날짜

이전 → 이후

이후 → 이전

문자

a → z

z → a

 - 정렬 기준이 여러 개인 경우 왼쪽에 있는 정렬기준이 우선 적용되며, 정렬 기준에서 같은 값을 가진 행이 있을 경우 후 순위의 정렬기준이 적용된다.

1
2
3
4
5
6
 
SELECT department_id, salary
FROM employees
WHERE department_id IN (30,60)
ORDER BY department_id DESC, salary DESC;
 
cs

 

 

- 1차적으로 부서 번호가 큰 행부터 출력이 되고 있으며, 같은 부서 id 값을 가지는 행의 경우 2차정렬기준인 salary를 기준으로 내림차순이 적용된 것을 볼 수 있음.

 

1
2
3
4
5
6
7
8
9
SELECT employee_id, last_name, salary*12 annsal
FROm employees
ORDER BY annsal ;
// annsal(salary*12) 기준으로 오름차순
 
SELET last_name, job_id, department_id, hire_date
FROM employees
ORDER BY 3;
// 3번째 칼럼 기준으로 
cs

 

 

'DB > Oracle' 카테고리의 다른 글

형식문자  (0) 2020.06.23
함수  (0) 2020.06.23
단일 행 함수(Single-row Function) - 수정  (0) 2020.06.05
SELECT 구문  (0) 2020.06.01
데이터베이스 시작  (0) 2020.06.01