SQL And運算符

本教程將介紹SQL AND運算符,並演示如何將其應用於在SQL語句的WHERE子句中形成條件。

2. SQL AND運算符簡介

AND運算符是一個邏輯運算符,它在SELECT,UPDATE或DELETE語句的WHERE子句中組合了兩個布爾表達式。 以下說明了AND運算符的語法:

expression1 AND expression2;

如果兩個表達式的計算結果爲true,則AND運算符返回true。 如果兩個表達式中的一個爲false,即使其中一個表達式爲NULL,則AND運算符返回false

下表說明了比較truefalseNULL值時AND運算符的結果:

-

TRUE

FALSE

NULL

TRUE

TRUE

FALSE

NULL

FALSE

FALSE

FALSE

FALSE

NULL

NULL

FALSE

NULL

1. SQL AND運算符示例

我們將使用示例數據庫中的employees表來演示SQL AND運算符。

mysql> DESC employees;
+---------------+--------------+------+-----+---------+----------------+
| Field         | Type         | Null | Key | Default | Extra          |
+---------------+--------------+------+-----+---------+----------------+
| employee_id   | int(11)      | NO   | PRI | NULL    | auto_increment |
| first_name    | varchar(20)  | YES  |     | NULL    |                |
| last_name     | varchar(25)  | NO   |     | NULL    |                |
| email         | varchar(100) | NO   |     | NULL    |                |
| phone_number  | varchar(20)  | YES  |     | NULL    |                |
| hire_date     | date         | NO   |     | NULL    |                |
| job_id        | int(11)      | NO   | MUL | NULL    |                |
| salary        | decimal(8,2) | NO   |     | NULL    |                |
| manager_id    | int(11)      | YES  | MUL | NULL    |                |
| department_id | int(11)      | YES  | MUL | NULL    |                |
+---------------+--------------+------+-----+---------+----------------+
10 rows in set

以下語句查找同時具有工作ID是9和薪水大於5000的所有員工:

SELECT
    first_name, last_name, job_id, salary
FROM
    employees
WHERE
    job_id = 9
AND salary > 5000;

執行上面查詢語句,得到以下結果 -

+------------+-----------+--------+--------+
| first_name | last_name | job_id | salary |
+------------+-----------+--------+--------+
| Alexander  | Lee       |      9 | 9000   |
| Bruce      | Wong      |      9 | 6000   |
+------------+-----------+--------+--------+
2 rows in set

要查找1997年到1998年之間加入公司的所有員工,使用AND運算符,如下所示:

SELECT
    first_name, last_name, hire_date
FROM
    employees
WHERE
    YEAR (hire_date) >=1997
AND YEAR (hire_date) <= 1998;

執行上面示例代碼,得到以下結果 -

SQL And運算符

SQL AND運算符和短路計算

短路功能允許數據庫系統在確定結果後立即停止評估邏輯表達式的其餘部分。

讓我們看一個例子來更好地理解短路計算功能的工作原理。

請參閱以下條件:

1 = 0 AND 1 = 1;

數據庫系統首先處理兩個比較,並使用AND運算符來評估兩個結果。

但是,使用短路評估功能,數據庫系統只需要評估表達式的左側部分,因爲左側部分(1 = 0)返回false,導致整個條件返回false,而不管右側部分條件的結果如何。

因此,短路功能可以減少CPU計算時間,並且在某些情況下有助於防止運行時錯誤。 考慮以下情況:

1 = 0 AND 1/0;

如果數據庫系統支持短路功能,則不會評估導致除零錯誤的表達式(1/0)的右側部分。

現在,您應該瞭解SQL AND運算符的工作原理以及如何應用它以在查詢中形成複雜查詢條件。