[SQL] WHERE절

1. 연산자 종류

비교연산자

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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167

=
>
<=
>
>=
```

### SQL연산자
- BETWEEN a AND b
(a 이상, b이하의 값)
- IN(a,b,c)
(a,b,c중 하나라도 일치하는 값이 있으면 true)
- LKIE '비교문자열'
비교문자열과 형태일치(%, _)
- IS NULL
NULL인 경우(=NULL은 사용할 수 없음)

### 논리연산자
- AND
- OR
- NOT

### 부정비교연산자
- !=
(같지 않다)
- NOT 칼럼명= a
(칼럼명의 값과 a가 같지 않다)
- NOT 칼럼명 > a
(a보다 칼럼명의 값이 크다)

### 부정SQL연산자
- NOT BETWEEN a AND b
(a와 b사이에 있지 않다. a,b 포함하지 않음)
- NOT IN(a,b,c)
(a,b,c값과 일치 하지 않음)
- IS NOT NULL
(NULL 값을 갖지 않음, !=NULL 사용불가)

## 2.비교연산자

- STRING은 ''나 ""으로 묶어서 사용
- 숫자는 "",''사용 안 함

예제)

COFFEELIST 테이블에서 브랜드가 스타벅스 커피중에 가격이 5000원 이하이고 용량이 200m이상인 커피의 브랜드, 종류, 가격, 용량순으로 조회하시오.
```sql
SELECT 브랜드, 종류, 가격 FROM COFFEELIST
WHERE 브랜드 = '스타벅스' AND 가격 <=5000 AND 용량 >=200;
```

### 문자유형 비교방법
**CHAR VS CHAR**
- 길이가 다른 CHAR은 작은쪽에 SPACE추가하여 비교
- 서로 다른 문자가 나올때 까지 비교
- 달라진 첫 문자의 값에 따라 크기 결정
- BLANK 수만 다르면 서로 같은 값으로 결정

**VARCHAR2 VS CHAR**
- 서로다른 문자가 나올때까지 비교
- 길이다 다르면 짧은것이 끝날때까지만 비교 후 길이가 긴 것이 긴것으로 결정
- 길이가 같고 같은것이 없으면 같은것으로 결정
- VARCHAR2는 NOT NULL까지 길이를 말함(?)

**NUMVER VS 문자열**
- 상수를 변수 타입과 동일하겨 변경 후 비교
- 변수쪽이 CHAR 유형 타입이면 CAHR VS CHAR 적용
- 변수쪽이 VARCHAR2유형 타입이면 VARCHAR2 VS CHAR 적용

## 3. SQL 연산자
- 모든 데이터 타입에 적용가능한 연산자 소개
### IN(a,b,c) 연산자
- ()안에든 조건 중 하나와 일치하면 참


예제1)
COFFEELIST 테이블에서 브랜드가 스타벅스, 커피빈, 이디아인 데이터를 모두 조회하시오.
```sql
SELECT * FROM COFFEELIST
WHERE 브랜드 IN('스타벅스', '커피빈', '이디아');
```

예제2)
COFFEELIST 테이블에서 브랜드가 스타벅스이면서 가격이 5000원 이거나, 브랜드가 이디아이면서 가격이 3000원인 커피 데이터를 모두 조회 하시오.
* 결과 데이터 : 스벅 5000원커피 , 이디아 3000원 커피
```sql
SELECT * FROM COFFEELIST
WHERE (브랜드, 가격) IN(('스타벅스',5000),('이디아', 3000));
```

예제3)
COFFEELIST 테이블에서 브랜드가 스타벅스이거나 이디아이고, 가격이 5000원이거나 3000원인 데이터를 모두 조회하시오.
(예제2번과 결과가 다르다 비교하길)
* 결과 데이터 : 스벅 5000원 커피, 스벅 3000원커피, 이디아 5000원 커피, 이디아 3000원 커피
```sql
SELECT * FROM COFFEELIST
WHERE 브랜드 IN('스타벅스','이디아') OR 가격 IN(5000, 3000);
```

### LIKE 연산자
- %는 아무 데이터나 다 받음
- _는 한표시당 한 글자만 받음

예제)
COFFEELSIST테이블에서 종업원 성이 김 씨인 커피점 조회하시오.
```sql
SELECT * FROM COFFEELIST
WHERE 종업원 LIKE '김%';
```

### BETWEEN a AND b 연산자

예제)
COFFEELIST테이블에서 가격이 3000에서 5000원인 데이터 조회.
* 결과값 : 커피가격이 3000원이상 5000원이하인 커피 데이터 리스트

```sql
SELECT * FROM COFFEELIST
WHERE 가격 BETWEEN 3000 AND 5000;
```

### IS NULL 연산자
- NULL 과 수치 연산은 NULL값 리턴
- NULL과 비교연산은 FALSE리턴
- 특정값과 비교할 수 없고 크기 비교 불가

```sql
SELECT * FROM COFFEELIST
WHERE 브랜드 = NULL;
--결과값 : 선택된 레고드가 없음. (브랜드 = NULL)이 FALSE이기 때문

SELECT * FROM COFFEELIST
WHERE 브랜드 IS NULL;
--결과값 : 브랜드칼럼에 NULL이 들어가있는 데이터 조회
```

## 4. 논리연산자
### AND
해당되는 조건이 모두 참이어야 참
### OR
앞뒤의 조건 중 하나라도 참이면 참
### NOT
뒤에오는 조건과 반대되는 결과 리턴
- 연산자의 우선순위
(), NOT, AND, OR 순서이므로 ()를 적절히 사용하여 원하는 조건을 형성해야함

## 5. 부정연산자
### 논리부정연산자
### 부정 SQL연산자

## 6. ROWNUM
### ROWUNUM
- 임시로 부여되는 행 번호
- 테이블에서 원하는 행만 가져올때 WHERE절에서 행의 개수를 제한하는 목적으로 사용

```sql
--1행만 가져올때
SELECT * FROM COFFEELIST WHERE ROWNUM=1;
SELECT * FROM COFFEELIST WHERE ROWNUM<=1;
SELECT * FROM COFFEELIST WHERE ROWNUM<2;

--2행 이상 가져올때
SELECT * FROM COFFEELIST WHERE ROWNUM<=3;
SELECT * FROM COFFEELIST WHERE ROWNUM=3;--이건 사용불가(무조건 1행부터 데이터를 가져오기때문)
--고유한 키나 인덱스로 활용가능
UPDATE MY_TABLE SET COLUMN1 = ROWNNUM;
# sql

댓글

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×