1. between … and…表示范围的组合
找出月薪在2000到6000之间的员工?
select* from emp where sal>=2000 and sal<=6000; //where后面是两个条件
select* from emp where sal between 2000 and 6000; //where后面是一个条件
2. in和not in
找出10号、30号、40号部门的所有员工?
select* from emp where deptno=10 or deptno=30or deptno=40;//三个条件
select* from emp where deptno in(30,40,10); //一个条件
//select* from emp where deptno not in(30,40,10);
3. is null和is not null
找出有提成的员工?
select* from emp where comm is not null;
4. 排序order by
按照月薪从低到高查询所有员工?
select* from emp order by sal asc;//升序
select* from emp order by sal desc;//降序
select* from emp order by sal;//默认是升序
//sal是主排序字段,comm是次要排序字段
select* from emp order by sal asc, comm desc;
5. 别名
字段或者表可以起别名
selectename as eee from emp as ttt;
selectename e from emp t;
6. 不等于
!= <>
select* from emp where deptno <>10;
7. distinct关键字
过滤重复,不显示重复的
注意:这个关键字要跟在select后面
查询所有员工都分布在哪些部门?
selectdistinct deptno from emp;
8. 分组查询group by
请算出每个部门的平均工资?
先分组,然后再求平均
selectdeptno, avg(sal) from emp group by deptno;
如果select语句中有group by 子句,
那么select关键字之后能跟(group by 后面出现的字段 + 组函数)
请找出平均工资大于 4000的部门编号?
having条件,筛选组(where条件,筛选表中的数据)
selectdeptno,avg(sal) from emp group by deptno having avg(sal)>4000;
没有group by, 肯定没有having
查询语句的全结构:
select .... 5
from ... 1
where ... 2
group by ... 3
having.... 4
order by ... 6
(书写顺序) (执行顺序)
9. 模糊查询
精确查询用=,模糊查询用like
有两个通配符,%代表0个或者多个任意字符,_代表1个任意字符
找出所有姓wang的员工?
select* from emp where ename like ‘wang%’
找出名字中有a这个字母的员工?
10. 分页查询语句(limit)
例如:select * from emp limit 0,3; //表示从 0+1 条开始取,取出3条数据.