[개미의 걸음 SQL 4차시] SQL 연산자
연산자
프로그래밍을 할 때 변수나 값의 연산을 위해 사용되는 부호
- 연산자만 단독으로 사용될 경우에는 아무 의미를 갖지 못함
- 연산자 우선순위 : 괄호[우선순위 높음] > 산술연산자 > 비교연산자 > BETWEEN연산자 > 논리연산자
# 연산자 우선순위더보기
우선순위 높음
↑
|
|
|
|
|
|
|
|
↓
우선순위 낮음연산자 비 고 *, / 산술 연산자[곱하기 나누기] +, - 산술 연산자[더하기 빼기] <>, !=, =, ^=, >, >=, <, <= 대소 비교 연산자 IS (NOT) NULL, (NOT)LIKE, (NOT) IN 비교 연산자 BEETWEEN A AND B BETWEEN 연산자 NOT 논리 부정 연산자 NOT AND 논리 연산자 AND OR 논리 연산자 OR
1. 산술 연산자[Arithmetic Operator]
덧셈, 뺄셈, 곱셈, 나눗셈 등의 산술식을 구성하는 연산자
연산자 | 설명 | 입력내용 | 결과내용 |
+ | 더하기 | 3+4 | 7 |
- | 빼기 | 3-4 | -1 |
* | 곱하기 | 3*4 | 12 |
/ | 나누기 | 3/4 | 0.75 |
# 산술연산자우선순위
괄호, 곱하기*나누기, 더하기*빼기
∴ 동일한 우선순위의 산술 연산자가 나열된 경우 왼쪽이 오른쪽보다 우선순위를 갖게됨
2. 비교 연산자[Relational Operator]
두 개의 값을 비교하여 맞으면 TRUE, 틀리면, FALSE를 반환하는 연산자
연산자 | 설명 | 비고 |
> | 크다 | 3>4 |
>= | 크거나 같다. | 3>=4 |
< | 작다 | 3<4 |
<= | 작거나 같다. | 3<=4 |
= | 같다. [등가 비교 연산자] | 3=4 |
!= | 같지 않다. [등가 비교 연산자] | 3!=4 |
<> |
같지 않다. [등가 비교 연산자] |
3<>4 |
^= |
같지 않다. [등가 비교 연산자] |
3^=4 |
IS NULL |
특정 열 또는 연산의 결과 값이 NULL인 데이터만 조회 |
COMM IS NULL |
IS NOT NULL |
특정 열 또는 연산의 결과 값이 NULL이 아닌 데이터만 조회 |
COMM IS NOT NULL |
LIKE |
일부 문자열이 포함된 데이터 조회 와일드 카드[_, %]가 있음 |
JOB LIKE '_M%' |
NOT LIKE |
일부 문자열이 포함되지 않은 데이터 조회 |
JOB NOT LIKE '_C%' |
열이름 IN (조회할 열의 데이터들) |
열에 있는 데이터들과 같은 데이터 출력 ["="의 경우, 하나씩 지정한 후 OR로 연결] |
JOB IN ('MANAGER', 'CLERK') |
열이름 NOT IN (조회할 열의 데이터들) | 열에 있는 데이터들과 다른 데이터 출력 ['!=', '<>', '^='는 하나씩 지정 뒤 AND 연결] |
JOB NOT IN ('MANAGER', 'CLERK') |
# 와일드 카드
특정 문자 또는 문자열을 대체하거나 문자열 데이터의 패턴을 표시하는 특수문자를 와일드 카드라고 한다.
LIKE연산자와 함께 사용할 수 있는 연산자에는 _와 %가 있다.
_와 %가 데이터에 포함될 경우에는 ESCAPE절을 사용
와일드 카드 | 의 미 |
_ | 어떤 값이든 상관없이 한 개의 문자 데이터를 의미 |
% | 길이와 상관없이(문자 없는 경우도 포함) 모든 문자 데이터를 의미 |
# ESCAPE 문 사용
# ESCAPE 문자를 지정하는 방식은 실무에서 자주 사용하지 않음
SELECT *
FROM 테이블명
WHERE 컬럼명 LIKE 'A\_A%' ESCAPE '\';
#### ESCAPE문자 \외의 다른 문자들도 ESCAPE절에서 지정할 수 있음
# NULL
NULL은 값이 0이라는 의미가 아니라 데이터의 값이 완전히 '비어있는' 상태를 말함!
NULL의 의미 |
값이 존재하지 않음 |
해당 사항 없음 |
노출할 수 없는 값 |
확정되지 않은 값 |
AND 연산 | TRUE | FALSE | NULL |
TRUE | TRUE | FALSE | NULL |
FALSE | FALSE | FALSE | FALSE |
NULL | NULL | FALSE | NULL |
OR 연산 | TRUE | FALSE | NULL |
TRUE | TRUE | TRUE | TRUE |
FALSE | TRUE | FALSE | NULL |
NULL | TRUE | NULL | NULL |
# IS NULL 연산자
# LIKE 연산자
3. BETWEEN
일정 범위를 갖는 데이터를 조회할 때 사용하는 연산자
연산자 | 설명 |
열이름 BETWEEN A AND B | 해당 열에서 A과 B 사이에 속하는 데이터를 조회할 때 사용 |
열이름 NOT BETWEEN A AND B | 해당 열에서 A과 B 사이에 속하지 않는 데이터를 조회할 때 사용 |
# BETWEEN, NOT BETWEEN
4. 논리 연산자[Logical Operator]
논리곱(AND), 논리합(OR), 논리부정이 조건을 성립하면 True, 성립하지 않으면 False를 반환하는 연산자
연산자 | 설명 | 입력내용 |
결과내용 |
NOT | (조건1)에 대한 부정 | not(조건1) | (조건1)이 성립하지 않을 경우 TRUE |
AND | (조건1) 과 (조건2) 가 모두 만족 | (조건1) and (조건2) | 모든 조건이 참일때만 최종적인 결과가 TRUE |
OR | (조건1) 과 (조건2) 중 하나만 만족 | (조건1) or (조건2) | 조건 중 하나라도 참이면 최종적인 결과가 TRUE |
5. 집합 연산자[Bit Operator]
데이터 조회 결과를 하나의 집합과 같이 다룰 수 있는 연산자
2개의 SELECT 구문에 조회되는 데이터 형태가 동일해야 됨!!
연산자 | 설명 |
UNION | 연결된 SELECT문의 결과 값을 합집합으로 묶어줌[중복 제외] |
UNION ALL | 연결된 SELECT문의 결과 값을 합집합으로 묶어줌[중복 포함] |
MINUS | 먼저 작성한 SELECT문과 다음 SELECT문 결과 값의 차집합 [먼저 작성한 SELECT문의 결과 값 중 다음 SELECT문에 존재하지 않은 데이터만 출력] |
INTERSECT |
먼저 작성한 SELECT문과 다음 SELECT문 결과 값의 교집합 [먼저 작성한 SELECT문과 다음 SELECT문의 결과 값이 동일한 데이터만 출력] |
# UNION


데이터의 유형이 동일해야지만 출력됨!!!
# UNION ALL
UNION ALL는 중복데이터 포함, UNION은 중복데이터 제외

# MINUS
MINUS는 먼저 작성한 SELECT문의 결과값 데이터들 중에서 다음 SELECT문의 결과값을 뺀 것

# INTERSECT
INTERSECT는 먼저 작성한 SELECT문의 결과값과 다음 SELECT문의 결과값이 동일한 데이터만 출력
