在本教程中,您將學(xué)習(xí)如何使用SQL從表中選擇特定記錄。
在上一章中,我們學(xué)習(xí)了如何從表或表列中獲取所有記錄。但是,在現(xiàn)實(shí)世界中,我們通常只需要選擇,更新或刪除滿足某些條件的那些記錄,例如屬于某個(gè)年齡段或某個(gè)國(guó)家/地區(qū)的用戶等。
WHERE子句用于與SELECT,UPDATE和DELETE。但是,您將在接下來(lái)的章節(jié)中看到將此子句與其他語(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 | +--------+--------------+------------+--------+---------+
以下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è)員工都是唯一的。
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 |