进阶2: 条件查询

#进阶2: 条件查询
        /*

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

        分类:
            一、按条件表达式

            条件运算符: >  <  =  <> !=   >=  <=
            
            二、按逻辑表达式
            
            逻辑运算符:
                &&  ||  !
                and or  not   推荐第二行
            三、模糊查询
                like
                between and
                in
                is null
        */
        一、按条件查询筛选

        # 案例1: 查询工资>12000的员工信息
        SELECT * FROM `employees` WHERE `salary` > 12000;

        # 案例2: 查询部门编号不等于90的员工名和部门编号;
        SELECT `last_name`, `department_id` FROM `employees` WHERE `department_id` <> 90;

        二、按逻辑表达式筛选

        # 案例1:查询工资在10000到20000之间的员工名,工资,以及奖金
        SELECT `last_name`, `salary` ,`commission_pct` FROM `employees` WHERE `salary`>= 10000 AND `salary`<=20000;

        # 案例2:查询部门编号不在90到110之间,或工资高于15000的员工信息
        SELECT * FROM `employees` WHERE `department_id` NOT BETWEEN 90 AND 110 OR `salary` > 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; 

        三、模糊查询

        LIKE
        /*
        特点:一般跟通配符搭配使用
            通配符:
            % 任意多字符,包含0个字符
            - 任意单个字符
            \ 转义字符
        */  
        BETWEEN AND
        /*
            特点:
            1.提高语句简洁度
            2.包含临界值
            3.两个临界值不要调换顺序     
        */

        IN
        /*
        含义: 判断某字段的值是否属于in列表中的某一项
        特点:
            1、使用in提高语句简洁度
            2、in列表的值类型必须一致或者兼容(可转换,例如:’123‘)
        */

        IS NULL |  IS NOT NULL
        /*
        特点:
            =或<>不能用于判断null值
            is null  或 is not null 可以判断 null 值
            
        */

        # 案例1: 查询员工姓名中包含字符a的员工信息
        SELECT * FROM `employees` WHERE `last_name` LIKE '%a%';

        # 案例2: 查询员工命中第三个字符为n,第五个为a的员工名和工资
        SELECT `last_name`, `salary` FROM `employees` WHERE `last_name` LIKE '__n_l%';

        # 案例3: 查询员工命中第二个字符为_de 员工名
        SELECT `last_name` FROM `employees` WHERE `last_name` LIKE '_\_%';
        SELECT `last_name` FROM `employees` WHERE `last_name` LIKE '_$_%' ESCAPE '$';
            # ESCAPE '$' 指定’$'为转义符,默认\为转义符

        #2、between and

        SELECT * FROM `employees` WHERE employee_id BETWEEN 100 AND 200;

        #3、in
        # 案例:查询员工的工种编号是:AD_PRES,AD_VP中的一个的员工名和工种编号

        SELECT `last_name`, `job_id` FROM `employees` WHERE `job_id` IN ('AD_PRES', 'AD_VP');

        #4、is null

        # 案例1:查询没有奖金的员工名和奖金率
        SELECT `last_name`, `commission_pct` FROM `employees` WHERE `commission_pct` IS NULL;

        # 案例2:查询有奖金的员工名和奖金率
        SELECT `last_name`, `commission_pct` FROM `employees` WHERE `commission_pct` IS NOT NULL;


        # 安全等于: <=> 

        # 案例1:查询没有奖金的员工名和奖金率
        SELECT `last_name`, `commission_pct` FROM `employees` WHERE `commission_pct` <=> NULL;

        # 案例2:查询工资为12000的员工信息
        SELECT *  FROM `employees` WHERE `salary` <=> 12000;

        # is null 和 <=>

        IS NULL: 仅仅可以判断 null值,可读性较高,缉拿一用它
        <=>:既可以判断 NULL 值又可以判断其他类型的值,可读性较低

 

 

posted @ 2020-02-26 11:16  gupanpan  阅读(90)  评论(0)    收藏  举报