一、子查询
子查询 : 查询语句嵌套查询语句
当条件与要查询的数据在不同的数据源,而两个数据源之间存在一定的关联方式,可以子查询中转查询
案例分析:
1、
–部门名称为 SALES 或 ACCOUNTING 的雇员信息
–数据 : 员工信息 *
–来源 : 员工表 emp
–条件 : dname in (‘SALES’,‘ACCOUNTING’)
–查询 SALES 或 ACCOUNTING的部门编号
--原代码
select deptno from dept where dname in ('SALES','ACCOUNTING');
select * from emp where deptno in(10,30);
--使用子查询之后
select * from emp where deptno in (select deptno from dept where dname in ('SALES','ACCOUNTING'));
--就是将原本的第一行查询的查询过程带入第二行得到的第一行的结果的地方
2、
– 查询工资等级为 2的员工信息
–数据 : 员工信息 *
–来源 : 员工表 emp
–条件 : 工资等级为 2
–查询2等级的最低薪与最高薪
--原代码
select losal from salgrade where grade = 2;
select hisal from salgrade where grade = 2;
select * from emp where sal between 1201 and 1400;
--1201和1400是执行上两行查询得到的结果
--使用子查询之后
select * from emp where sal between (select losal from salgrade where grade = 2) and (select hisal from salgrade where grade = 2);
二、单行函数
在SQL中函数主要分为内置函数和自定义函数
也可以把函数分为:单行函数和多行函数两类
单行函数:一条记录返回一个结果
例如:nvl(判断值,带入值)函数,判断判断值是否为空,把空修改为带入值。每一行的每一个记录都会返回一个结果就叫单行函数
多行函数|组函数|聚合函数: 多条记录返回一个结果
例如:求班上所有人的平均分,根据多条数据返回一个结果就是多行函数
常见的单行函数及应用:
表示当前时间
--都可以表示当前时间建议使用第一种
select sysdate from dual;
select current_date from dual;
输出结果:
表示当前时间的应用
--日期可以直接+——
-- 2天以后是几号
s