這一課將講授如何使用 SELECT 語句的 WHERE 子句指定搜索條件胰耗。
4.1 使用WHERE 子句
4.2 WHERE子句操作符
4.3 code
4.4 挑戰(zhàn)題
4.1 使用WHERE 子句
數(shù)據(jù)庫表一般包含大量的數(shù)據(jù),很少需要檢索表中的所有行。通常只會(huì)根據(jù)特定操作或報(bào)告的需要提取表數(shù)據(jù)的子集缺谴。
只檢索所需數(shù)據(jù)需要指定搜索條件(search criteria),搜索條件也稱為過濾條件(filter condition)。
在 SELECT 語句中祥绞,數(shù)據(jù)根據(jù) WHERE 子句中指定的搜索條件進(jìn)行過濾闺魏。WHERE 子句在表名(FROM 子句)之后給出
SELECT prod_name,prod_price
?FROM products
WHERE prod_price=3.49;
分析:這條語句從 products 表中檢索兩個(gè)列未状,但不返回所有行,只返回prod_price 值為 3.49 的行析桥,
輸出:
這個(gè)示例使用了簡(jiǎn)單的相等檢驗(yàn):檢查這一列的值是否為指定值司草,據(jù)此過濾數(shù)據(jù)。不過泡仗,SQL 不只能測(cè)試等于埋虹,還能做更多的事情。
4.2 WHERE子句操作符
4.2.1檢查單個(gè)值
例1列出所有價(jià)格小于 10 美元的產(chǎn)品
SELECT prod_name, prod_price
FROM Products
WHERE prod_price < 10;
輸出:
例2列出所有價(jià)格小于等于 10 美元的產(chǎn)品
SELECT prod_name, prod_price
FROM Products
WHERE prod_price <= 10;
4.2.2 不匹配檢查
要求:列出所有不是供應(yīng)商 DLL01 制造的產(chǎn)品:
SELECT vend_id, prod_name
FROM Products
WHERE vend_id <> 'DLL01';
SELECT vend_id, prod_name
FROM Products
WHERE vend_id != 'DLL01';
輸出:
4.2.3 范圍值檢查
要求:使用 BETWEEN 操作符娩怎,檢索價(jià)格在 5 美元和 10
美元之間的所有產(chǎn)品搔课。
SELECT prod_name, prod_price
FROM Products
WHERE prod_price BETWEEN 5 AND 10;
輸出:
注意:BETWEEN 匹配范圍中所有的值,包括指定的開始值和結(jié)束值截亦。
4.2.4 空值檢查
要求:返回所有沒有價(jià)格(空 prod_price 字段爬泥,不是價(jià)格為 0)的產(chǎn)品
SELECT prod_name
FROM Products
WHERE prod_price IS NULL;
輸出:
要求:返回所有沒有cust_email(空cust_email字段,不是價(jià)格為 0)的產(chǎn)品
SELECT cust_name
FROM Customers
WHERE cust_email IS NULL;
輸出:
4.3 code
這一課介紹了如何用 SELECT 語句的 WHERE 子句過濾返回的數(shù)據(jù)崩瓤。我們學(xué)習(xí)了如何檢驗(yàn)相等袍啡、不相等、大于却桶、小于境输、值的范圍以及 NULL值等
-- ----------第4課-----------
#4.1
SELECT prod_name,prod_price
FROM products
WHERE prod_price=3.49;
#4.2.1 單值匹配
SELECT prod_name, prod_price
FROM Products
WHERE prod_price < 10;
SELECT prod_name, prod_price
FROM Products
WHERE prod_price <= 10;
#4.2. 不匹配檢查
SELECT vend_id, prod_name
FROM Products
WHERE vend_id <> 'DLL01';
SELECT vend_id, prod_name
FROM Products
WHERE vend_id != 'DLL01';
#4.2.3 范圍值檢查
SELECT prod_name, prod_price
FROM Products
WHERE prod_price BETWEEN 5 AND 10;
#4.2.4 空值檢查
SELECT prod_name
FROM Products
WHERE prod_price IS NULL;
SELECT cust_name
FROM Customers
WHERE cust_email IS NULL;
4.4 挑戰(zhàn)題
1. 編寫 SQL 語句,從 Products 表中檢索產(chǎn)品 ID(prod_id)和產(chǎn)品名稱(prod_name)颖系,只返回價(jià)格為 9.49 美元的產(chǎn)品嗅剖。
SELECT prod_id,prod_name
FROM products
WHERE prod_price=9.49;
2. 編寫 SQL 語句,從 Products 表中檢索產(chǎn)品 ID(prod_id)和產(chǎn)品名稱(prod_name)嘁扼,只返回價(jià)格為 9 美元或更高的產(chǎn)品窗悯。
SELECT prod_id,prod_name
FROM products
WHERE prod_price >= 9;
3. 結(jié)合第 3 課和第 4 課編寫 SQL 語句,從 OrderItems 表中檢索出所有不同訂單號(hào)(order_num)偷拔,其中包含 100 個(gè)或更多的產(chǎn)品蒋院。
SELECT order_numFROM orderitems
WHERE quantity >= 100;
4. 編寫 SQL 語句,返回 Products 表中所有價(jià)格在 3 美元到 6 美元之間的產(chǎn)品的名稱(prod_name)和價(jià)格(prod_price)莲绰,然后按價(jià)格對(duì)結(jié)果進(jìn)行排序欺旧。(本題有多種解決方案,我們?cè)谙乱徽n再討論蛤签,不過你可以使用目前已學(xué)的知識(shí)來解決它辞友。)
SELECT prod_name,prod_price
FROM products
WHERE prod_price BETWEEN 3 AND 6
ORDER BY prod_price;