• mysql数据过滤


    WHERE子句

    在我们使用数据库时,通常只会根据特定条件提取表数据的子集。只检索所需数据需要指定搜索条件(search criteria),搜索条件也称为过滤条件(filtercondition)。

    SELECT name, age FROM tab1 WHERE age=18;

    返回age=18的行

    WHERE子句支持的操作符
    = 等于
    <> 不等于
    != 不等于
    < 小于
    <= 小于等于

    大于
    = 大于等于
    BETWEEN 在指定的两个值之间

    eg:

    SELECT name,age FROM tab1 WHERE age>10; //获取age大于10的数据
    SELECT name,age FROM tab1 WHERE age BETWEEN 10 AND 18; //获取age在10到18之间的数据,包括10和18

    另一个特殊子句
    IS NULL用来返回为空的数据

    SELECT name, age FROM WHERE name IS NULL;

    组合WHERE子句

    使用AND或者OR子句,组合WHERE子句

    SELECT name,age FROM tab1 WHERE age=10 AND name='aaa'; //查询age=10并且name='aaa'的数据

    SELECT name,age FROM tab1 WHERE age=10 OR age=19; //查询age=10或者age=19的数据

    AND和OR可以同时使用,不过AND的优先级高于OR,所以会先处理AND操作符,另外可以用括号分组,明确的显示优先级.

    IN操作符

    指定条件范围,范围中的每个条件都可以进行匹配。IN取合法值的由逗号分隔的清单,全都括在圆括号中。

    SELECT name,age FROM tab1 WHERE age IN (18,19,20); //查询age在18,19或20的所有数据,功能与OR相似.

    IN相比OR的好处:

    1. 在使用长的合法选项清单时,IN操作符的语法更清楚且更直观。
    2. 在使用IN时,计算的次序更容易管理
    3. IN操作符一般比OR操作符清单执行更快
    4. IN的可以包含其他SELECT语句,使得能够更动态地建立WHERE子句

    NOT操作符

    否定它之后所跟的任何条件。

    SELECT name,age FROM tab1 WHERE age NOT IN (18,19,20); //查询age不在18,19或20的所有数据,功能与OR相似.

    使用通配符过滤

    LIKE操作符

    %通配符

    %可以匹配表示任何字符出现任意次数

    SELECT name FROM tab1 WHERE name LINK 'a%';  //可以匹配任何name以a开头的数据

    _通配符

    下划线(_)。下划线只匹配单个字符,用法同%

    注意

    • 不要过度使用通配符。如果其他操作符能达到相同的目的,应该使用其他操作符。
    • 尽量不要把它们用在搜索模式的开始处,因为速度会很慢
  • 相关阅读:
    缓存架构设计细节二三事
    数据库软件架构设计些什么
    100亿数据1万属性数据架构设计
    这才是真正的表扩展方案
    啥,又要为表增加一列属性?
    究竟啥才是互联网架构“高可用”
    究竟啥才是互联网架构“高并发”
    Linux用过的命令
    Xshell远程连接工具
    oracle分组取第一条
  • 原文地址:https://www.cnblogs.com/itogo/p/5670383.html
Copyright © 2020-2023  润新知