【oracle】六、select 条件查询、子查询


条件查询

一、条件查询结构

select 查询内容 from 数据来源 where 行记录条件

查询我们班所有男同学信息

select 同学信息 from 学生表 where 性别= ‘男’

二、 解析过程

  1. from 学生信息表
  2. 判断性别是否为 男
  3. 根据判断的结果,将满足条件的记录在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')

解析

  1. 第一个a代表标识
  2. 第二个a就是要匹配的a
  3. 第三个a是标识
  4. 第四个%则是匹配的%
  5. 最终匹配a%

七、子查询

判断条件不能直接得到,需要计算和过滤的
select * from xxx where xx = ()

7.1 执行过程

  1. from
  2. where
    1. from
    2. where
  3. select

7.2案例

-- 查询部门 名称为 SALES的员工信息
  1. 确认要查询的数据(员工信息)
  2. 确认数据源(emp)
  3. 筛选条件是否确认?
      1. 确认要查询数据 (部门编号)
      2. 确认数据源(dept)
      3. 筛选条件是否确认?
        1. 是 (deptName='SALES')
      4. select
    1. 是(emp.deptid = id)
  4. select
select * from 员工表 where 员工所属部门id = (select id from 部门 where 名称 = ‘SALES’)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM