在本教程中,您將學習如何使用SQL從表中選擇特定記錄。
在上一章中,我們學習了如何從表或表列中獲取所有記錄。但是,在現(xiàn)實世界中,我們通常只需要選擇,更新或刪除滿足某些條件的那些記錄,例如屬于某個年齡段或某個國家/地區(qū)的用戶等。
WHERE子句用于與SELECT,UPDATE和DELETE。但是,您將在接下來的章節(jié)中看到將此子句與其他語句一起使用。
WHERE子句與SELECT 語句一起使用,僅提取滿足指定條件的那些記錄?;菊Z法可以通過以下方式給出:
SELECT column_list FROM table_name WHERE condition;
在這里,column_list是要獲取其值的數(shù)據(jù)庫表的列/字段的名稱,例如name,age,country等。但是,如果要獲取表中所有可用列的值,則可以使用以下語法:
SELECT * FROM table_name WHERE condition;
現(xiàn)在,讓我們看一些示例來演示其實際工作原理。
假設我們在數(shù)據(jù)庫中有一個名為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語句將從employees表中返回其薪水大于7000的所有employee 。該WHERE子句只是過濾掉不需要的數(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í)行上面的語句后,您將獲得如下輸出:
+--------+--------------+------------+--------+ | emp_id | emp_name | hire_date | salary | +--------+--------------+------------+--------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | | 4 | Rick Deckard | 2007-01-03 | 7200 | +--------+--------------+------------+--------+
以下語句將獲取其雇員ID為2的雇員的記錄。
SELECT * FROM employees WHERE emp_id = 2;
該語句將產生以下輸出:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | +--------+--------------+------------+--------+---------+
這次,我們在輸出中僅獲得一行,因為emp_id對每個員工都是唯一的。
SQL支持許多可在WHERE子句中使用的運算符,下表總結了最重要的運算符。
操作員 | 描述 | 在線示例 |
---|---|---|
= | 等于 | WHERE id = 2 |
> | 比...更棒 | WHERE age > 30 |
< | 少于 | WHERE age < 18 |
>= | 大于或等于 | WHERE rating >= 4 |
<= | 小于或等于 | WHERE price <= 100 |
LIKE | 簡單模式匹配 | WHERE name LIKE 'Dav' |
IN | 檢查指定值是否與列表或子查詢中的任何值匹配 | WHERE country IN ('USA', 'UK') |
BETWEEN | 檢查指定值是否在值范圍內 | WHERE rating BETWEEN 3 AND 5 |