SELECT의 논리 연산자

강희철·2022년 1월 5일
0

SQL

목록 보기
3/9

논리 연산자란?

여러 조건을 논리적으로 연결할 때 사용하는 연산자

조건과 조건을 연결하여 비교 연산자로 할 수 없는 새로운 조건을 만들어 준다.
연산자 의미
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);
#user의 level이 3이상이면서 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);
#user의 level이 3이상이면서 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);
#user의 level이 3이상, 그리고 salary가 200 이상 이면서 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);
#user의 birth가 900101 과 991231의 사이이면서, 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);
#user의 level이 3이상 이거나, 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);
#user의 weight가 59이거나, 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);
#user의 weight가 59이거나, salary 가 600이상인 데이터들
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);
#user의 level이 3이거나, 그리고 salary가 1000 이상이거나, 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;
#user의 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);
#user의 level이 3과 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);
#user의 level이 3과 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));
#user의 level이 3이면서 salary가 500 이상안 데이터 또는 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));
#user의 level이 3이면서 salary가 500 이상안 데이터 또는 weight가 70 이상이 아닌 데이터들
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);
#user의 weight이 70에서 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

0개의 댓글