目录
条件查询
一、条件查询结构
select 查询内容 from 数据来源 where 行记录条件
查询我们班所有男同学信息
select 同学信息 from 学生表 where 性别= ‘男’
二、 解析过程
- from 学生信息表
- 判断性别是否为 男
- 根据判断的结果,将满足条件的记录在select中指定的信息 进行存放(结果集当中)
三、条件运算
条件运算,本质上是对数据源过滤、筛选
> -- 大于
< -- 小于
>= -- 大于等于
<= -- 小于等于
<> -- 不等于
!= -- 不等于
between and -- 在什么什么之间 (范围)
-- 查询 工资在2000~4000的
select * from 表名 where 工资 between 2000 and 4000
in -- 包含什么什么 (范围)
-- 查询10、30、40
select * from 表名 where 字段 in (10,30,40)
四、连接条件运算
当查询 条件有多个时,可能需要同时满足,或者只满足其中一个,或者不满足某个条件,则需要用到或。且。非
and -- 并且 必须同时满足
-- 查询出30部门的员工,并且工资等于8000的
select * from 员工表 where 部门=30 and 工资= 8000
or -- 或者 满足其中一个即可
-- 查询出20部门的员工,以及工资大于1500的员工信息
select * from 员工表 where 部门= 20 or 工资>1500
not -- 非 反转
-- 查询工资不等于6000的员工信息
select * from 员工表 where not 工资=6000
五、Null运算Nvl()
对于Null 是特别的,Null也有对应的处理方式
-- is not null
-- 查询出奖金不为空的员工信息
select * from 员工表 where 奖金 is not null
-- is null
-- 查询出奖金为空的员工信息
select * from 员工表 where 奖金 is null
-- nvl(x,p) 用法:x:代表本身,p代表舍得的值
-- 需求:查询奖金 小于等于0的员工信息
select * from 员工表 where nvl(奖金,0) <=0
六、模糊查询
模糊查询通常是用户输入一个关键词,我们通过关键词匹配用户真实需求的值,这时候可以使用like
6.1 常规使用
-- 查询名词为 包含有 s 的员工信息
select * from 员工 where 名字 like '%s%'
-- 查询 员工名词以 A 开头的员工信息
select * from 员工 where 名字 like 'A%'
-- 查询 名称中第二个单词为A的员工信息
select * from 员工 where 名字 like '_A%'
-- 查询名称中 倒数第二个字母为 I 的员工信息
select * from 员工 where 名字 like '%I_'
6.2 特殊使用
-- 查询员工名词包含%的员工信息
-- a在这里只是代表一个标识符,他会去匹配a后面跟着的%也好_也好
select *from 员工 where 名字 like '%a%%' escape('a')
-- 如果我想查出 员工包含 a% 以上就不行了,因为上面的是查询出包含%的(改造)
select *from 员工 where 名字 like '%aaa%%' escape('a')
解析
- 第一个a代表标识
- 第二个a就是要匹配的a
- 第三个a是标识
- 第四个%则是匹配的%
- 最终匹配a%
七、子查询
判断条件不能直接得到,需要计算和过滤的
select * from xxx where xx = ()
7.1 执行过程
- from
- where
- from
- where
- select
7.2案例
-- 查询部门 名称为 SALES的员工信息
- 确认要查询的数据(员工信息)
- 确认数据源(emp)
- 筛选条件是否确认?
- 是
- 否
- 确认要查询数据 (部门编号)
- 确认数据源(dept)
- 筛选条件是否确认?
- 是 (deptName='SALES')
- select
- 是(emp.deptid = id)
- select
select * from 员工表 where 员工所属部门id = (select id from 部门 where 名称 = ‘SALES’)