• MySql(四)Select条件查询


    select条件查询的格式如下:

    SELECT
    查询列表
    FROM
    表名
    WHERE
    筛选条件;
    1
    2
    3
    4
    5
    6
    根据筛选条件可以分为以下几类:

    按照条件按表达式进行筛选

    常用条件运算符如下:> 、<、=、!=、<>、<=、>=

    按照逻辑表达式进行筛选

    ​ 逻辑运算符的主要作用:用于连接条件表达式

    & 、 || 、! 、and、or、not

    模糊查询

    like、between and 、in、is null

    like通常和通配符搭配使用:
    ①:%:代表任意多个字符

    ②:_:代表任意单个字符

    举个栗子:

    /**查询员工工资大于10000的员工信息**/
    SELECT * FROM employees WHERE salary > 1000;
    /**查询部门标号不等于90号的员工名和部门编号 **/
    SELECT name,department_id FROM employees WHERE department_id <> 90;
    /**查询工资在1000-2000之间的员工名,工资 **/
    SELECT name,salary FROM employees WHERE salary >= 1000 and salary <=2000;
    /**查询部门编号不再20-40之间或者工资高于15000员工信息 **/
    SELECT * FROM employees WHERE department_id < 20
    1
    2
    3
    4
    5
    6
    7
    8
    like:

    /**查询员工名中包含a的员工信息**/
    SELECT * FROM employeess WHERE last_name like '%a%';
    /**查询员工名中第三个字符为n,第五个字符为m的员工信息 **/
    SELECT * FROM employees WHERE last_name like '__n_m%';
    /**查询员工名中第二个字符_的员工信息**/
    /**方法一:使用转义字符""**/
    SELECT * FROM employees WHERE last_name like '_\_%';
    /**方法二:自定义转义字符**/
    SELECT * FROM employees WHERE last_name like '_$_%' ESCAPE '$';
    1
    2
    3
    4
    5
    6
    7
    8
    9
    between and 、in

    /**查询员工工资在1000-2000之间的员工信息(包含临界值)**/
    SELECT * FROM employees WHERE salary BETWEEN 1000 AND 2000;
    /**查询员工工种编号为IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号**/
    /**方法一:**/
    SELECT job_id,last_name FROM employees
    WHERE job_id ='IT_PROG' OR
    job_id ='AD_VP' OR
    job_id ='AD_PRES' ;
    /**方法二:**/
    SELECT job_id,last_name FROM employeess
    WHERE job_id in ('IT_PROG','AD_VP','AD_PRES');
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    in关键字的特点:

    判断某字段的值是否属于in列表项中的某一项
    in列表中的值都是统一类型或者相互兼容(即可以相互转换)
    is null

    /**查询员工没有奖金的员工名和奖金率**/
    SELECT last_name,commission_pct
    FROM employeess
    WHERE commission_pct IS NULL;
    /**查询员工有奖金的员工名和奖金率**/
    SELECT last_name,commission_pct
    FROM employeess
    WHERE commission_pct IS NOT NULL;
    1
    2
    3
    4
    5
    6
    7
    8
    安全等于 <=>

    /**查询员工工资等于10000的员工信息**/
    SELECT * FROM employees WHERE salary <=> 1000;
    /**查询员工没有奖金的员工名和奖金率**/
    SELECT last_name,commission_pct
    FROM employeess
    WHERE commission_pct <=> NULL;
    1
    2
    3
    4
    5
    6
    正常数值的判断 null判断 可读性
    安全等于 <=> 可以判断 可以判断 低
    is null 不可以判断 可以判断 高
    /**查询员工号为124的员工名和部门号以及年薪**/
    SELECT
    last_name,
    department_id,
    slary*12(1+IFNULL(comission_pct,0)) AS 年薪
    FROM employees
    WHERE department_id = 124;
    /**查询employeess表中都涉及到了哪些部门编号**/
    SELECT DISTINCT department_id FROM employees ;
    1
    2
    3
    4
    5
    6
    7
    8
    9
    思考题:

    /**语句1:**/
    SELECT * FROM employees;
    /**语句2:**/
    SELECT * FROM emplooyees
    WHERE comission_pct LIKE '%%' AND last_name LIKE'%%';
    /**语句3:**/
    SELECT * FROM emplooyees
    WHERE comission_pct LIKE '%%' OR last_name LIKE'%%';
    1
    2
    3
    4
    5
    6
    7
    8
    问题1:语句1和语句2查询结果是否相同?

    > 不相同,如果comission_id为null(即没有没有任何字符)是查询不出来的;
    > 当comission_id不可能为null时,两者的查询结果是相同的
    1
    2
    问题2:语句1和语句3查询结果是否相同

    > 相同,因为last_name不可能为null值,此时即使comission_id为null也会被查询出来。
    --------------------- 

  • 相关阅读:
    游戏方案
    团队介绍
    【面向对象程序设计】作业四
    FIFO与LRU实现(Java)
    spring事务介绍
    微信抢红包算法
    Hibernate Dao映射配置通用接口类反射获取加载calass实例
    股票两次买卖最大收益(java)
    Eclipse安装JD-Eclipse反编译插件看源码
    Java GC调优
  • 原文地址:https://www.cnblogs.com/ly570/p/10961734.html
Copyright © 2020-2023  润新知