...
산술 연산자
산술 연산자 | 설명 |
+, - ,*, / | 덧셈, 뺄셈, 곱셈, 나눗셈 |
DIV | 왼쪽 피연산자를 오른쪽 피연산자로 나눈 후, 소수 부분을 버림. |
%또는 MOD | 왼쪽 피연산자를 오른쪽 피연산자로 나눈 후, 그 나머지를 반환함. |
SELECT
504.7 + 13,
504.7 * 0.9,
504.7 / 2,
504.7 DIV 2,
504.7 % 2;
대입 연산자
대입 연산자 | 설명 |
= | 왼쪽 피연산자에 오른쪽 피연산자를 대입함. (SET 문이나 UPDATE 문의 SET 절에서만 대입연산자로 사용됨) |
:= | 왼쪽 피연산자에 오른쪽 피연산자를 대입함. |
MySQL에서 '=' 연산자는 두 가지 의미로 해석됩니다.
우선 SET 문이나 UPDATE 문의 SET 절에서 사용되면, 왼쪽 피연산자에 오른쪽 피연산자를 대입하는 대입 연산자로 해석됩니다.
이외에서 사용되면, 왼쪽 피연산자와 오른쪽 피연산자를 비교하는 비교 연산자로 해석됩니다.
이처럼 '=' 연산자는 상황에 따라 다르게 해석될 수 있으므로, 작성자의 의도와는 다르게 해석될 여지가 있습니다.
따라서 MySQL에서는 언제나 대입 연산자로만 해석되는 두 번째 대입 연산자(:=)를 별도로 제공하고 있습니다.
첫 번째 대입 연산자(=)와 달리 두 번째 대입 연산자(:=)는 절대로 비교 연산자로 해석되지 않습니다.
비교 연산자
비교 연산자 | 설명 |
= | 왼쪽 피연산자와 오른쪽 피연산자가 같으면 참을 반환함. |
!=, <> | 왼쪽 피연산자와 오른쪽 피연산자가 같지 않으면 참을 반환함. |
<, <=, >, >= | |
<=> | 양쪽의 피연산자가 모두 NULL이면 참을 반환하고, 하나의 피연산자만 NULL이면 거짓을 반환함. |
IS / IS NOT |
왼쪽 피연산자와 오른쪽 피연산자가 같으면 참을 반환함. (오른쪽 피연산자가 불리언 값인 TRUE, FALSE, UNKNOWN 값일 때 사용함) |
IS NULL / IS NOT NULL |
피연산자의 값이 NULL이면 참을 반환함. DNO=NULL 표현불가능. 올바른 표현 : DNO is null |
BETWEEN min AND max / NOT BETWEEN min AND max |
피연산자의 값이 min 값보다 크거나 같고, max 값보다 작거나 같으면 참을 반환함. |
IN() / NOT IN() |
피연산자의 값이 인수로 전달받은 리스트에 존재하면 참을 반환함. ex) DNO=1 OR DNO=3 == DNO IN(1,3) select name, addr from usertbl where addr NOT IN ('경남','전남','경북'); -- IN 연산자는 조건의 범위를 지정하는 데 사용된다. 값은 콤마( , )로 구분하여 괄호 내에 묶으며, 이 값 중에서 하나 이상과 일치하면 조건에 맞는 것. 기본적으로 or 개념이다. |
ANY() | - 다수의 비교값 중 한개라도 만족하면 true 이다. - IN 과 다른점은 비교 연산자를 사용한다는 점이다. SELECT * FROM emp WHERE sal = ANY(950, 3000, 1250) - 'sal = 950 OR sal = 3000 OR sal = 1250' 와 동일하다. SELECT * FROM emp WHERE sal < ANY(950, 3000, 1250) - 'sal < 950 OR sal < 3000 OR sal < 1250' 와 동일하다. |
All() | - 전체 값을 비교하여 모두 만족해야만 true 이다. SELECT * FROM emp WHERE sal = ALL(950, 3000, 1250) - 'sal = 950 AND sal = 3000 AND sal = 1250' SELECT * FROM emp WHERE sal > ALL(950, 3000, 1250) - 3000보다 큰 값만 표시된다. 'sal > 950 AND sal > 3000 AND sal > 1250' 과 동일하다 |
대부분의 프로그래밍 언어에서 동등 연산자는 '=='로 사용합니다.
하지만 MySQL에서는 대입 연산자와 같은 모양인 '='로 사용한다는 점을 주의해야 합니다.
논리 연산자
논리 연산자 | 설명 |
AND, && | 논리식이 모두 참이면 참을 반환함. |
OR, || | 논리식 중에서 하나라도 참이면 참을 반환함. |
XOR | 두 값이 같으면 거짓 두 값이 다르면 참 |
NOT, ! | 논리식의 결과가 참이면 거짓을, 거짓이면 참을 반환함. ex) where not addr = 값 |
비트 연산자
비트 연산자 | 설명 |
& | 대응되는 비트가 모두 1이면 1을 반환함. (AND 연산) |
| | 대응되는 비트 중에서 하나라도 1이면 1을 반환함. (OR 연산) |
^ | 대응되는 비트가 서로 다르면 1을 반환함. (XOR 연산) |
~ | 비트를 1이면 0으로, 0이면 1로 반전시킴. (NOT 연산) |
<< | 지정한 수만큼 비트를 전부 왼쪽으로 이동시킴. (left shift 연산) |
>> | 부호를 유지하면서 지정한 수만큼 비트를 전부 오른쪽으로 이동시킴. (right shift 연산) |
비트 한칸한칸 씩 비교하는 것이다.
SELECT
b'1000' & b'1111', -- 첫 번째 비트만이 둘 다 1이므로, 연산 결과는 b'1000'이 됨.
b'1000' | b'1111', -- 모든 비트에 하나라도 1이 포함되어 있으므로, 연산 결과는 b'1111'이 됨.
b'1000' ^ b'1111', -- 첫 번째 비트를 제외한 모든 비트가 서로 다르므로, 연산 결과는 b'0111'이 됨.
b'1100' >> 1, -- 모든 비트를 1비트씩 오른쪽으로 이동시키므로, 연산 결과는 b'0110'이 됨.
b'1100' >> 2; -- 모든 비트를 2비트씩 오른쪽으로 이동시키므로, 연산 결과는 b'0011'이 됨.
인용한 부분에 있어 만일 누락된 출처가 있다면 반드시 알려주시면 감사하겠습니다
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.