条件查询,模糊查询
14、条件查询
14.1、语法格式:
select
字段1,字段2,字段3.....
from
表名
where
条件;
14.2、有哪些条件?
1)= 等于
查询薪资等于800的员工姓名和编号?
select empno,ename from emp where sal = 800;
查询SMITH的编号和薪资?
select empno,sal from emp where ename = 'SMITH';
2)<> 或 != 不等于
查询薪资不等于800的员工姓名和编号?
select empno,ename from emp where sal != 800;
select empno,ename from emp where sal <> 800;
3)< 小于
查询薪资小于2000的员工姓名和编号?
select empno,ename from emp where sal < 2000;
4)<= 小于等于
查询薪资小于等于2000的员工姓名和编号?
select empno,ename from emp where sal <= 2000;
5)> 大于
查询薪资大于3000的员工姓名和编号?
select empno,ename from emp where sal > 3000;
6)>= 大于等于
查询薪资大于等于3000的员工姓名和编号?
select empno,ename from emp where sal >= 3000;
7)between....and.... 两个值之间,等同于 >= and <=
查询薪资在2450和3000之间的员工信息?包括2450和3000
第一种:
select empno,ename,sal from emp where sal >= 2450 and sal <= 3000;
第二种:
select empno,ename from emp where sal between 2450 and 3000;
注意:使用between and必须遵循左小右大
between and是闭区间,包括两端的值
8)is null 为 null (is not null 不为空)
查询哪些员工的津贴/补助为null
select empno,ename,sal,comm from emp where comm is null;
查询哪些员工的津贴/补助不为null
select empno,ename,sal,comm from emp where comm is not null;
注意:在数据库中null不能使用等号进行衡量。需要使用 is = null
数据库中的null代表什么也没余,不是一个值,不能使用等号
9)and 并且
查询工作岗位是MANAGER并且工资大于2500的员工信息
select empno,ename,job,sal from emp where job = 'MANAGER' and sal > 2500;
10)or 或者
查询工作岗位是MANAGER或者是SALESMAN的员工?
select empno,ename,job from emp where job = 'MANAGER' or job = 'SALESMAN';
and和or同时出现,有优先级吗?
查询工资大于2500,并且部门编号为10或20的员工?
select ename from emp where sal sal > 2500 and deptno = 10 or deptno = 20;
以上语句会先执行and 后执行or 表示找出工资大于2500并且部门编号为10的员工,或者20部门所有员工
所以要加()
select ename from emp where sal sal > 2500 and (deptno = 10 or deptno = 20);
注意:and和or同时出现,and优先级高,要or先执行必须先加小括号
11)in 包含,相当于多个or (not in 不在这个范围中)
查询工作岗位是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');
注意:in不是一个区间,后面是具体值
查询薪资是800和5000的员工信息?
select ename,sal from emp where sal = 800 or sal = 5000;
select ename,sal from emp where sal in (800,5000);
not in 表示不在这几个值当中的数据
select ename,sal from emp where sal not in (800,5000);
12)not 可以取非,主要用在is 或in中
13)like 称为模糊查询,支持%或下划线匹配
%匹配任意个字符
下划线:一个下划线只匹配一个字符
找出名字汇总含有O的?
select ename from emp where ename like '%O%';
找出名字以T结尾?
select ename from emp where ename like '%T';
找出名字以K开始?
select ename from emp where ename like 'K%';
找出第二个字母是A的?
select ename from emp where ename like '_A%';
找出第三个字母是R的?
select ename from emp where ename like '__R%';
注意:
t_student学生表
name字段
zhangsan
lisi
wangwu
jack_son
找出名字中有"_"的?
select name from t_student where name like '%\_%'; // \转义字符