Arithmetic Operators
MySQL has the arithmetic operators you would expect: addition (+), subtraction (-), multiplication (*), and division (/). Division by zero produces a safe NULL result.
Comparison Operators
The main trick to remember with comparison operators is that, with the exception of a few special cases, comparing anything to NULL gives a NULL result. This includes comparing NULL to NULL:
select NULL=NULL;
+-----------+
| NULL=NULL |
+-----------+
| NULL |
+-----------+
1 row in set (0.00 sec)
Compare this to the following query:
select NULL IS NULL;
+--------------+
| NULL IS NULL |
+--------------+
| 1 |
+--------------+
1 row in set (0.00 sec)
This reinforces the point that we made in Chapter 6, that you must be careful when using comparison operators when a NULL may be involved.
A second point to remember is that string comparisons in MySQL are case insensitive for the most part. If you want strings to be compared in a case-sensitive fashion, prefix one of them with the keyword BINARY. For example,
select * from department where name='marketing';
This query will match the word 'marketing' regardless of case, and we will get the following results:
+---------------+-----------+
| departmentID | name |
+---------------+-----------+
| 130 | Marketing |
+---------------+-----------+
1 row in set (0.41 sec)
If case is important, we can add the keyword binary as follows:
select * from department where name = binary 'marketing';
This will give us no matching rows in the employee database:
Empty set (0.18 sec)
Having said all that, let's look at the comparison operators. The most commonly used ones are shown in Table 8.1.
Table 8.1. Comparison Operators Operator
Meaning
=
Equality
!= or <>
Inequality
<
Less than
<=
Less than or equal to
>
Greater than
>=
Greater than or equal to
n BETWEEN min AND max
Range testing
n IN (set)
Set membership. Can be used with a list of literal values or expressions or with a subquery as the set. An example of a set is (apple, orange, pear)
<=>
NULL safe equal. This will return 1 (true) if we compare two NULL values
n IS NULL
Use to test for a NULL value in n
ISNULL(n)
Use to test for a NULL value in n
Logical Operators
MySQL supports all the usual logical operators that can be used to join expressions. Logical expressions in MySQL can evaluate to 1 (true), 0 (false), or NULL. In addition, MySQL interprets any nonzero, non-null value as true.
Some of the truth tables are a little different from what you might expect when NULLs are involved. The logical operators are shown in Table 8.2.
Table 8.2. Logical Operators Operator
Example
Meaning
AND or &&
n && m
Logical AND. Here is the truth table:
true&&true = true
false&&anything = false
All other expressions evaluate to NULL.
OR or ||
n || m
Logical OR. Here is the truth table:
true||anything = true
NULL||false = NULL
NULL||NULL = NULL
false||false = false
NOT or !
NOT n
Logical NOT. Here is the truth table:
!true = false
!false = true
!NULL = NULL
XOR
n XOR m
Logical exclusive OR. Here is the truth table:
true XOR true = false
true XOR false = true
false XOR true = true
NULL XOR n = NULL
n XOR NULL = NULL
No comments:
Post a Comment