zoukankan      html  css  js  c++  java
  • MySQL_Sql_打怪升级_进阶篇_进阶2:条件查询

    进阶2:条件查询

    语法:

    select 
    	查询列表
    from
    	表名
    where
    	筛选条件;
    

    分类:

    2.1按条件表达式筛选

    简单条件运算符:> < = != <> >= <=
    

    2.2按逻辑表达式筛选

    逻辑运算符:
    作用:用于连接条件表达式
    	&& || !
    	and or not
    	
    &&和and:   两个条件都为true,	    结果为true,反之为false
    ||或or:    只要有一个条件为true,      结果为true,反之为false
    !或not:    如果连接的条件本身为false,  结果为true,反之为false
    

    2.3模糊查询

    like
    between and
    in
    is null 或者 is not null
    

    2.4操作示例


    2.4.1按条件表达式筛选

    案例1:查询工资>12000的员工信息

    SELECT 
    	*
    FROM
    	employees
    WHERE
    	salary>12000;
    

    案例2:查询部门编号不等于90号的员工名和部门编号

    SELECT 
    	last_name,
    	department_id
    FROM
    	employees
    WHERE
    	department_id<>90;
    

    2.4.2按逻辑表达式筛选

    案例1:查询工资在10000到20000之间的员工名、工资以及奖金

    SELECT
    	last_name,
    	salary,
    	commission_pct
    FROM
    	employees
    WHERE
    	salary>=10000 AND salary<=20000;
    	
    
    #还可以使用between and :
    SELECT
    	last_name,
    	salary,
    	commission_pct
    FROM
    	employees
    WHERE
    	salary between 10000 AND 20000;
    

    案例2:查询部门编号不是在90到110之间,或者工资高于15000的员工信息

    SELECT
    	*
    FROM
    	employees
    WHERE
    	NOT(department_id>=90 AND  department_id<=110) OR salary>15000;
    
    

    2.4.3模糊查询

    1. like

    特点:
    1.一般和通配符搭配使用
    	通配符:
    		% 任意多个字符,包含0个字符
    		_ 任意单个字符
    		escape 转义 或者  
    

    案例1:查询员工名中包含字符a的员工信息

    select 
    	*
    from
    	employees
    where
    	last_name like '%a%';
    

    案例2:查询员工名中第三个字符为n,第五个字符为l的员工名和工资

    select
    	last_name,
    	salary
    FROM
    	employees
    WHERE
    	last_name LIKE '__n_l%';
    

    案例3:查询员工名中第二个字符为_的员工名

    SELECT
    	last_name
    FROM
    	employees
    WHERE
    	last_name LIKE '_$_%' ESCAPE '$';
    
    #还可以使用转义字符,但是推荐使用 escape 这种方法.
    SELECT
    	last_name
    FROM
    	employees
    WHERE
    	last_name LIKE '_\_%';
    

    2. between and

    1.使用between and 可以提高语句的简洁度
    2.包含临界值
    3.两个临界值不要调换顺序
    

    案例1:查询员工编号在100到120之间的员工信息

    SELECT
    	*
    FROM
    	employees
    WHERE
    	employee_id >= 120 AND employee_id<=100;
    	
    #----------------------
    
    SELECT
    	*
    FROM
    	employees
    WHERE
    	employee_id BETWEEN 120 AND 100;
    

    3. in

    含义:判断某字段的值是否属于in列表中的某一项
    特点:
    ①使用in提高语句简洁度
    ②使用in列表的值类型必须一致或兼容
    ③使用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';
    
    #------------------
    
    SELECT
    	last_name,
    	job_id
    FROM
    	employees
    WHERE
    	job_id IN( 'IT_PROT' ,'AD_VP','AD_PRES');
    	
    

    4. is null

    温馨提示:
    =或<>不能用于判断null值
    is null或is not null 可以判断null值
    

    案例1:查询没有奖金的员工名和奖金率

    SELECT
    	last_name,
    	commission_pct
    FROM
    	employees
    WHERE
    	commission_pct IS NULL;
    

    案例1:查询有奖金的员工名和奖金率

    SELECT
    	last_name,
    	commission_pct
    FROM
    	employees
    WHERE
    	commission_pct IS NOT NULL;
    	
    	
    #----------以下为×(错误的)
    
    SELECT
    	last_name,
    	commission_pct
    FROM
    	employees
    
    WHERE 
    	salary IS 12000;
    

    5.安全等于 <=>

    案例1:查询没有奖金的员工名和奖金率

    SELECT
    	last_name,
    	commission_pct
    FROM
    	employees
    WHERE
    	commission_pct <=>NULL;
    

    案例2:查询工资为12000的员工信息

    SELECT
    	last_name,
    	salary
    FROM
    	employees
    
    WHERE 
    	salary <=> 12000;
    

    6.is null pk <=>

    IS NULL:仅仅可以判断NULL值,可读性较高,建议使用
    <=>    :既可以判断NULL值,又可以判断普通的数值,可读性较低
    
  • 相关阅读:
    ubuntu下crontab启动,重启,关闭命令
    解决ubuntu16.04下boot空间不足的方法
    Go语言变量作用域
    Go语言函数
    xftp取消自动更新
    nginx下http如何转https访问
    mysql 5.7.22 zip安装
    微服务本机搭建
    微服务集成mybatis问题
    eclipse导入本地maven项目时,有的项目的结构是文件夹的机构
  • 原文地址:https://www.cnblogs.com/liych/p/13585764.html
Copyright © 2011-2022 走看看