emp表格
dept表格
基本select查询语句
-- 查询全部, * 先给解析成每一个字段,再来查询
select * from emp;
select * from dept;
-- 查询全部, 效果同上
select empno, ename, job, mgr, hiredate, sal, comm, deptno
from emp;
-- 筛选 where
select * from emp
where + 条件
例如:-- 在部门20的人 =
-- deptno = 20;
-- 工资大于3000的人 > >=
-- sal >= 3000;
-- 工资小于3000的人 < <=
-- sal < 3000;
-- 工资不等于3000的人 <>
-- sal <> 3000;
-- 大于3000或者小于3000 or and (and优先级更高)
-- (sal > 3000 or sal < 3000)
-- and deptno = 20;
-- job是salesman的 字符串比较 = 大小写敏感,借助函数
-- lower(job) = 'salesman';
-- 名字长度超过5位, 借助length函数
-- length(ename) > 5;
-- 名字中以 s 开头的人
-- like 配合 %:0个或多个* _:1个,模糊查询
-- ename like 'S%';
-- 名字中有 s 的人
-- ename like '%S%';
-- 没有领导的人
-- null值很特殊,不能判断、不能计算,代表无穷大,或者无穷小
-- mgr is null; -- is not null
-- 工资大于 3000,1500,1200 任意一个
-- sal > any (3000, 1500, 1200);
-- 工资大于 3000,1500,1200 每一个
-- sal > all (3000, 1500, 1200);
-- 工资等于 3000,1500,1200 任意一个
sal in(3000, 1500, 1200);
select ename,
sal * 12 + nvl(comm, 0) as salary
from emp;
-- nvl2(comm, val1, val2): 如果comm为null,取val2,否则取val1
select nvl2(comm, 0, 1000) from emp;
-- 查询出来的员工,按照入职时间排序 - 默认升序 asc 降序 desc
select * from emp order by hiredate asc;
select * from emp order by hiredate desc;
-- 分组函数、聚合函数 max min sum avg count
select count(empno) from emp;
-- 分组函数 忽略null值
select count(comm) from emp_hh;
select count(1) from emp;
-- 每个部门最高工资
select deptno, max(sal) from emp
group by deptno;
-- 注意:错误!ename 14条,max(sal) 1条
-- 结论:select子句中出现的字段,必须同时出现在group by子句中
select ename, max(sal) from emp ;
select deptno, max(sal), min(comm), avg(comm), sum(empno)
from emp
group by deptno;
-- 通过emp表查询员工部门都有哪些
select deptno from emp;
select distinct deptno from emp; -- 去重复
select distinct deptno , mgr from emp; -- 去重复