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開始,然后取一行記錄):

