1. 비교 연산자
비교 연산자를 활용하여 SELECT문에 조건을 설정할 수 있다.
💡구문: SELECT 컬럼명 FROM 테이블명 WHERE 조건;
SELECT customer_name FROM customer WHERE membertype_id = 2;
# 조회 결과: membertype_id가 2인 레코드 조회
SELECT customer_name FROM customer WHERE membertype_id != 1;
# 조회 결과: membertype_id가 1이 아닌 레코드 조회
# 해석1: membertype_id가 2이면 true
# 해석2: membertype_id가 1이 아니면 true
# 해석3: membertype_id가 1이면 false
# 참고사항: 특수한 경우로 조건에 들어맞지 않을 경우, NULL 반환됨
SELECT * FROM product WHERE price < 200;
# 조회 결과: price가 200 미만인 레코드 조회
[비교 연산자]
연산자 | 사용법 | 의미 |
= | a = b | a와 b는 같다 |
<=> | a <=> b | a와 b는 같다 (NULL 대응 가능) |
!= | a !=b | a와 b는 다르다 |
<> | a<>b | a와 b는 다르다 |
< | a<b | a는 b보다 작다 |
> | a>b | a 는 b보다 크다 |
<= | a<=b | a는 b 이하 |
>= | a>=b | a는 b 이상 |
[ NULL 관련 연산자 ]
연산자 | 사용법 | 의미 |
IS NULL | a IS NULL | a는 NULL이다 |
IS NOT NULL | a IS NOT NULL | a는 NULL이 아니다 |
[ BOOLEAN형 관련 연산자 ]
연산자 | 사용법 | 의미 |
IS | a IS TRUE | a는 TRUE이다 |
IS NOT | a IS NOT TRUE | a는 TRUE가 아니다 |
2. 논리연산자
부울(Boolean) 대수를 기반으로 하는 연산자로 조건식을 평가하거나 조적하는데 사용된다. 1(TRUE) 혹은 0(FALSE)의 논리값끼리 연산하여 결과를 똑같이 1 또는 0으로 반환한다.
SQL에서 SELECT문, WHERE구문에 2개 이상의 조건을 조합하여 조건을 지정할 때 사용할 수 있다.
1) AND 연산자: 💡 설정한 조건에 모두 TRUE인 경우에만 TRUE로 반환!
SELECT * FROM product WHERE price >= 100 AND price < 150;
# 조회 결과: 100 <= PRICE < 150 안에 포함되는 컬럼 조회
SELECT * FROM product WHERE price >= 100 AND price < 150 ANd stock >= 10;
# 조회 결과: 100 <= PRICE < 150 안에 포함되면서, stock >= 10에도 포함되는 컬럼 조회
2) OR 연산자: 💡 설정한 조건에 하나라도 TRUE인 경우, TRUE로 반환!
SELECT * FROM product WHERE price < 100 OR price >= 150;
# 조회 결과: price가 100보다 작은 컬럼 + price가 150 이상인 컬럼 조회
SELECT * FROM product WHERE price < 100 OR price >= 150 OR stock >= 10;
# 조회 결과: price가 100보다 작은 컬럼 + price가 150 이상인 컬럼 + stock이 10 이상인 컬럼 조회
3) NOT 연산자: 💡 TRUE → FALSE / FALSE → TRUE로 반환!
NOT으로 반전을 주고자하는 값을 괄호( )로 묶으면, 코드적 실수를 줄일 수 있음!
SELECT * FROM customer WHERE NOT( membertype_id =1 );
# 조회 결과: membertype_id가 1이 아닌 컬럼 조회
4) XOR 연산자: 💡 두 개의 조건의 결과가 TRUE + FALSE 혹은 FALSE + TRUE인 경우에만 TRUE 반환!
SELECT * FROM product WHERE price >= 100 XOR price < 150;
SELECT * FROM product WHERE price < 150 XOR price >= 100;
# 조회 결과: 1)price >= 100, 2)price<150 => 1), 2)의 결과가 TRUE, FALSE 혹은 FALSE, TRUE인 컬럼만 조회
[논리 연산자]
명칭 | 연산자 | 사용법 | 의미 |
논리곱 | AND && |
a AND b a && b |
a, b 양쪽 1인 경우만 1을 반환 (모두 TRUE이면, TRUE 반환) |
논리합 | OR || |
a OR b a || b |
a, b 중 적어도 어느 한쪽이 1이면 1을 반환 (둘 중 하나만 TRUE이면, TRUE 반환) |
부정 | NOT ! |
NOT a !a |
a가 0이면 1, 0이외는 0 반환 (TRUE면 FALSE, FALSE면 TRUE 반환) |
배타적 논리합 | XOR | a XOR b | a, b 중 어느 한쪽만 1이면 1, 그 외는 0 반환 |
3. 논리 연산자 외 자주 사용하는 연산자
1) BETWEEN 연산자: 💡 BETWEEN 연산자는 등위연산자(<=, >=)의 역할과 같음!
SELECT * FROM product WHERE price BETWEEN 100 AND 150;
# 조회 결과: price가 100이상 150이하인 레코드 조회
# 해석: price >= 100 AND price <= 150과 동일함
SELECT * FROM product WHERE price NOT BETWEEN 100 AND 150;
# 조회 결과: price가 100이상 150이하가 아닌 레코드 조회
2) IN 연산자: 💡 여러 값 중 어느 것과 일치하는 걸 조건으로 하는 경우 OR을 여러개 사용하는 것보다 IN 연산자를 활용하여 효율성을 높일 수 있음!
OR 연산자보다 처리속도가 빠르기 때문에, 데이터가 방대할 때 IN 연산자를 사용하는 것이 처리 속도 측면에서도 효과적이다. 그리고, IN 연산자 안에 다른 SELECT 문장을 사용할 수 있기 때문에 IN 연산자를 익혀놓으면 좋다.
SELECT * FROM product WHERE product_id IN(1, 3, 4);
# 조회 결과: product_id가 1, 3, 4 중 일치하는 레코드 조회
SELECT * FROM product WHERE product_id NOT IN(1, 3, 4);
# 조회 결과: product_id가 1, 3, 4 중 어느 것과도 일치하지 않은 레코드 조회
[논리연산자 외 자주 사용되는 연산자]
연산자 | 사용법 | 의미 |
BETWEEN AND | BETWEEN a AND b | a 이상 b 이하의 경우 1(TRUE) 반환 |
NOT BETWEEN AND | NOT BETWEEN a AND b | a 이상 b 이하가 아닌 경우 1(TRUE) 반환 |
IN | IN (a, b, c) | a, b, c 중 어느 것에 일치하면 1(TRUE) 반환 |
NOT IN | NOT INT (a, b, c) | a, b, c 중 어느 것에 일치하지 않으면 1(TRUE) 반환 |
4. 산술 연산자
덧셈, 뺄셈 등의 계산을 행하는 연산자를 산술 연산자라 한다.
SELECT * FROM product WHERE stock * price >= 5000;
# 조회 결과: stock과 price를 곱한 값이 5000 이상인 레코드 조회
SELECT product_name as '상품명', stock*price as '재고x가격' FROM product;
# 조회 결과: prouct_name과 "stock*price 곱한값"을 as 뒤 별칭으로 조회
[산술 연산자]
연산자 | 사용법 | 의미 |
+ | a + b | a에 b를 더한다 |
- | a - b | a에서 b를 뺀다 |
* | a * b | a에 b를 곱한다 |
/ | a / b | a를 b로 나눈다 |
% | a % b | a를 b로 나눈 나머지 |
DIV | a DIV b | a를 b로 나눌 때 정수 부분 |
MOD | a MOD b | a를 b로 나눈 나머지 |
5. 연산자 우선순위
1) ( )가 최우선 적용된다.
2) 기본 우선순위는 아래의 표에 따른다.
3) 같은 순위의 경우 앞에서부터 차례대로 시행된다.
[기본 연산자 우선순위]
연산자 | 우선순위 |
BINARY | 1 |
! | 2 |
*, /, DIV, %, MOD | 3 |
-, + | 4 |
비교 연산자, LIKE, IN | 5 |
BETWEEN, CASE, WHEN, THEN, ELSE | 6 |
NOT | 7 |
&&, AND | 8 |
XOR | 9 |
'DB - MySQL' 카테고리의 다른 글
SELECT문 - 조건문 활용 (0) | 2023.05.23 |
---|---|
SLECET문 - 집계함수 및 문자,숫자,날짜 관련 함수 (0) | 2023.05.23 |
SELECT문 - 정렬 (0) | 2023.05.23 |
SELECT문 - 기본 및 텍스트 마이닝 (0) | 2023.05.23 |
데이터베이스 개념 (0) | 2023.05.23 |