zoukankan      html  css  js  c++  java
  • 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开始,然后取一行记录):

      

     

     

    
    
  • 相关阅读:
    ExecuteScalar requires the command to have a transaction when the connection assigned to the command is in a pending
    如何从vss中分离程序
    String or binary data would be truncated
    the pop3 service failed to retrieve authentication type and cannot continue
    The POP3 service failed to start because
    IIS Error he system cannot find the file specified _找不到页面
    pku2575Jolly Jumpers
    pku2940Wine Trading in Gergovia
    pku3219二项式系数
    pku1029false coin
  • 原文地址:https://www.cnblogs.com/juncaoit/p/7764201.html
Copyright © 2011-2022 走看看