MySQL Tutorial/Logic Operator/Introduction

Материал из SQL эксперт
Перейти к: навигация, поиск

Logical Operators

Name Description AND, && Logical AND NOT, ! Negates value ||, OR Logical OR XOR Logical XOR

In SQL, all logical operators evaluate to TRUE, FALSE, or NULL (UNKNOWN).

In MySQL, these are implemented as 1 (TRUE), 0 (FALSE), and NULL.

Logical operator with parenthesis

mysql>
mysql>
mysql> CREATE TABLE Books(
    ->    BookID SMALLINT NOT NULL PRIMARY KEY,
    ->    BookName VARCHAR(40) NOT NULL,
    ->    Category VARCHAR(15),
    ->    InStock SMALLINT NOT NULL,
    ->    OnOrder SMALLINT NOT NULL
    -> );
Query OK, 0 rows affected (0.01 sec)
mysql>
mysql>
mysql> INSERT INTO Books VALUES (101, "Java",           "Nonfiction", 12, 13),
    ->                          (102, "MySQL",          "Fiction",    17, 20),
    ->                          (103, "Oracle",         "Nonfiction", 23, 33),
    ->                          (104, "VB.net",         "Nonfiction", 32, 12),
    ->                          (105, "www.sqle.ru", "Fiction",    6,  35),
    ->                          (106, "Perl",           "Fiction",    28, 14),
    ->                          (107, "Php",             NULL,        46, 3);
Query OK, 7 rows affected (0.00 sec)
Records: 7  Duplicates: 0  Warnings: 0
mysql>
mysql>
mysql> select * from Books;
+--------+----------------+------------+---------+---------+
| BookID | BookName       | Category   | InStock | OnOrder |
+--------+----------------+------------+---------+---------+
|    101 | Java           | Nonfiction |      12 |      13 |
|    102 | MySQL          | Fiction    |      17 |      20 |
|    103 | Oracle         | Nonfiction |      23 |      33 |
|    104 | VB.net         | Nonfiction |      32 |      12 |
|    105 | www.sqle.ru | Fiction    |       6 |      35 |
|    106 | Perl           | Fiction    |      28 |      14 |
|    107 | Php            | NULL       |      46 |       3 |
+--------+----------------+------------+---------+---------+
7 rows in set (0.00 sec)
mysql>
mysql> SELECT BookName, Category, InStock, OnOrder
    -> FROM Books
    -> WHERE InStock>20 AND (Category IS NULL OR NOT (Category="Fiction"))
    -> ORDER BY BookName;
+----------+------------+---------+---------+
| BookName | Category   | InStock | OnOrder |
+----------+------------+---------+---------+
| Oracle   | Nonfiction |      23 |      33 |
| Php      | NULL       |      46 |       3 |
| VB.net   | Nonfiction |      32 |      12 |
+----------+------------+---------+---------+
3 rows in set (0.00 sec)
mysql>
mysql> drop table Books;
Query OK, 0 rows affected (0.02 sec)
mysql>