5.2 进阶2:条件查询

Posted qifanren

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5.2 进阶2:条件查询相关的知识,希望对你有一定的参考价值。

5.2 进阶2:条件查询

条件查询:根据条件过滤原始表的数据,查询到想要的数据

5.2.1 语法

select #第三步
	要查询的字段|表达式|常量值|函数
from #第二步
	表明
where #第一步
	条件语句;

5.2.2 查询的分类

  • 条件表达式
    示例:salary>10000
    条件运算符:> < >= <= = != <>(不等于)

  • 逻辑表达式

    ​ 示例:salary>10000 && salary<20000

    ​ 逻辑运算符:

    		and(&&):两个条件如果同时成立,结果为true,否则为false
    		or(||):两个条件只要有一个成立,结果为true,否则为false
    		not(!):如果条件成立,则not后为false,否则为true
    
  • 模糊查询

    • like
      • %任意多个字符,包含0个字符
      • _ 任意单个字符
    • between and
      • 提高语句的简洁度
      • 包含临界值
      • 两个临界值不能替换
    • in
      1. 使用in函数提高语句简介度
      2. in列表的值要求是同样的类型或兼容
      3. 不支持%或_等任意字符
    • is null(专门用于null的判断)
      • =或<>不能用于判断null值
      • is null或is not null可以判断null值
    • 安全等于:<=>
      • 既可以判断NULL,可以判断相等=

5.2.3 案例

  • 案例1:使用条件表达式,查询工资>12000的员工信息

    SELECT
    *
    FROM 
    employees
    WHERE
    salary>12000
    
  • 案例2:使用条件表达式,查询部门编号不等于90号的员工名和部门编号

    SELECT
    	last_name,
    	department_id
    FROM
    	employees
    WHERE
    	department_id <> 90
    
  • 案例3:使用逻辑表达式,查询工资在10000dao 20000之间的员工名、工资以及奖金

    SELECT
    	last_name,
    	salary,
    	commission_pct
    FROM
    	employees
    WHERE
    	salary>=10000 AND salary<=20000
    
  • 案例4:使用逻辑表达式,查询部门编号不是在90到110之间的,或者工资高于15000的员工信息

    SELECT
    	*
    FROM
    	employees
    WHERE
    	department_id<90 OR department_id>110 OR salary>15000;
    # 或者可以写成	
    SELECT
    	*
    FROM
    	employees
    WHERE
    	NOT(department_id>=90 AND department_id<=110) OR salary>15000;
    
  • 案例5:使用like,查询员工名中包含字符a的员工信息

    #%代表通用的字符,包含0个字符,- _ 任意单个字符
    SELECT
    	*
    FROM
    	employees
    WHERE
    	last_name LIKE \'%a%\' 
    
  • 案例6:使用like,查询员工名中第三个字符为n,第五个字符为l的员工名称

    SELECT
    	last_name,
    	salary
    FROM 
    	employees
    WHERE
    	last_name LIKE \'__n_l%\'
    
  • 案例7:查询员工名中第二个字符为_的

    SELECT
    	last_name
    FROM
    	employees
    WHERE
    	last_name LIKE \'_\\_%\'
    
  • 案例8:使用between and 查询员工编号在100到120之间的员工信息

SELECT
	*
FROM
	employees
WHERE
	employee_id BETWEEN 100 AND 120
  • 案例9:使用in,查询员工的工种编号是 IT_PROG, AD_VP,AD_PRES的一个员工名和工种编号

    SELECT
    	last_name,
    	job_id
    FROM
    	employees
    WHERE
    	job_id = \'IT_PROT\' OR job_id = \'AD_VP\' OR job_id = \'AD_PRES\'
    # 或者可以使用In函数
    WHERE
    	job_id IN (\'IT_PROT\',\'AD_VP\',\'AD_PRES\')
    
  • 案例10:使用 is null,查询没有奖金的员工名和奖金率

    SELECT
    	last_name
    	commission_pct
    FROM
    	employees
    WHERE
    	commission_pct IS NOT NULL
    

以上是关于5.2 进阶2:条件查询的主要内容,如果未能解决你的问题,请参考以下文章

函数进阶2

lyt经典版MySQL基础——进阶2:条件查询

Mysql查询相关知识(进阶一 基础查询 select,进阶二 where(条件查询))

MySQL单表查询进阶

MySQL 进阶 索引 -- 索引使用原则(验证索引效率最左前缀法则范围查询索引失效情况SQL提示覆盖索引前缀索引单列索引与联合索引)索引设计原则

ES入门与进阶