mysql過濾數據


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

  要查找購買價格不在20100(含20100)之間的產品,可將BETWEEN運算符與NOT運算符組合使用

  SELECT    productCode, productName, buyPrice   FROM    products   WHERE    buyPrice NOT BETWEEN 20 AND 100;

  

 

3.Be't'ween與日期類型

  當使用BETWEEN運算符與日期類型值時,要獲得最佳結果,應該使用類型轉換將列或表達式的類型顯式轉換為DATE類型

  要查詢獲取所需日期(requiredDate)從2013-01-012013-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開始,然后取一行記錄):

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM