MySQL_2_过滤数据

WHERE 子句允许根据指定的过滤表达式或条件来指定要选择的行。

注:即是WHERE 子句出现在语句的末尾,但MySQL会首先使用 WHERE 子句中的表达式来选择匹配的行。

  1) 与逻辑运算符(AND,OR 等)组合使用;

  2) 与比较运算符组合使用形成过滤表达式:等于(=)、不等于(<> 或 !=)、小于(<)、大于(>)、小于或等于(<=)、大于或等于(>=);

  3) 与 BETWEEN 组合使用,选择在给定范围之内的值;

  4) 与 LIKE 组合使用,匹配基于模式匹配的值;

  5) 与 IN 组合使用,指定值是否匹配表中的任何值;

  6) IS NULL 检查该值是否为 NULL; 

1.AND运算符

  1) 介绍如何使用 AND 运算符以组合布尔表达式以形成用于过滤数据的复杂条件。

  2) AND 运算符组合 true, false ,和 null 结果:true + null = null,false + null = false。

  3) 在MySQL中,0被认为是false,非0被认为是true;

2.OR运算符

  1) MySQL 使用 OR 运算符进行短路评估(求值计算)。

  2) 运算符优先级:MySQL 会在 AND 运算符之后再对 OR 运算符进行求值,如果想先计算 OR 表达式的值,可加括号;

3. IN 操作符

  1) 确定指定的值是否与列表中的值或子查询中的任何值匹配(列表中的值需要用逗号分隔);

  3) 举例,IN 操作符与 OR 运算符的使用

SELECT 
    officeCode , city , phone
FROM
    offices
WHERE
    country IN ('USA' , 'France');
SELECT 
    officeCode  , city , phone
 FROM
    offices
WHERE
    country = 'USA' OR country = 'France';

4. BETWEEN 运算符

expr [NOT] BETWEEN begin_expr AND end_expr;

  1) expr , begin_expr  和 end_expr 必须具有相同的数据类型;

  2) 如果任何表达式为 NULL ,则 BETWEEN 运算符返回 NULL 值;

  3) 可以用 >= 和 <= 运算符来实现相同的结果;

  4) BETWEEN 和日期类型数据一起使用,(如:BETWEEN CAST('2013-01-01' AS DATE) AND CAST('2013-01-31' AS DATE););

5. LIKE 操作符

  常用于 WHERE 子句中,MySQL 提供两个通配符,用于与 LIKE 一起使用:百分比符号% 和 下划线 _;

  1) 百分比(%)通配符允许匹配任何字符串的零个或多个字符;

假设要搜索名字以字符a开头的员工信息,可以在模式末尾使用百分比通配符(),如下所示:

SELECT
    employeeNumber , lastName , firstName
FROM 
     employees
WHERE
    firstName LIKE 'a%';

注:若要搜索名字以字符a开头的员工信息,可使用:WHERE firstName LIKE '%a';

  若要搜索名字包含字符a的员工信息,可使用:WHERE firstName LIKE '%a%';

  MySQL允许将NOT运算符与LIKE运算符组合,以找到不匹配特定模式的字符串。

  2) 下划线(_)通配符允许匹配任何单个字符;

  3) MySQL 与 ESCAPE子句:想要匹配的模式包含通配符,可使用 ESCAPE 子句指定转义字符,以便 MySQL 将通配符解释为文字字符,反斜杠()默认为转义字符。 

  如下语句,将查询productCode字段中包含_20字符串的值:

SELECT 
    productCode , productName
FROM
    products
WHERE
    productCode LIKE '%\_20%';

6. LIMIT 子句

  用于约束结果集中的行数。LIMIT 子句接受一个或两个参数,两个参数必须为零或正整数。

SELECT 
    column_1 , column_2 , ...
FROM
    table
LIMIT offset , count;

  offset 参数指定要返回的第一行的偏移量。第一行偏移量为0,而不是1.

  count 指定要返回的最大行数。

  1) 获取前N行:LIMIT N;

SELECT customernumber, customername, creditlimit FROM customers LIMIT 5;  

  2) 获取最高值和最低值,只需要在 LIMIT 前加一行:ORDER BY 子句

SELECT customernumber, customername, creditlimit
FROM customers
ORDER BY creditlimit DESC
LIMIT 5;

注:最低值用ASC

  3) 获得第 n 个最高值  ORDER BY creditlimit DESC LIMIT  nth-1 , count;

7. IS NULL 操作符

  value is NULL ,如果值为 NULL 则返回 true;否则返回 false 。

注:MySQL 没有 内置的 BOOLEAN 类型,它使用 TINYINT(1)  来表示 BOOLEAN 值,即 1 表示 true , 0 表示 false。

  

  

原文地址:https://www.cnblogs.com/mumu1408/p/9790715.html