The usual arithmetic operators are available. The result is determined according to the following rules:
- In the case of - -,- +, and- *, the result is calculated with- BIGINT(64-bit) precision if both operands are integers.
- If both operands are integers and any of them are unsigned, the result is an unsigned integer. For subtraction, if the - NO_UNSIGNED_SUBTRACTIONSQL mode is enabled, the result is signed even if any operand is unsigned.
- If any of the operands of a - +,- -,- /,- *,- %is a real or string value, the precision of the result is the precision of the operand with the maximum precision.
- In division performed with - /, the scale of the result when using two exact-value operands is the scale of the first operand plus the value of the- div_precision_incrementsystem variable (which is 4 by default). For example, the result of the expression- 5.05 / 0.014has a scale of six decimal places (- 360.714286).
        These rules are applied for each operation, such that nested
        calculations imply the precision of each component. Hence,
        (14620 / 9432456) / (24250 / 9432456),
        resolves first to (0.0014) / (0.0026), with
        the final result having 8 decimal places
        (0.60288653).
      
Because of these rules and the way they are applied, care should be taken to ensure that components and subcomponents of a calculation use the appropriate level of precision. See Section 14.10, “Cast Functions and Operators”.
For information about handling of overflow in numeric expression evaluation, see Section 13.1.7, “Out-of-Range and Overflow Handling”.
        Arithmetic operators apply to numbers. For other types of
        values, alternative operations may be available. For example, to
        add date values, use DATE_ADD();
        see Section 14.7, “Date and Time Functions”.
- Addition: - mysql> SELECT 3+5; -> 8
- Subtraction: - mysql> SELECT 3-5; -> -2
- Unary minus. This operator changes the sign of the operand. - mysql> SELECT - 2; -> -2
- Multiplication: - mysql> SELECT 3*5; -> 15 mysql> SELECT 18014398509481984*18014398509481984.0; -> 324518553658426726783156020576256.0 mysql> SELECT 18014398509481984*18014398509481984; -> out-of-range error- The last expression produces an error because the result of the integer multiplication exceeds the 64-bit range of - BIGINTcalculations. (See Section 13.1, “Numeric Data Types”.)
- Division: - mysql> SELECT 3/5; -> 0.60- Division by zero produces a - NULLresult:- mysql> SELECT 102/(1-1); -> NULL- A division is calculated with - BIGINTarithmetic only if performed in a context where its result is converted to an integer.
- Integer division. Discards from the division result any fractional part to the right of the decimal point. - If either operand has a noninteger type, the operands are converted to - DECIMALand divided using- DECIMALarithmetic before converting the result to- BIGINT. If the result exceeds- BIGINTrange, an error occurs.- mysql> SELECT 5 DIV 2, -5 DIV 2, 5 DIV -2, -5 DIV -2; -> 2, -2, -2, 2
- Modulo operation. Returns the remainder of - Ndivided by- M. For more information, see the description for the- MOD()function in Section 14.6.2, “Mathematical Functions”.