본문 바로가기
MySQL

MySQL 연산

by KDW999 2023. 1. 20.

산술 연산자

사칙 연산을 다루는 기본적인 연산자 / 두 개의 피연산자를 가지는 이항 연산자

산술 연산자
설명
+
왼쪽 피연산자에 오른쪽 피연산자를 더함.
-
왼쪽 피연산자에서 오른쪽 피연산자를 뺌.
*
왼쪽 피연산자에 오른쪽의 피연산자를 곱함.
/
왼쪽 피연산자를 오른쪽 피연산자로 나눔.
DIV
왼쪽 피연산자를 오른쪽 피연산자로 나눈 후, 소수 부분을 버림.
%또는 MOD
왼쪽 피연산자를 오른쪽 피연산자로 나눈 후, 그 나머지를 반환함.

 

연산자 우선 순위

0 ()
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 = (대입 연산자), :=

 

위의 표 대로 우선 순위를 가지나 굳이 다 외울 필욘 없다. / 소괄호가 제일 우선 시 되니 연산이 길어지면 소괄호로 구분 정돈 해주자

 

대입 연산자

= 왼쪽 피연산자에 오른쪽 피연산자를 대입함. (SET 문이나 UPDATE 문의 SET 절에서만 대입연산자로 사용됨)
:= 왼쪽 피연산자에 오른쪽 피연산자를 대입함.

 MySQL에선 자바완 다르게 =가 비교 연산자나 대입 연산자로도 활용될 수 있기에 언제나 대입 연산자로 사용되는 :=가 별도로 있다.

SET, UPDATE의 SET문을 제외하면 비교 연산자

 

비교 연산자

좌우 피연산자를 판단하여 참(true)이면 1을 반환, 거짓(false)이면 0반환

 

= 왼쪽 피연산자와 오른쪽 피연산자가 같으면 참을 반환함.
!=, <> 왼쪽 피연산자와 오른쪽 피연산자가 같지 않으면 참을 반환함.
< 왼쪽 피연산자가 오른쪽 피연산자보다 작으면 참을 반환함.
<= 왼쪽 피연산자가 오른쪽 피연산자보다 작거나 같으면 참을 반환함.
> 왼쪽 피연산자가 오른쪽 피연산자보다 크면 참을 반환함.
>= 왼쪽 피연산자가 오른쪽 피연산자보다 크거나 같으면 참을 반환함.
<=> 양쪽의 피연산자가 모두 NULL이면 참을 반환하고, 하나의 피연산자만 NULL이면 거짓을 반환함.
IS 왼쪽 피연산자와 오른쪽 피연산자가 같으면 참을 반환함.
(오른쪽 피연산자가 불리언 값인 TRUE, FALSE, UNKNOWN 값일 때 사용함)
IS NOT 왼쪽 피연산자와 오른쪽 피연산자가 같지 않으면 참을 반환함.
(오른쪽 피연산자가 불리언 값인 TRUE, FALSE, UNKNOWN 값일 때 사용함)
IS NULL 피연산자의 값이 NULL이면 참을 반환함.
IS NOT NULL 피연산자의 값이 NULL이 아니면 참을 반환함.
BETWEEN min AND max 피연산자의 값이 min 값보다 크거나 같고, max 값보다 작거나 같으면 참을 반환함.
NOT BETWEEN min AND max 피연산자의 값이 min 값보다 작거나 max 크면 참을 반환함.
IN() 피연산자의 값이 인수로 전달받은 리스트에 존재하면 참을 반환함.
NOT IN() 피연산자의 값이 인수로 전달받은 리스트에 존재하지 않으면 참을 반환함.

* 대부분 프로그래밍 언어에서 동등 연산자는 == 이나 SQL은 =가 동등, 대입으로도 쓰인다.

 

논리 연산자

논리식을 판단하여 참이면 1, 거짓이면 0을 반환

 

논리 연산자
설명
AND
논리식이 모두 참이면 참을 반환함.
&&
논리식이 모두 참이면 참을 반환함.
OR
논리식 중에서 하나라도 참이면 참을 반환함.
||
논리식 중에서 하나라도 참이면 참을 반환함.
XOR
논리식이 서로 다르면 참을 반환함.
NOT
논리식의 결과가 참이면 거짓을, 거짓이면 참을 반환함.
!
논리식의 결과가 참이면 거짓을, 거짓이면 참을 반환함.

 

흐름 제어

ㅡ CASE : 연산자의 값을 비교해 값이 일치하면 그에 따른 결과 반환 ( 자바의 switch문? )

 

1. CASE value
WHEN [compare_value] THEN result
[WHEN [compare_value] THEN result] ...
[ELSE result]
END

Value와 WHEN의 compare_value의 값이 같으면 result 반환

 

ㅡ IF() : 첫 번째 인수의 논리값에 따라 값 반환

SELECT IF(0 < 1, 'yes', 'no');

첫 번째 인수 0 < 1은 참 이기에 두 번째 인수 'yes' 반환, 거짓이면 세 번째 인수를 반환한다.

 

 

ㅡ IFNULL() : 함수는 첫 번째 인수가 NULL 인지 판별

SELECT IFNULL(NULL, 'null입니다.');

첫 번째 인자가 NULL이면 두 번째 인자가 반환되며, 첫 번째 인자가 NULL이 아니면 첫 번째 인자 자체가 반환된다.

 

 

ㅡ NULLIF() : 인수로 전달받은 두 값을 비교해 같으면 NULL 반환, 다르면 첫 번째 인자 반환

NULLIF(expr1, expr2);

 

패턴 매칭

ㅡ 데이터의 특정 패턴을 검색하기 위한 패턴 매칭 연산자

 

LIKE : 특정 패턴을 포함하는 데이터를 검색할 때 사용

SELECT * FROM Reservation
WHERE Name LIKE '장%';

SELECT * FROM Reservation
WHERE Name LIKE '%동';

SELECT * FROM Reservation
WHERE Name LIKE '&우동%';

1. 장으로 시작하는 데이터 탐색

2. 동으로 끝나는 데이터 탐색

3. 사이에 우동이 들어간 데이터 탐색

 

* 특정 패턴을 포함하지 않는 데이터를 찾고 싶으면 NOT LIKE 연산자를 사용하면 된다.

 

→ LIKE 사용 시 %, _ 를 사용할 수 있는데

%는 0개 이상의 문자를 대체

_는 _갯수 당 1개의 문자를 대체

 

SELECT * FROM Reservation
WHERE RoomNum LIKE '20_';

20_ → 20이 들어가는 총 3자리 데이터 찾기

댓글