1. 산술 연산자
덧셈 연산자 :
mysql의 +는 값의 덧셈만을 의미하며 숫자형이 아닌 경우 값으로 변환을 시도하고 변환에 실패하면 0이 된다.
나누기 연산자 :
- 숫자를 정수로 나눈 후 완전히 나눌 수 있는지 여부에 관계없이 결과는 소수점 이하 4자리의 부동 소수점 숫자입니다.
- 0으로 나눈 숫자는 NULL입니다. Null은 공간을 차지합니다.
2. 비교 연산자
비교 결과가 참이면 1, 거짓이면 0, 그렇지 않으면 NULL을 반환합니다.
- =: 같음 연산자. 등호 양쪽의 값이 문자열인 경우 문자열에 있는 문자의 ANSI 코드로 비교합니다. 등호 양쪽의 값 중 하나가 정수이고 다른 하나가 문자열이면 비교를 위해 문자열을 숫자로 변환합니다. 등호 양쪽의 값, 문자열 또는 표현식 중 하나가 NULL인 경우 비교 결과는 NULL입니다. SQL의 할당 기호는 예를 들어 :=를 사용합니다.
update table set name := 'name1' where id = 1;
- <=>: 금고는 연산자와 같습니다. 같음 연산자와 유사하게 차이점은 두 피연산자 모두 NULL일 때 반환 값이 NULL이 아닌 1이고, 하나의 피연산자가 NULL일 때 반환 값이 NULL이 아니라 0이라는 점입니다.
- <> 및 !=: 연산자와 같지 않습니다. 같지 않음 연산자는 NULL 값을 평가할 수 없습니다. 양쪽의 값 중 하나라도 NULL이거나 양쪽 모두 NULL이면 결과는 NULL입니다.
- 최소: 최소 연산자는 여러 값 중 가장 작은 값을 반환합니다. 예
select least(a, b, c);
. 매개 변수가 정수 또는 부동 소수점 숫자인 경우 least는 가장 작은 값을 반환하고 매개 변수가 문자열인 경우 알파벳의 첫 번째 문자를 반환하며 비교 값 목록에 NULL이 있는 경우 크기를 반환할 수 없습니다. 판단되고 반환 값은 NULL입니다. - 최대값: 최대값 연산자는 여러 값 중 가장 큰 값을 반환합니다. 예를 들어
select greatest(a, b, c);
- 에서: 연산자에 속합니다. 주어진 값이 NULL이면 결과는 NULL
- like: 퍼지 매칭 연산자. 와일드카드 _는 한 문자만 일치시킬 수 있습니다. 주어진 값 또는 일치 조건이 NULL이면 반환 결과는 NULL입니다.
- regexp: 값이 정규식 규칙을 준수하는지 여부를 결정하는 정규식 연산자입니다. 예를 들어
select 'abc' regexp '^a';
반환된 결과는 1입니다. expr 또는 일치 조건이 NULL이면 결과는 NULL입니다. - rlike: 정규식 연산자, 값이 정규식 규칙을 준수하는지 여부를 결정합니다. 예를 들어
select a from table where b rlike c;
3. 논리 연산자
논리 연산자는 1, 0 또는 NULL을 반환합니다.
- not: 논리 NOT 연산자. 주어진 값이 0이면 1을 반환하고, 주어진 값이 0이 아니면 0을 반환하고, 주어진 값이 NULL이면 NULL을 반환합니다. 예를 들어
select not (1 + 1);
반환된 결과는 0입니다. - and: 논리 AND 연산자. 주어진 값이 모두 0이 아니고 NULL이 아닌 경우
1을 반환하고 하나 이상의 값이 0이면 0을 반환하고 그렇지 않으면 NULL을 반환합니다. - 또는: 논리 OR 연산자. 주어진 값이 0이 아닌 값을 가지면 1을 반환, 두 값이 모두 0이면 0을 반환, 한 값이 0이고 다른 값이 NULL이거나 두 값이 모두 NULL이면 NULL을 반환
- xor: 논리적 배타적 또는. 주어진 값 중 하나라도 NULL이면 NULL을 반환하고,
NULL이 아닌 두 값이 모두 0이거나 0이 아니면 0을 반환하고, 하나의 값이 0이면 다른 하나는 0이 아니면 1을 반환한다. 예를 들어select a xor b;
4. 비트 연산자
비트 연산자는 먼저 피연산자를 이진수로 변환한 다음 비트 연산을 수행하고 마지막으로 계산 결과를 이진수에서 다시 십진수로 변환합니다.
- &: 비트 AND 연산자. 논리 AND 연산은 주어진 값에 해당하는 이진수에 대해 비트 단위로 수행되며 값이 모두 1이면 비트는 1을 반환하고 그렇지 않으면 0을 반환합니다. 예를 들어
select 1 and 10;
2진수 1은 0001, 2진수 10은 1010, 결과는 0000, 십진수 결과는 0입니다. - |: 비트 OR 연산자
- ^: 비트별 XOR 연산자. 주어진 값에 해당하는 이진수에 비트 단위로 논리 XOR 연산을 수행합니다. 값이 다르면 비트는 1을 반환하고 그렇지 않으면 0을 반환합니다. 예를 들어
select 1 ^ 10;
2진수 결과는 1011이고 10진수 결과는 11입니다. - ~: 비트 부정 연산자. 주어진 값의 이진수는 비트 단위로 반전됩니다. 즉, 1은 0으로, 0은 1로 바뀝니다. 예를 들어
select ~1;
, 2진수 결과는 1110이고 10진수 결과는 14입니다. - >>: 비트 오른쪽 시프트 연산자. 지정된 값의 이진수의 모든 비트를 지정된 비트 수만큼 오른쪽으로 이동합니다. 지정된 자릿수만큼 오른쪽으로 이동한 후 오른쪽 하위 비트의 값을 밖으로 이동하여 버리고 왼쪽 상위 비트의 빈 자리를 0으로 채웁니다. 예를 들어
select 10 >> 2;
오른쪽으로 2비트 이동하면 2진수는 0010, 10진수는 2가 됩니다. - <<: 비트 왼쪽 시프트 연산자. 주어진 값의 이진수의 모든 비트를 지정된 비트 수만큼 왼쪽으로 이동합니다. 지정된 자릿수를 왼쪽으로 이동한 후 왼쪽 상위 비트의 값을 밖으로 이동하여 버리고 오른쪽 하위 비트의 빈 자리를 0으로 채웁니다. 예를 들어
select 10 << 2;
왼쪽으로 2비트 이동한 이진수 결과는 00101000이고 십진수 결과는 40입니다.