SQL WHERE 子句

在本教程中,您將學(xué)習(xí)如何使用SQL從表中選擇特定記錄。

根據(jù)條件選擇記錄

在上一章中,我們學(xué)習(xí)了如何從表或表列中獲取所有記錄。但是,在現(xiàn)實(shí)世界中,我們通常只需要選擇,更新或刪除滿足某些條件的那些記錄,例如屬于某個(gè)年齡段或某個(gè)國(guó)家/地區(qū)的用戶等。

WHERE子句用于與SELECT,UPDATEDELETE。但是,您將在接下來(lái)的章節(jié)中看到將此子句與其他語(yǔ)句一起使用。

語(yǔ)法

WHERE子句與SELECT 語(yǔ)句一起使用,僅提取滿足指定條件的那些記錄?;菊Z(yǔ)法可以通過(guò)以下方式給出:

SELECT column_list FROM table_name WHERE condition;

在這里,column_list是要獲取其值的數(shù)據(jù)庫(kù)表的列/字段的名稱,例如name,age,country等。但是,如果要獲取表中所有可用列的值,則可以使用以下語(yǔ)法:

SELECT * FROM table_name WHERE condition;

現(xiàn)在,讓我們看一些示例來(lái)演示其實(shí)際工作原理。

假設(shè)我們?cè)跀?shù)據(jù)庫(kù)中有一個(gè)名為employees的表,其中包含以下記錄:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      1 | Ethan Hunt   | 2001-05-01 |   5000 |       4 |
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
|      5 | Martin Blank | 2008-06-24 |   5600 |    NULL |
+--------+--------------+------------+--------+---------+

使用WHERE子句過(guò)濾記錄

以下SQL語(yǔ)句將從employees表中返回其薪水大于7000的所有employee 。該WHERE子句只是過(guò)濾掉不需要的數(shù)據(jù)。

SELECT * FROM employees
WHERE salary > 7000;

執(zhí)行后,輸出將如下所示:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
+--------+--------------+------------+--------+---------+

正如您看到的,輸出僅包含薪水大于7000的那些雇員。類似地,您可以從特定列中獲取記錄,如下所示:

SELECT emp_id, emp_name, hire_date, salary
FROM employees
WHERE salary > 7000;

執(zhí)行上面的語(yǔ)句后,您將獲得如下輸出:

+--------+--------------+------------+--------+
| emp_id | emp_name     | hire_date  | salary |
+--------+--------------+------------+--------+
|      3 | Sarah Connor | 2005-10-18 |   8000 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |
+--------+--------------+------------+--------+

以下語(yǔ)句將獲取其雇員ID為2的雇員的記錄。

SELECT * FROM employees
WHERE emp_id = 2;

該語(yǔ)句將產(chǎn)生以下輸出:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
+--------+--------------+------------+--------+---------+

這次,我們?cè)谳敵鲋袃H獲得一行,因?yàn)?em>emp_id對(duì)每個(gè)員工都是唯一的。

WHERE子句中允許的運(yùn)算符

SQL支持許多可在WHERE子句中使用的運(yùn)算符,下表總結(jié)了最重要的運(yùn)算符。

操作員描述在線示例
=等于WHERE id = 2
>比...更棒WHERE age > 30
<少于WHERE age < 18
>=大于或等于WHERE rating >= 4
<=小于或等于WHERE price <= 100
LIKE簡(jiǎn)單模式匹配WHERE name LIKE 'Dav'
IN檢查指定值是否與列表或子查詢中的任何值匹配WHERE country IN ('USA', 'UK')
BETWEEN檢查指定值是否在值范圍內(nèi)WHERE rating BETWEEN 3 AND 5
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清