0
点赞
收藏
分享

微信扫一扫

006MySQL_DQL条件查询

心如止水_c736 2022-03-11 阅读 49

五、DQL语言

文章目录

5.6.条件查询


  • 分类

    • 按条件表达式

      • 条件运算符

      • java中的不等于 != 也支持

      • <    >  
        <>(又大又小就是不等于),在MySQL中推荐使用
        
        <=    >=
        
    • 按逻辑表达式

      • 逻辑运算符
      • && || !
      • and or not 推荐使用
    • 模糊查询

      • like 像
      • between and
      • in
      • is null

5.6.1.按条件表达式

  • 条件表达式

  • 找出employees中工资大于12000的员工信息

    SELECT 
    *
    FROM
    employees 
    WHERE salary >12000;
    
    image-20220301210929328
  • 部门编号不等于90的员工

  •   SELECT 
        last_name,
        department_id
      FROM
        employees 
      WHERE department_id <> 90 
    
  • image-20220301211714422

5.6.2.按逻辑表达式

  • 找出工资在10000-20000的员工信息

  • SELECT
    	*
    FROM
    	employees
    WHERE
    	salary >=10000 AND salary <=20000;
    
    
  • image-20220301212839033
  • 部门编号不在90—100之间,或者工资大于15000的员工信息

  • SELECT
    	*
    FROM 
    	employees
    WHERE
    	department_id<90 OR department_id>100 OR salary;
    
  • image-20220301213320131

5.6.3.按模糊查询

5.6.3.1.关键字like的使用

  • 查找出名中含有字母a的员工信息

    • 显然使用条件表达式或者逻辑表达式无法操作,二者是精确查询,精确到具体
    • 使用模糊查询
    • 通配符百分号
      • 代表多个任意字符
      • 包括0个字符
    • %a%
      • 字母a的前后还有任意字符
    • 通配符下滑线
      • 单个字符的通配符
  • select 
    	*
    from
    	employees
    where
    	last_name like '%a%';
    #在MySQL中,字符必须使用单引号括起来
    #MySQL不区分大小写,所以结果中,last_name
    #有大写字母A的也筛选出来了
    #注意`a`使用通配符,因为人名不可以就一个字母
    
  • image-20220301214758924


问题:找出名第三个字符是a员工和及工资

select last_name,salary
from employees
where last_name like '__a%';

image-20220301215911660

注意:

  • 找出第二个字符是下划线的名,怎么找?

    • 使用转义字符

      • 与java转义字符一致用反斜杠

      • ‘\_’
        
        
      • 自己定义转义字符(推荐使用)+关键字escape

      • where last_name like '_$_%' escape '$'
        #使用escape将美元符号定义为转义字符
        
      • image-20220301220904083

5.6.3.2.关键字 between and

问题:员工编号在50—100之间的员工信息?

SELECT *
FROM employees
WHERE employee_id BETWEEN 50 AND 100;

image-20220301222839372

注意:

  • 员工ID可以=100,也就说between and是包含边界的

5.6.3.3.关键字 in

注意:在输入命令时,若报错,请仔细检查,肯定有那个字符细节上处理不到位

想输入着重号,很难输入,反正就是不顺利,很可能此时是把(单引号)当做着重号了

  • in不支持通配符,为什么?

SELECT last_name,job_id
FROM employees
WHERE job_id IN ('AD_VD','PRES_VD','AD_VP');

image-20220302224000965

思考:为什么in里面的参数要用好、单引号?

5.6.3.4.关键字is null

  • 注意:
    • isnull是搭配使用的,is not null也是,不要拿去和别的对象使用
    • 不要出现is 12000来找出工资12000的员工,这是错误使用
    • 要找工资12000的员工,直接用等于号,条件表达式就可以了

问题:给我把公司里没有奖金的员工找出来

select last_name,commission_pct
from employees
where commission_pct is null

image-20220302230845924

思考:逆向思维,给我找出有奖金的员工,怎么做?

  • 逆向,在编程里,逆向,好办呀,
select last_name,commission_pct
from employees
where commission_pct is not null;

image-20220302231255603

5.6.3.4.1安全等于<=>

对比:

符号用法范围
is null判断有固定使用
is not null判断没有固定使用
<=>可以代替is null除了用于null,还可以用于普通的等于,机动灵活,比如工资12000
注意否定时,not的位置
SELECT last_name,commission_pct
FROM employees
WHERE  NOT commission_pct <=> NULL;

image-20220302234632901

练习:查出工号176的员工年薪和所属部门编号

SELECT last_name,department_id,employee_id,
		salary*12*(1+IFNULL(commission_pct,0)) AS 年薪
		FROM employees
		WHERE employee_id=176;

image-20220302234317976

举报

相关推荐

0 条评论