03条件查询

1 什么是条件查询?

不是将表中所有数据都查出来。是查询出来符合条件的。

语法格式:
			select
				字段1,字段2,字段3....
			from 
				表名
			where
				条件;

2 都有哪些条件?

  • = 等于
    查询薪资等于800的员工姓名和编号?
select empno,ename from emp where sal = 800;

查询SMITH的编号和薪资?

select empno,sal from emp where ename = 'SMITH'; //字符串使用单引号
  • <>或!= 不等于
    查询薪资不等于800的员工姓名和编号?
select empno,ename from emp where sal != 800;
select empno,ename from emp where sal <> 800; // 小于号和大于号组成的不等号
  • < 小于
    查询薪资小于2000的员工姓名和编号?
mysql> select empno,ename,sal from emp where sal < 2000;
  • 查询薪资小于2000的员工姓名和编号?

在这里插入图片描述

  • <= 小于等于

    查询薪资小于等于3000的员工姓名和编号?

select empno,ename,sal from emp where sal <= 3000;
  • 大于 >

    查询薪资大于3000的员工姓名和编号?

select empno,ename,sal from emp where sal > 3000;
  • 大于等于 >=
    查询薪资大于等于3000的员工姓名和编号?
select empno,ename,sal from emp where sal >= 3000;
  • between … and …. 两个值之间, 等同于 >= and <=
    查询薪资在2450和3000之间的员工信息?包括2450和3000

第一种方式:>= and <= (and是并且的意思。)

select empno,ename,sal from emp where sal >= 2450 and sal <= 3000;

第二种方式:between … and …

select 
	empno,ename,sal 
from 
	emp 
where 
	sal between 2450 and 3000;

注意:
使用between and的时候,必须遵循左小右大。
between and是闭区间,包括两端的值。

  • is null 为 null(is not null 不为空)
    (1)查询哪些员工的津贴/补助为null?
select empno,ename,sal,comm from emp where comm = null;//返回空
select empno,ename,sal,comm from emp where comm is null;// 返回comm列值为空的行

在SQL中,null用于表示缺乏值或未知值。当你使用"=“或”!=“运算符时,它们不被认为是普通的相等或不相等运算符,而是被认为是特殊的未知值运算符。因此,使用”=null"条件查询不会返回任何结果,但使用"is null"条件查询将返回所有comm列值为空的行。

在这里插入图片描述(2)查询哪些员工的津贴/补助不为null?

select empno,ename,sal,comm from emp where comm is not null;

在这里插入图片描述

  • and 并且
    查询工作岗位是MANAGER并且工资大于2500的员工信息?
        select 
			empno,ename,job,sal 
		from 
			emp 
		where 
			job = 'MANAGER' and sal > 2500;
  • or 或者
    查询工作岗位是MANAGER和SALESMAN的员工?
       select 
			empno,ename,job
		from
			emp
		where 
			job = 'MANAGER' or job = 'SALESMAN';

在这里插入图片描述

  • and和or同时出现的话,有优先级问题吗?
    查询工资大于2500,并且部门编号为10或20部门的员工?
       select 
			*
		from
			emp
		where
			sal > 2500 and deptno = 10 or deptno = 20;

(1)分析以上语句的问题?
and优先级比or高。
以上语句会先执行and,然后执行or。
(2)以上这个语句表示什么含义?
找出工资大于2500并且部门编号为10的员工,或者20部门所有员工找出来。
(3) and和or同时出现,and优先级较高。如果想让or先执行,需要加“小括号”以后在开发中,如果不确定优先级,就加小括号就行了。

       select 
			*
		from
			emp
		where
			sal > 2500 and (deptno = 10 or deptno = 20);
  • in 包含,相当于多个 or (not in 不在这个范围中)

    (1)查询工作岗位是MANAGER和SALESMAN的员工?

select empno,ename,job from emp where job = 'MANAGER' or job = 'SALESMAN';
select empno,ename,job from emp where job in('MANAGER', 'SALESMAN');

在这里插入图片描述(2)查询薪资是800和5000的员工信息?

select ename,sal from emp where sal = 800 or sal = 5000;
select ename,sal from emp where sal in(800, 5000); //这个不是表示800到5000都找出来。

在这里插入图片描述(3) not in 表示不在这几个值当中的数据。

select ename,sal from emp where sal not in(800, 5000, 3000);

在这里插入图片描述

  • not 可以取非,主要用在 is 或 in 中
        is null
		is not null
		in
		not in
  • like
    称为模糊查询,支持%或下划线匹配
    %匹配任意多个字符
    下划线:任意一个字符。
    (%是一个特殊的符号,_ 也是一个特殊符号)

(1)找出名字中含有O的?

select ename from emp where ename like '%O%';

在这里插入图片描述(2)找出名字以T结尾的?

select ename from emp where ename like '%T';

(3)找出名字以K开始的?

select ename from emp where ename like 'K%';

(4)找出第二个字每是A的?

select ename from emp where ename like '_A%';

(5)找出第三个字母是R的?

select ename from emp where ename like '__R%';

(6)找出名字带有_字符

// false,这样会查询所有的
 select ename from emp where ename like '%_%';
 

在这里插入图片描述应该使用转义字符 ‘\’
select ename from emp where ename like '%\_%';

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值