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
。
下表說明了比較true
,false
和NULL
值時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運算符和短路計算
短路功能允許數據庫系統在確定結果後立即停止評估邏輯表達式的其餘部分。
讓我們看一個例子來更好地理解短路計算功能的工作原理。
請參閱以下條件:
1 = 0 AND 1 = 1;
數據庫系統首先處理兩個比較,並使用AND
運算符來評估兩個結果。
但是,使用短路評估功能,數據庫系統只需要評估表達式的左側部分,因爲左側部分(1 = 0
)返回false
,導致整個條件返回false
,而不管右側部分條件的結果如何。
因此,短路功能可以減少CPU計算時間,並且在某些情況下有助於防止運行時錯誤。 考慮以下情況:
1 = 0 AND 1/0;
如果數據庫系統支持短路功能,則不會評估導致除零錯誤的表達式(1/0)的右側部分。
現在,您應該瞭解SQL AND
運算符的工作原理以及如何應用它以在查詢中形成複雜查詢條件。