Variables
A variable is a characteristic notation with a Character
value. This value may be changed over time. Variables in MySQL are represented by the @ character.
mysql> SET @name = 'Arjun';
mysql> SELECT @name;
Operators :
Operators
may be used to build
expressions. operators are very similar to mathematical operators. There are
two kinds of operators. Binary and unary. Binary operators work with
two operands,but unary work with one.
- An operator may have one or two operands.
- An
operand
is one of the inputs (arguments) of an operator.
There are different types of operators:
- Arithmetic operators
- Boolean operators
- Relational operators
- Bitwise operators
- Other operators
- Unary operators
Examples : unary operators.
mysql> SELECT +5, 9;
The + is a no-op. It does not do anything.
mysql> SELECT -(4-54);
The - unary operator changes positive values to
negative and vice versa.
mysql> SELECT NOT (4>8);
The
NOT
operator negates a value. The result of the4>8 comparison is false and the
negation operator negates it to true.
Arithmetic operators
These are some arithmetic operators :
multiplication, division, integer division, addition, subtraction and modulo.
mysql> SELECT 4 + 7 - 1;
Addition and subtraction operators.
mysql> SELECT 4*3/6;
These are multiplication and division
operators, that we know from mathematics.
mysql> SELECT 7/3, 7 DIV 3;
The above SQL statement shows the difference
between the division and integer division operators. The first returns a
floating point number, the second returns an integer.
mysql> SELECT 15 %43;
The % operator is called the modulo operator.
It finds the remainder of division of one number by another. 11 % 3, 11 modulo 3
is 2, because 3 goes into 11 three times with a remainder of 2.
Logical operators
MySQL understands these logical operators:
AND
,
OR
and
NOT
and
XOR
.
Logical operators return TRUE or FALSE. In MySQL, 1 is true, 0 is false.
The
AND
operator evaluates to true, if both operands are true.
mysql> SELECT FALSE AND FALSE, FALSE AND TRUE,
TRUE AND FALSE, TRUE AND TRUE;
The first three operations evaluate to false,
the last one to true.
mysql> SELECT 5=5 AND 6=6;
Both operands are true, so the result is true
(1).
The
OR
operator evaluates to true, if at least one of the operands is true.
mysql> SELECT FALSE OR FALSE, FALSE OR TRUE,
TRUE OR FALSE, TRUE OR TRUE;
The first operation evaluates to false, other
operations evaluate to true.
The
XOR
operator evaluates to true, if exactly one of the operands is true.
mysql> SELECT FALSE XOR FALSE, FALSE XOR TRUE,
TRUE XOR FALSE, TRUE XOR TRUE;
Two of the operations result in true.
The
NOT
operator is negation operator. It makes true false and false true.
mysql> SELECT NOT TRUE, NOT FALSE;
mysql> SELECT NOT (3=3);
Relational operators
Relational operators are used to compare
values. These operators always result in boolean value.
mysql> SELECT 3*3=9, 9=9;
The = is the equality operator.
mysql> SELECT 3 < 4, 3 <> 5, 4 <= 4, 5 != 5;
Usage of the relational operators is known from mathematics.
Bitwise operators
In the Bitwise operators Decimal numbers are natural to humans. Binary
numbers are native to computers. Binary, octal, decimal or hexadecimal symbols
are only notations of the same number. These operators work with bits of a
binary number. We have binary logical operators and shift operators.
The bitwise and operator performs
bit-by-bit comparison between two numbers. The result for a bit position is 1
only if both corresponding bits in the operands are 1.
00110
& 00011
= 00010
The first number is a binary notation of 6. The
second is 3. The result is 2.
mysql> SELECT 6 & 3, 3 & 6;
The bitwise or operator performs bit-by-bit comparison between two
numbers. The result for a bit position is 1 if either of the corresponding bits
in the operands is 1.
00110
| 00011
= 00111
The result is
00110
or
decimal 7.
mysql> SELECT 7 | 3, 3 | 7;
The bitwise shift operators shift bits to the right or left.
number << n : multiply number 2 to the nth
power
number >> n : divide number by 2 to the nth power
These operators are also called arithmetic
shift.
00110
>> 00001
= 00011
We shift each of the bits of number six to the
right. It is equal to dividing the six by 2. The result is
00011
or decimal 3.
mysql> SELECT 6 >> 1;
00110
<< 00001
= 01100
We shift each of the bits of number six to the
left. It is equal to multiplying the number six by 2. The result is
01100
or decimal 12.
mysql> SELECT 6 << 1;
Other operators
There are some other operators left. These
include IS
,
IN
,
LIKE
,
REGEXP
,
BETWEEN
.
The
IS
operator tests if an operand is a boolean value.
mysql> SET @running = FALSE;
mysql> SELECT @running IS FALSE;
We set a variable to boolean false. We check if
the variable is FALSE using the
IS
operator.
We can use the
IN
operator in two cases.
mysql> SELECT 'Ram' IN ('Ram', 'Hari',
'Mohan');
Here we check, if the string value 'Ra,' is in
the list of names, following the
IN
operator. The return is a boolean value.
Precedence
The operator precedence tells us which
operators are evaluated first. The precedence level is necessary to avoid
ambiguity in expressions.
4 + 5 * 5
Like in mathematics, the multiplication
operator has a higher precedence than addition operator. So the outcome is 28.
(3 + 8) * 5
To change the order of evaluation, we can use
square brackets. Expressions inside square brackets are always evaluated first.
mysql> SELECT 4+5*5, (3+8)*5;
The first expression evaluates to 28, because
the multiplication operator has a higher precedence, than the addition one. In
the second example, we have used square brackets to change the order of
precedence. So the second expressions evaluates to 40.
Associativity
Sometimes the precedence is not satisfactory to
determine the outcome of an expression. There is another rule called
associativity. The associativity of operators
determines the order of evaluation of operators with the same precedence
level.
9 / 3 * 3
What is the outcome of this expression? 9 or 1?
The multiplication, deletion and the modulo operator are left to right
associated. So the expression is evaluated this way:
(9 / 3) * 3
and the result is 9.
mysql> SELECT 9 / 3 * 3;
The associativity rule is left to right.
mysql> SELECT 0 AND 0 OR 1;
The associativity rule is again left to right.
If it was right to left, the result would be 0.
Arithmetic, boolean, relational and bitwise
operators are all left to right associated.