MySQL은 대부분의 프로그래밍 언어에서 지원하는 기본적인 연산자를 모두 제공.
이러한 연산자를 사용하여 데이터를 추출하고 처리할 수 있다.
01. 산술 연산자(사칙연산)
· + , - , * , / : 더하기, 빼기, 곱하기, 나누기
· DIV : 왼쪽 피연산자를 오른쪽 피연산자로 나눈 후, 소수 부분을 버림.
· % OR MOD : 왼쪽 피연산자를 오른쪽 피연산자로 나눈 후 , 그 나머지를 반환.
SELECT
10 + 3,
10 - 7,
10 * 3,
10 / 3,
10 DIV 3,
10 % 3,
10 MOD 3
;
※ 문자열에 사칙연산을 가하면 0으로 인식
SELECT
10 + "ABC",
10 - "ABC",
10 * "ABC"
;
※ 숫자로 구성된 문자열은 숫자로 자동인식
SELECT '1' + '002' * 3;
· 열 계산도 가능
SELECT fixed_acidity, volatile_acidity,
fixed_acidity + volatile_acidity,
fixed_acidity - volatile_acidity,
fixed_acidity * 10
FROM wine;
02. 비교 연산자
▶ 비교 연산자는 피연산자 사이의 상대적인 크기를 판단하여, 참(True)이면 1을 반환, 거짓(False)이면 0을 반환.
SELECT TRUE, FALSE;
SELECT !TRUE, NOT 1, !FALSE, NOT FALSE;
연산자 | 설명 |
= | 양쪽 값이 같음 |
!= , <> | 양쪽 값이 다름 |
> , < | (왼쪽, 오른쪽) 값이 더 큼 |
>=, <= | (왼쪽, 오른쪽) 값이 같거나 더 큼 |
SELECT 3 = 3,
3 !=4,
3 < 4,
3 <=4
;
연산자 | 설명 |
IS | 왼쪽과 오른쪽 피연산자가 같으면 참을 반환 (오른쪽 피연산자가 불리언(TRUE, FALSE)이어야 함) |
IS NOT | 왼쪽과 오른쪽 피연산자가 같지 않으면 참을 반환 (오른쪽 피연산자가 불리언(TRUE, FALSE)이어야 함) |
SELECT TRUE IS TRUE;
SELECT TRUE IS NOT FALSE;
-- (TRUE IS FALSE) FALSE 반환
-- FALSE IS NOT TRUE TRUE 1반환
SELECT (TRUE IS FALSE) IS NOT TRUE;
연산자 | 설명 |
IS NULL | 값이 NULL이면 참을 반환 |
IS NOT NULL | 값이 NULL이 아니면 참을 반환 |
SELECT
NULL IS NULL,
NULL IS NOT NULL,
0 IS NULL,
0 IS NOT NULL ;
※ 0은 NULL이 아님
· WHERE에 IS NULL / IS NOT NULL 사용
CREATE TABLE test
( id TINYINT PRIMARY KEY,
name text DEFAULT NULL,
age TINYINT ,
salary int DEFAULT NULL);
INSERT INTO test
(id, name, age, salary)
VALUES
(1, 'A', 15, 100),
(2, NULL, 17, 500),
(3, NULL, 20, 600),
(4, 'D', 21, NULL),
(5, 'E', 30, NULL),
(6, 'F', 40, NULL);
- name 열의 NULL 갯수 COUNT
SELECT count(*) FROM test
WHERE name IS NULL;
- name 열의 NULL 아닌 갯수 COUNT
SELECT count(*) FROM test
WHERE name IS NOT NULL;
연산자 | 설명 |
BETWEEN min AND max | 값이 min값 이상 max이하에 있음. |
NOT BETWEEN min AND max | 값이 min과 max값 사이가 아닌 곳에 있음 |
SELECT 5 BETWEEN 2 AND 6,
5 BETWEEN 2 AND 5,
5 NOT BETWEEN 6 AND 10,
'a' BETWEEN 'a' AND 'c',
'a' NOT BETWEEN 'b' AND 'e'
;
연산자 | 설명 |
IN() | 값이 () 리스트에 존재하면 참 반환 |
NOT IN() | 값이 () 리스트에 존재하자 않으면 참 반환 |
SELECT 1 IN (1,4,6,7),
1 NOT IN ( 2,3,4,5),
'a' IN ('a', 'b', 'c'),
'e' NOT IN ('a', 'b', 'c');
03. 논리 연산자
▶ 논리 연산자는 논리식을 판단하여, 참(True)이면 1을 반환하고 거짓(False)이면 0을 반환
연산자 | 설명 |
AND , && | 논리식이 모두 참이면 참을 반환 |
OR , || | 논리식 중에서 하나라도 참이면 참을 반환 |
SELECT TRUE AND FALSE, TRUE OR FALSE;
SELECT 2 + 1 = 6 OR 2 * 3 = 6;
· store 테이블에서 상권업종소분류코드가 'Q04A01' 이면서 행정동명이 '탄방동'인
상권업종소분류코드, 상권업종소분류명, 행정동명 열 선택(AND 연산자 사용)
SELECT 상권업종소분류코드, 상권업종소분류명, 행정동명 FROM store
WHERE 상권업종소분류코드 = 'Q04A01' AND 행정동명 = '탄방동';
· store 테이블에서 상권업종소분류코드가 'Q04A01' 이면서 행정동명이 '탄방동'이 거나 '괴정동'인
상권업종소분류코드, 상권업종소분류명, 행정동명 열 선택(AND와 OR 연산자 사용)
SELECT 상권업종소분류코드, 상권업종소분류명, 행정동명 FROM store
WHERE 상권업종소분류코드 = 'Q04A01' AND (행정동명 = '탄방동' OR 행정동명 = '괴정동');
04. 연산자 우선순위
우선순위 | 연산자 |
1 | INTERVAL |
2 | BINARY, COLLATE |
3 | ! |
4 | - (단항 연산자), ~ (비트 연산자) |
5 | ^ |
6 | * , / , DIV , % , MOD |
7 | - (이항 연산자), + |
8 | <<, >> |
9 | & |
10 | | |
11 | = (관계연산자), <=>, >=, > ,<=, < , <> , !=, IS, LIKE, REGEXP, IN |
12 | BETWEEN, CASE, WHEN, THEN, ELSE |
13 | NOT |
14 | AND, && |
15 | XOR |
16 | OR, || |
17 | =(대입연산자), := |
출처 및 참고 문헌(reference)
https://dev.mysql.com/doc/refman/8.0/en/preface.html
MySQL :: MySQL 8.0 Reference Manual :: Preface and Legal Notices
Preface and Legal Notices This is the Reference Manual for the MySQL Database System, version 8.0, through release 8.0.32. Differences between minor versions of MySQL 8.0 are noted in the present text with reference to release numbers (8.0.x). For license
dev.mysql.com
http://www.tcpschool.com/mysql/mysql_operator_arithmetic
코딩교육 티씨피스쿨
4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등
tcpschool.com
https://www.yalco.kr/@sql/1-2/
각종 연산자들
어려운 프로그래밍 개념들을 쉽게 설명해주는 유튜브 채널 '얄팍한 코딩사전'. 영상에서 다 알려주지 못한 정보들이나 자주 묻는 질문들의 답변들, 예제 코드들을 얄코에서 확인하세요!
www.yalco.kr
'SQL' 카테고리의 다른 글
SQL | MySQL | 내장 함수(2) - 날짜, 시간 함수 (0) | 2023.03.09 |
---|---|
SQL | MySQL | 내장 함수(1) - 숫자, 문자와 관련된 함수 (0) | 2023.03.08 |
SQL | MySQL | SELECT(1) - 간단한 데이터 조작 (0) | 2023.03.07 |
SQL | MySQL | 데이터 수정, 삭제 - Update, Delete (0) | 2023.03.06 |
SQL | MySQL | LOAD DATA INFILE - 파일 데이터 불러오기 (0) | 2023.03.05 |