语法:
- select * from +表名;
例:select * from emp;
- select 列1,列2 … from + 表名;
例:select ename, job from emp
- select 列1,列2 … from + 表名 where + 条件;
请展示 部门编号为10的员工信息
select * from emp where deptno = 10 ;
**
知识点
- =,>,<,>=,<=,<>,!=
请找出 工资 大于2500的员工信息
select * from emp where sal > 2500;
不在20号部门的员工编号和部门编号
select empno,deptno from emp where deptno <> 20;
- not 取反 is null is not null
请展示没有奖金 的 员工编号,员工姓名,员工工资 select a.*,empno 员工编号 ,ename,sal from
emp a where comm is null;
不在20号部门的 员工编号和部门编号
select empno,deptno from emp where deptno <> 20;
- and / or /between and 在…之间
部门编号为20的员工里,工资大于2500的 员工信息
select * from emp where deptno = 20 and sal >2500;
部门编号为20的员工或者工资大于2500的 员工信息
select * from emp where deptno = 20 or sal >2500;
练习
1.显示工资大于1500的销售信息 SALESMAN
select * from emp where job = ‘SALESMAN’ and sal >1500;
2.工资在1000-2000之间的员工信息
select * from emp where sal between 1000 and 2000;
注:between and 包含边界值
3.展示员工编号在7300- 7500之间的员工信息
select * from emp where empno between 7300 and 7500;
- 数值类型的计算
±*/()
请展示年薪大于1万5的 员工信息
select * from emp where sal *12 >15000;
- 连接 ||
select empno,ename,empno||ename from emp ;
员工编号为:empno的员工是:ename.
select ‘员工编号为:’||empno||’ 的员工是:’||ename from emp ;
- 集合 in (值1,值2…)
部门10和部门20的员工信息
方法1:select * from emp where deptno =10 or deptno = 20;
方法2:select * from emp where deptno in (10,20);
请显示工种为SALESMAN和CLERK 的员工编号,员工姓名
select empno,ename from emp where job in (‘SALESMAN’,‘CLERK’);
- any / all 任意一个/所有
any(1000,2000,3000) 大于集合中任意一个 等价于 大于集合里面的最小值
<any
all(1000,2000,3000)大于集合中所有的值 等价于 大于集合里面的最大值
<all
- like /not like 模糊匹配
‘’ 精确匹配
请找出员工中以S开头的员工信息
select * from emp where ename like ‘S%’;
请找出A开头的,倒数第二位是E的员工信息
select * from emp where ename like ‘A%E_’;
9… 排序语法
select * from 表名 where 条件 order by + 列 asc | desc 😭 升序 | 降序 ) order by 后是按照列的先后顺序排序的
注:asc是默认的,可以不写例1:select * from emp where deptno = 10 order by sal asc;
例2:按照部门、姓名升序排序 | 降序排序
select * from emp order by deptno desc ,ename desc ;
- 聚合函数
sum() avg() count() max() min()
例:10号部门的员工工资总和
select sum(sal) from emp where deptno =10;
练习:
求出20号部门的最大工资、工资总和、平均工资
select max(sal),sum(sal),avg(sal) from emp where deptno =20;
求员工的奖金总和
select sum(comm) from emp;
求多少个员工有奖金
select count(comm) from emp;
- 分组
select 列1,列2 聚合函数…
from 表名
where 条件
group by 列1,列2…
having 条件
注:1)group by 后面的列是有顺序的
- 汇总
select 列1,列2,聚合函数…
from 表名 where 条件
group by 列1,列2…
having 条件
order by
列1,列2… asc|desc;
注:对group by 后的结果进行条件过滤, 有having必有group by