VillageSQL is a drop-in replacement for MySQL with extensions.
All examples on this page work on VillageSQL. Install Now →
rental_rate * 1.1의 *입니다. 이 수업은 일상적으로 쓰는 연산자들과, 모두를 걸려 넘어지게 하는 한 가지 동작, 즉 NULL이 나타날 때 일어나는 일을 다룹니다.
시작하기 전에 mysql -u root -p sakila로 클라이언트를 여세요.
연산자의 동작 방식
LEFT_VALUE와 RIGHT_VALUE를 값으로, OPERATOR를 아래의 기호 중 하나로 바꾸세요. 값은 열일 수도 있고 리터럴일 수도 있는데, 리터럴은 문장에 직접 쓴 숫자나 텍스트 조각을 뜻합니다.
FROM이 없는 SELECT는 표현식을 평가해 단일 행을 반환하므로, 연산자를 시험해 보는 가장 빠른 방법입니다.
예제
- 비교는 1 또는 0을 반환합니다
MySQL에는 별도의 불리언 타입이 없습니다. 성립하는 비교는 정수 1을 반환하고, 성립하지 않는 비교는 0을 반환합니다. TRUE와 FALSE라는 단어는 그 2개의 정수를 다르게 쓴 것입니다.
==가 아니라 단일 =입니다. <>와 !=는 둘 다 같지 않음을 뜻하고 똑같이 동작합니다. 이 튜토리얼은 <>로 씁니다.
- 산술, 그리고 어느 연산자가 더 세게 결합하는가
2 + 3 * 4는 14이므로, 곱셈이 먼저 일어났습니다. 괄호는 그것을 뒤집어 20으로 만듭니다. /는 2개의 정수 사이에서도 소수 결과를 주고, DIV는 소수 부분을 버리며, %는 나머지를 줍니다.
- DIV와 %는 나눗셈만큼 세게 결합합니다
-가 /보다 세게 결합했다면 첫 번째 열은 8이 아니라 3이었을 것입니다.
- 연산자는 열에도 동작합니다
리터럴에 할 수 있는 것은 무엇이든 열에도 할 수 있습니다.
NULL은 NULL을 포함해 아무것과도 같지 않습니다
정렬 수업에서NULL을 한 번도 기록되지 않은 값의 표시로 만났습니다. 여기서 NULL은 어떤 실제 값과도 다르게 동작합니다.
NULL = NULL은 1이나 0이 아니라 NULL을 반환합니다. NULL <> NULL도 마찬가지입니다. 예제 1의 모든 연산자가 NULL에 대해 그렇게 동작합니다.
<=>가 예외입니다. 2개의 값을 비교해 언제나 1 또는 0을 반환하고 결코 NULL을 반환하지 않으며, NULL을 자기 자신과 같은 것으로 다룹니다.
그 결과 = NULL은 결코 아무것과도 일치하지 않습니다. 값이 없는 행을 찾아야 할 때는 IS NULL이 그 검사이고, 보통의 비교처럼 1 또는 0을 반환합니다.
요약
- 비교에서는 참이나 거짓이 아니라
1또는0이 돌아옵니다. - 같음에는
=를, 같지 않음에는<>를 사용하세요. *,/,DIV,%는+와-보다 세게 결합한다는 것을 기억하세요.- 정수 나눗셈에는
DIV를, 나머지에는%를 사용하세요. NULL이 관련된 모든 보통의 비교는NULL을 내므로, 대신<=>나IS NULL을 사용하세요.
함께 보기
- SELECT — 이 표현식들이 들어가는 곳
- 열 별칭 — 비교가 만드는 열에 이름 붙이기
- MySQL의 NULL — 언어의 나머지 부분에서 NULL이 동작하는 방식