第二章 MySQL-DQL命令

第二章 MySQL-DQL命令

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);

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值