논리 연산자란?
여러 조건을 논리적으로 연결할 때 사용하는 연산자
조건과 조건을 연결하여 비교 연산자로 할 수 없는 새로운 조건을 만들어 준다.
| 연산자 |
의미 |
| A AND B |
A조건과 B조건 모두를 만족할 때 ( 데이터의 교집합 ) |
| A OR B |
A 조건 또는 B 조건을 만족할 때 ( 데이터의 합집합 ) |
| NOT A |
A 조건을 만족하지 않을 때 ( 데이터의 여집합 ) |
예제 테이블 ( user )
| idx |
name |
birth |
level |
weight |
salary |
| 1 |
홍길동 |
990101 |
3 |
59 |
600 |
| 2 |
고길동 |
960303 |
5 |
95 |
300 |
| 3 |
아무개 |
020507 |
1 |
66 |
200 |
| 4 |
루피 |
950330 |
7 |
65 |
900 |
| 5 |
이기영 |
870604 |
2 |
73 |
450 |
| 6 |
호빵맨 |
900617 |
6 |
59 |
170 |
| 7 |
세균맨 |
990101 |
4 |
103 |
1300 |
아래의 연산자들은 위 예제 테이블 ( user )을 참고하였다.
이해를 돕기 위해 각 조건을 괄호로 묶었습니다!
AND 연산자
- 두 조건이 모두 만족할 때의 데이터들의 집합
SELECT * FROM user WHERE (level >= 3) AND (salary >= 500);
| idx |
name |
birth |
level |
weight |
salary |
| 1 |
홍길동 |
990101 |
3 |
59 |
600 |
| 4 |
루피 |
950330 |
7 |
65 |
900 |
| 7 |
세균맨 |
990101 |
4 |
103 |
1300 |
SELECT * FROM user WHERE (level >= 3) AND (weight <= 60);
| idx |
name |
birth |
level |
weight |
salary |
| 1 |
홍길동 |
990101 |
3 |
59 |
600 |
| 6 |
호빵맨 |
900617 |
6 |
59 |
170 |
AND연산자를 통해 3개의 조건을 만족하는 예제
SELECT * FROM user WHERE (level >= 3) AND (salary >= 200) AND (weight <= 60);
| idx |
name |
birth |
level |
weight |
salary |
| 1 |
홍길동 |
990101 |
3 |
59 |
600 |
AND연산자에 SQL연산자를 사용하는 예제
SELECT * FROM user WHERE (birth BETWEEN 900101 AND 991231) AND (salary >= 300);
| idx |
name |
birth |
level |
weight |
salary |
| 1 |
홍길동 |
990101 |
3 |
59 |
600 |
| 2 |
고길동 |
960303 |
5 |
95 |
300 |
| 4 |
루피 |
950330 |
7 |
65 |
900 |
| 7 |
세균맨 |
990101 |
4 |
103 |
1300 |
OR 연산자
- 두 조건중 하나의 조건에 만족할 때의 데이터들의 집합
SELECT * FROM user WHERE (level >= 3) OR (salary >= 600);
| idx |
name |
birth |
level |
weight |
salary |
| 1 |
홍길동 |
990101 |
3 |
59 |
600 |
| 2 |
고길동 |
960303 |
5 |
95 |
300 |
| 4 |
루피 |
950330 |
7 |
65 |
900 |
| 6 |
호빵맨 |
900617 |
6 |
59 |
170 |
| 7 |
세균맨 |
990101 |
4 |
103 |
1300 |
SELECT * FROM user WHERE (weight = 59) OR (salary >= 600);
| idx |
name |
birth |
level |
weight |
salary |
| 1 |
홍길동 |
990101 |
3 |
59 |
600 |
| 2 |
고길동 |
960303 |
5 |
95 |
300 |
| 4 |
루피 |
950330 |
7 |
65 |
900 |
| 6 |
호빵맨 |
900617 |
6 |
59 |
170 |
| 7 |
세균맨 |
990101 |
4 |
103 |
1300 |
OR연산자에 SQL연산자를 사용하는 예제
SELECT * FROM user WHERE (level IN (1,2,5,6)) OR (weight >= 80);
| idx |
name |
birth |
level |
weight |
salary |
| 2 |
고길동 |
960303 |
5 |
95 |
300 |
| 3 |
아무개 |
020507 |
1 |
66 |
200 |
| 5 |
이기영 |
870604 |
2 |
73 |
450 |
| 6 |
호빵맨 |
900617 |
6 |
59 |
170 |
| 7 |
세균맨 |
990101 |
4 |
103 |
1300 |
OR연산자를 통해 3개의 조건을 만족하는 예제
SELECT * FROM user WHERE (level = 3) or (salary > 1000) or (weight >= 60);
| idx |
name |
birth |
level |
weight |
salary |
| 1 |
홍길동 |
990101 |
3 |
59 |
600 |
| 2 |
고길동 |
960303 |
5 |
95 |
300 |
| 3 |
아무개 |
020507 |
1 |
66 |
200 |
| 4 |
루피 |
950330 |
7 |
65 |
900 |
| 5 |
이기영 |
870604 |
2 |
73 |
450 |
| 7 |
세균맨 |
990101 |
4 |
103 |
1300 |
NOT 연산자
- 조건의 반대되는 데이터들의 집합
SELECT * FROM user WHERE NOT level = 3;
| idx |
name |
birth |
level |
weight |
salary |
| 1 |
홍길동 |
990101 |
3 |
59 |
600 |
| 2 |
고길동 |
960303 |
5 |
95 |
300 |
| 4 |
루피 |
950330 |
7 |
65 |
900 |
| 5 |
이기영 |
870604 |
2 |
73 |
450 |
| 6 |
호빵맨 |
900617 |
6 |
59 |
170 |
| 7 |
세균맨 |
990101 |
4 |
103 |
1300 |
- AND연산자 조건의 반대되는 데이터들의 집합
SELECT * FROM user WHERE NOT (level >= 3 AND salary >= 500);
| idx |
name |
birth |
level |
weight |
salary |
| 2 |
고길동 |
960303 |
5 |
95 |
300 |
| 3 |
아무개 |
020507 |
1 |
66 |
200 |
| 5 |
이기영 |
870604 |
2 |
73 |
450 |
| 6 |
호빵맨 |
900617 |
6 |
59 |
170 |
- OR연산자 조건의 반대되는 데이터들의 집합
SELECT * FROM user WHERE NOT (LEVEL = 3 or LEVEL = 5);
| idx |
name |
birth |
level |
weight |
salary |
| 3 |
아무개 |
020507 |
1 |
66 |
200 |
| 4 |
루피 |
950330 |
7 |
65 |
900 |
| 5 |
이기영 |
870604 |
2 |
73 |
450 |
| 6 |
호빵맨 |
900617 |
6 |
59 |
170 |
| 7 |
세균맨 |
990101 |
4 |
103 |
1300 |
- AND연산자와 OR연산자 조건의 반대되는 데이터들의 집합
SELECT * FROM user WHERE NOT (( LEVEL = 3 AND salary >= 500 ) OR (weight >= 70));
| idx |
name |
birth |
level |
weight |
salary |
| 3 |
아무개 |
020507 |
1 |
66 |
200 |
| 4 |
루피 |
950330 |
7 |
65 |
900 |
| 6 |
호빵맨 |
900617 |
6 |
59 |
170 |
- SQL연산자 조건의 반대되는 데이터들의 집합
SELECT * FROM user WHERE NOT (LEVEL IN (3, 5, 6));
| idx |
name |
birth |
level |
weight |
salary |
| 3 |
아무개 |
020507 |
1 |
66 |
200 |
| 4 |
루피 |
950330 |
7 |
65 |
900 |
| 5 |
이기영 |
870604 |
2 |
73 |
450 |
| 7 |
세균맨 |
990101 |
4 |
103 |
1300 |
SELECT * FROM user WHERE NOT (weight BETWEEN 70 AND 100);
| idx |
name |
birth |
level |
weight |
salary |
| 1 |
홍길동 |
990101 |
3 |
59 |
600 |
| 3 |
아무개 |
020507 |
1 |
66 |
200 |
| 4 |
루피 |
950330 |
7 |
65 |
900 |
| 6 |
호빵맨 |
900617 |
6 |
59 |
170 |
| 7 |
세균맨 |
990101 |
4 |
103 |
1300 |