논리 연산자란?
여러 조건을 논리적으로 연결할 때 사용하는 연산자
조건과 조건을 연결하여 비교 연산자로 할 수 없는 새로운 조건을 만들어 준다.
연산자 |
의미 |
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 |