• 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 (http://www.my516.com)
    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也会被查询出来。
    --------------------- 

  • 相关阅读:
    Java实现 LeetCode 735 行星碰撞(栈)
    Java实现 LeetCode 735 行星碰撞(栈)
    Java实现 LeetCode 887 鸡蛋掉落(动态规划,谷歌面试题,蓝桥杯真题)
    Java实现 LeetCode 887 鸡蛋掉落(动态规划,谷歌面试题,蓝桥杯真题)
    Java实现 LeetCode 887 鸡蛋掉落(动态规划,谷歌面试题,蓝桥杯真题)
    Java实现 蓝桥杯算法提高 求最大值
    Java实现 蓝桥杯算法提高 求最大值
    Java实现 蓝桥杯算法提高 求最大值
    Python eval() 函数
    Python repr() 函数
  • 原文地址:https://www.cnblogs.com/hyhy904/p/10992429.html
Copyright © 2020-2023  润新知