美文网首页
第二章 MySQL-DQL命令

第二章 MySQL-DQL命令

作者: 梅梅golang | 来源:发表于2023-03-30 15:38 被阅读0次

    IFNULL()函数的用法:

    判断某一列是否为null,第一个参数数目标列,如果是null,那么你想让他返回输出什么内容就传二个参数!

    select IFNULL(commission_pct,0) as "结果" from 
    多个字段查询也可以嵌套如下:
    select concat(first_name,",",last_name,",",INFNUL(commission_pct,0)) as "结果" 
    from employees;
    

    条件查询where关键字

    1. 格式:select 查询列表 from 表名 where 筛选条件;
    2. 按条件表达式筛选:
      1. 按条件表达式筛选
      2. 小与符号 < 等于符号 = 不等于符号 != 不等于符号 <>
    • 案例1:查询工资大于12000的员工信息
    select * from employees where salary > 12000;
    
    • 案例2:查询部门编号不等于90号的员工名和部门编号
    select first_name, department_id from employees where department_id != 90;
    
    • 案例3:按逻辑表达示筛选 and or not 查询工资在10000 到20000之间的员工名和工资和奖金
    select
           first_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;
    或者这样写:用not关键字,not关键字就是java中取反逻辑表达式:
    select 
           * 
    from 
           employees 
    where 
           not (department_id>=90 and department_id<=110) or salary >15000;
    

    模糊查询 Like的用法

    模糊查询关键字有以下几个:
    Like, between and, in, is null, is not null,

    • 案例 1. 查询员工名中包含字符a的员工信息
    select * from employees where first_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来指定转义符,这样的话你的转义符就可以随意定义成$或者#等各种不一样的符号,
    都他认为是转移符:
    select
        last_name
    from
        employees
    where
        last_name like '_$_%' escape '$'
    

    between and 的用法

    • 查询员工编号在100到120之间的员工信息
    select * from employees where employee_id between 100 and 120;
    

    In()的用法

    • 案例1.查询员工表(employess)中的工种编号是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关键字)
    select
           last_name,job_id
    from
           employees
    where job_id in('IT_PROT','AD_VP','AD_PRES');
    

    总结:in关键字主要是判断某个字段的值是否属于in列表中的某一项

    is null 用法

    • 案例1. 查询员工表中,没有奖金的,员工名和奖金率(其实就是等于null的)
    select 
           first_name,commission_pct 
    from 
           employees 
    where 
          commission_pct is null;
    
    • 案例2. 查询员工表中,有奖金的,员工名和奖金率(其实就是不等于null的)
    select 
          first_name,commission_pct
    from  
          employees
    where 
          commission_pct is not null ;
    

    以下是练习题

    • 查询员工号为176的员工的姓名和部门号和年薪
    select
           concat(last_name,first_name) as "姓名",
           department_id as "部门号",
           salary*12*(1+ifnull(commission_pct,0)) as "年薪"
    from   
           employees
    where
          employee_id = 176;
    注意:年薪 = 月薪*12+(1+奖金率),而奖金率字段有可能会null所以用上了ifnull()函数
    
    • 查询工资不在5000到12000的员工的姓名和工资 并且按升序排序
    select 
            last_name,salary
    from  
            employees
    where  
            not salary between 5000 and 12000 
    order by salary asc ;
    
    • 查询部门id为20号或50号部门的员工姓名和部门号
    select 
            last_name,department_id
    from    
            employees
    where   
            department_id in (50,20);
    
    • 查询员工中没有管理者的员工姓名及job_id
    select  
            last_name,job_id
    from    
            employees
    where 
            manager_id is null;
    
    • 查询员工表中有奖金的员工姓名,工资和奖金级别
    select 
            last_name,salary,commission_pct
    from    
            employees
    where   
            commission_pct is not null ;
    
    • 查询员工姓名的第三个字母是a的员工姓名;
    select 
            last_name
    from    
            employees
    where   
            last_name like '__a%'
    
    • 查询员工表中有字母a和e的员工姓名;
    select
           last_name
    from
           employees
    where
           last_name like '%ae%';
    
    • 查询员工表中first_name 以 e结尾的员工信息
    select *
    from
           employees
    where  
           first_name like '%e'
    
    • 查询员工表中部门编号在80 - 100之间的姓名,职位
    select 
           last_name,job_id
    from
           employees
    where 
           department_id between 80 and 100;
    
    • 查询员工表中的 mannger_id 是 100,101,110的员工姓名,职位
    select
           last_name,job_id
    from
           employees
    where  
           manager_id in (100,101,110);
    

    以上内容较多,需要静心新来多敲几遍,方可记住

    相关文章

      网友评论

          本文标题:第二章 MySQL-DQL命令

          本文链接:https://www.haomeiwen.com/subject/giifddtx.html