1.大綱
- WHERE - 學習如何使用
WHERE
子句根據指定的條件過濾行記錄。 - AND運算符 - 介紹如何使用
AND
運算符以組合布爾表達式以形成用於過濾數據的復雜條件。 - OR運算符 - 介紹
OR
運算符,並展示如何將OR
運算符與AND
運算符組合以過濾數據。 - IN運算符 - 學習如何在
WHERE
子句中使用IN
運算符來確定值是否匹配列表或子查詢中的指定值。 - BETWEEN運算符 - 顯示如何使用
BETWEEN
運算符來根據指定范圍查詢數據。 - LIKE - 提供基於特定模式匹配查詢數據的技術示例,以執行一些模糊查詢。
- LIMIT子句 - 使用
LIMIT
來限制SELECT
語句返回的行數 - IS NULL - 使用
IS NULL
運算符測試值是否為NULL
。
2.where
WHERE
子句允許根據指定的過濾表達式或條件來指定要選擇的行。
您還將學習如何使用LIMIT子句來限制SELECT
語句返回的行數。
即使WHERE
子句出現在語句的末尾,但MySQL會首先使用WHERE
子句中的表達式來選擇匹配的行。
MySQL從SELECT
子句中的選擇列表中選擇列。
可以像上面的查詢一樣形成一個簡單的條件,或者是將多個表達式與邏輯運算符(如AND,OR等)組合在一起的一個非常復雜的例子。
二:AND
1.舉例
SELECT lastname, firstname, jobtitle FROM employees WHERE jobtitle = 'Sales Rep' AND officeCode = 1;
2.比較運算符
3.AND
SELECT lastname, firstname, officeCode FROM employees WHERE officecode > 5;
4.表結構
desc customers;
三:IN
1.IN
運算符來確定指定列的值是否匹配列表中的值或子查詢中的任何值。
IN運算符允許您確定指定的值是否與列表中的值或子查詢中的任何值匹配
用法:
SELECT column1,column2,... FROM table_name WHERE (expr|column_1) IN ('value1','value2',...);
解釋:
可以在WHERE子句中與IN運算符一起使用,可使用列或表達式(expr)。
列表中的值必須用逗號(,)分隔。
IN操作符也可以用在其他語句(如INSERT,UPDATE,DELETE等)的WHERE子句中
SELECT officeCode, city, phone, country FROM offices WHERE country IN ('USA' , 'France');
也可以使用OR
運算符執行得到與上面查詢相同的結果
SELECT officeCode, city, phone FROM offices WHERE country = 'USA' OR country = 'France';
如果列表中有很多值,使用多個OR
運算符則會構造一個非常長的語句。 因此,使用IN
運算符則會縮短查詢並使查詢更易讀。
2.NOT IN
SELECT officeCode, city, phone FROM offices WHERE country NOT IN( 'USA', 'France');
3.IN與子查詢
IN
運算符通常用於子查詢。子查詢不提供常量值列表,而是提供值列表。
使用表:
例如,如果要查找總金額大於60000
的訂單,則使用IN
運算符查詢如下所示:
SELECT
orderNumber, customerNumber, status, shippedDate
FROM
orders
WHERE
orderNumber IN (SELECT
orderNumber
FROM
orderDetails
GROUP BY orderNumber
HAVING SUM(quantityOrdered * priceEach) > 60000);
重要的是group by后,再根據分組的結果進行sum聚合。
四:Between
1.between
BETWEEN
運算符允許指定要測試的值范圍
SELECT
productCode, productName, buyPrice
FROM
products
WHERE
buyPrice BETWEEN 90 AND 100;
也可以通過使用大於或等於(>=
)和小於或等於(<=
)運算符來實現相同的結果。
2.NOT BETWEEN
要查找購買價格不在20
到100
(含20
到100
)之間的產品,可將BETWEEN
運算符與NOT
運算符組合使用
SELECT productCode, productName, buyPrice FROM products WHERE buyPrice NOT BETWEEN 20 AND 100;
3.Be't'ween與日期類型
當使用BETWEEN
運算符與日期類型值時,要獲得最佳結果,應該使用類型轉換將列或表達式的類型顯式轉換為DATE類型。
要查詢獲取所需日期(requiredDate
)從2013-01-01
到2013-01-31
的所有訂單
SELECT orderNumber,
requiredDate,
status
FROM orders
WHERE requireddate
BETWEEN CAST('2013-01-01' AS DATE)
AND CAST('2013-01-31' AS DATE);
五:LIKE
1.LIKE
MySQL提供兩個通配符,用於與LIKE
運算符一起使用,它們分別是:百分比符號 - %
和下划線 - _
百分比(%)通配符允許匹配任何字符串的零個或多個字符。
下划線(_)通配符允許匹配任何單個字符。
2.NOT與like語句
MySQL允許將NOT
運算符與LIKE
運算符組合,以找到不匹配特定模式的字符串。
SELECT employeeNumber, lastName, firstName FROM employees WHERE lastName NOT LIKE 'B%';
3.like與escape
有時想要匹配的模式包含通配符,例如10%
,_20
等這樣的字符串時。在這種情況下,您可以使用ESCAPE
子句指定轉義字符,以便MySQL將通配符解釋為文字字符。如果未明確指定轉義字符,則反斜杠字符\
是默認轉義字符。
SELECT productCode, productName FROM products WHERE productCode LIKE '%\_20%';
也可以使用ESCAPE
子句指定一個不同的轉義字符,例如$
:
SELECT productCode, productName FROM products WHERE productCode LIKE '%$_20%' ESCAPE '$';
六:LIMIT
1.LIMIT
在SELECT
語句中使用LIMIT
子句來約束結果集中的行數。LIMIT
子句接受一個或兩個參數。兩個參數的值必須為零或正整數。
語法:
當您使用帶有一個參數的LIMIT
子句時,此參數將用於確定從結果集的開頭返回的最大行數。
2.與order by一起使用
找到倒數5個的值。
SELECT customernumber, customername, creditlimit FROM customers ORDER BY creditlimit DESC LIMIT 5;
找出結果集中價格第二高的產品。可以使用LIMIT
子句來選擇第二行,如以下查詢(注意:偏移量從0
開始,所以要指定從1
開始,然后取一行記錄):