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 (90, 100);
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(정렬)
- 사용자가 지정한 정렬 기준, 방식으로 결과를 정렬하는 절
- 정렬방식을 생략하면 기본값인 오름차순이 적용 된다
데이터타입 |
오름차순(작 → 큰) |
내림차순(큰 → 작) |
숫자 |
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 |