学习笔记——数据库(过滤搜索1)

过滤数据 即 对检索数据指定搜索条件


一、WHERE 子句

  1. 简述
    在 SELECT 语句中,数据根据 WHERE 子句中的指定的搜索条件进行过滤。
    WHERE子句的位置:首先,WHERE子句 需在 FROM 之后给出,其次如果与 ORDER BY子句 同时使用,应当让 ORDER BY 位于 WHERE 之后。


  2. WHERE子句操作符

    操作符说明
    =等于
    <>不等于
    !=不等于
    <小于
    <=小于等于
    >大于
    >=大于等于
    BETWEEN在指定的两个值之间

  3. 指定检索条件

    3.1 单个值检索
    输入1:SELECT 列名1,列名2 FROM 表名 WHERE 列名1 = ‘xxx’;
    输入2:SELECT 列名1,列名2 FROM 表名 WHERE 列名2 < xxx;
    注意:单引号用来限定字符串,如果将值与字符串类型的列进行比较,则需要限定单引号。将值与数值列进行比较不用引号

    3.2 不匹配检索
    输入3:SELECT 列名1,列名2 FROM 表名 WHERE 列名2 <> xxx;
    或者是
    输入4:SELECT 列名1,列名2 FROM 表名 WHERE 列名2 != xxx;

    3.3 范围值检索
    为了检索某个范围的值,需使用 BETWEEN操作符 。该操作符需要两个值,并通过 AND关键字 连接。BETWEEN匹配范围中的所有值,包括指定的开始值和结束值。
    输入5:SELECT 列名1,列名2 FROM 表名 WHERE 列名2 BETWEEN x1 AND x2;

    3.4 空值检索
    WHERE子句 中有一个特殊的子句 IS NULL 子句
    输入6:SELECT 列名1,列名2 FROM 表名 WHERE 列名2 IS NULL;


  4. 组合WHERE子句

    4.1 AND 与 OR 操作符
    MySQL允许给出多个WHERE子句,这些子句通过 ANDOR 操作符连接。其中 ,AND 的优先级高于 OR。此外,多个子句之间可以通过 圆括号 明确地分组操作符,建议不要使用默认优先级,便于消除歧义。
    输入1:SELECT 列名1,列名2 FROM 表名 WHERE 列名2 = xxx1 AND 列名2 = xxx2;
    输入2:SELECT 列名1,列名2 FROM 表名 WHERE 列名2 = xxx1 OR 列名2 = xxx2;
    输入3:SELECT 列名1,列名2 FROM 表名 WHERE (列名2 = xxx1 OR 列名2 = xxx2) AND 列名1 = ‘xxx’;

    4.2 IN 操作符
    IN 操作符 用来指定条件范围,范围中地每个条件都可以进行匹配。IN 的合法取值范围由逗号分隔,并且全都括在圆括号中。

    输入4:SELECT 列名1,列名2 FROM 表名 WHERE 列名2 IN (xxx1, xxx2);
    输入4等同于输入1 ,IN 操作符可以完成与OR操作符相同的功能。

    使用IN 操作符的优点:
    1)在使用长的合法选项清单时,IN 操作符的语法更清楚且更直观
    2)在使用IN时,计算的次序更容易管理(因为使用的操作符更少)
    3)IN 操作符一般比OR 操作符
    4)IN 操作符最大的优点是可以包含其他 SELECT语句 ,使得能够更动态地建立WHERE子句

    4.3 NOT 操作符
    WHERE子句中的 NOT操作符 有且只有一个功能,即 用于否定它之后的任何条件。
    输入5:SELECT 列名1,列名2 FROM 表名 WHERE 列名2 NOT IN (xxx1, xxx2);

    MySQL支持使用 NOT 对 IN BETWEEN 和 EXISTS 子句取反。


二、通配符过滤

通配符 是用来匹配 值的 一部分的特殊字符。其本身实际是SQL的WHERE子句中有特殊含义的字符。
搜索模式 是由字面值、通配符 或 二者组合构成的搜索条件。
在搜索子句中若要使用通配符,必须使用LIKE操作符
通配符可以在搜索模式中的任意位置使用,并且可以使用多个通配符。

  1. 百分号(%)通配符

    % 表示任何字符出现任意次数(0,1,…, n)。

    输入1:SELECT 列名1,列名2 FROM 表名 WHERE 列名2 LIKE ‘abc%’;
    分析:该句子将检索任意以 abc 开头的词。

    输入2:SELECT 列名1,列名2 FROM 表名 WHERE 列名2 LIKE ‘%abc%’;
    分析:该句子将检索任意含有 abc 的词,不论其前后出现什么字符。

    输入3:SELECT 列名1,列名2 FROM 表名 WHERE 列名2 LIKE ‘a%bc’;
    分析:该句子将检索以 a开头,以bc结尾 的词。

  2. 下划线( _ )通配符
    _ 用途与 % 一样,但是下划线只匹配单个字符

  3. 通配符的使用
    1)通配符不可过度使用。若其他操作符能达到相同目的,就用其他操作符
    2)若无必要,不建议将其用在搜索模式的开始处,会导致搜索速度较慢。
    3)注意通配符的位置,避免错位。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值