zoukankan      html  css  js  c++  java
  • SQL基础-过滤数据

    一、过滤数据

    1、使用WHERE子句

    过滤数据:关键字WHERE
    
    SELECT 字段列表 FROM 表名 WHERE 过滤条件;
    
    过滤条件一般由要过滤的字段、操作符、限定值三部分组成;
    
    如:
        SELECT student_id,student_name FROM student  WHERE gender = '男';


    2、常用操作符

    image


    3、过滤单个值

    #age 不等于10
    SELECT student_id FROM student WHERE age <> 10;
    
    SELECT student_id FROM student WHERE student_name = '汪书乔';
    
    SELECT * FROM student WHERE birth_day <= '2005-12-31';


    4、过滤NULL值

    SELECT * FROM student WHERE age IS NOT NULL; 
    
    SELECT * FROM student WHERE class_id IS NULL;
    
    #(错误写法!)
    SELECT * FROM student WHERE class_id = NULL;


    5、过滤集合

    ###
    SELECT * FROM student WHERE age BETWEEN 10 AND 15; 
    
    SELECT * FROM student  WHERE birth_day BETWEEN '2005-01-31' AND '2005-12-31';
    
    
    ###
    SELECT * FROM student WHERE age IN (10,11,15); 
    
    SELECT * FROM student  WHERE student_name IN ('叶冬星','李佳欣','汪如一');
    
    SELECT * FROM student  WHERE student_id NOT IN ('S20160001','S20160002');


    二、高级过滤数据

    1、使用通配符过滤数据

    ###
    使用通配符过滤数据:关键字LIKE
    
    百分号 %     -->匹配0~多个任意字符
    
    下划线 _     -->匹配1个任意字符
    
    方括号 [ ]、[^ ]     -->匹配1个字符集中的字符
    
    
    基本所有的数据库都支持百分号通配符和下划线通配符,但只有很少的数据库支持方括号通配符。
    
    如:
        SELECT * FROM student WHERE student_name LIKE '陈%';
        SELECT * FROM student WHERE student_name LIKE '%慧';
        SELECT * FROM student WHERE student_name LIKE '陈_’;
        SELECT * FROM student WHERE student_name LIKE '陈_军';
    
    但是MySQL不支持:
        SELECT * FROM student WHERE student_id LIKE 'S200[678]';
        SELECT * FROM student WHERE student_id LIKE 'S200[^678]';
    
    
    使用通配符的注意点:
         不要过度使用通配符;
         如果确实需要使用,也尽量不要把通配符用在匹配模式的开始处;
         要特别注意通配符的位置,否则很有可能返回的结果与预期不一致;


    2、组合WHERE子句

    ###
    使用逻辑操作符组合WHERE子句:
        AND操作符     满足所有条件
        OR操作符     满足任一条件
    
    
    比如:
        如何取出所有姓陈的男同学?
        SELECT * FROM student  WHERE student_name LIKE '陈%' AND gender = '男';
    
        如何取出所有姓陈的同学或男同学?
        SELECT * FROM student  WHERE student_name LIKE '陈%' OR gender = '男';
    
    比如:
        如何取出所有年龄大于15岁并且姓陈或男性同学?
        错误写法:
        SELECT * FROM student WHERE age > 15 AND student_name LIKE '陈%' OR gender = '男';
        正确写法:
        SELECT * FROM student WHERE age > 15 AND (student_name LIKE '陈%' OR gender = '男');
    
    
    使用组合WHERE子句时,尽量都使用括号消除歧义;
  • 相关阅读:
    修改RedHat7的root用户密码
    Linux目录,rpm及top,vi命令简记
    Centos7或RedHat7下安装Mysql
    异常、线程
    File类
    JDBC的学习(一)
    MySql多表查询_事务_DCL(资料三)
    MySql约束_设计_备份还原(资料二)
    MySql基础_DDL_DML_DQL(资料一)
    算法小结(一)
  • 原文地址:https://www.cnblogs.com/weiyiming007/p/11427942.html
Copyright © 2011-2022 走看看