1.查询所有列
select * from emp(表名)where 条件
2.查询制定列
select 字段1,字段2 from 表名 where 条件
例:select sal,job,deptno from emp where ename=‘smith’ 这里的名字可以大写也可以小写
3.如何取消重复行
select distinct 字段 from 表名 where 条件
注意:distinct 只能消除完全一样的行,并且只留一行
4.显示每个雇员的年工资
select enamel,sal*13 年工资 from emp; 年工资就是别名
5.如何处理null的问题
select ename,sal*13+isnull (comm,0)*13 年工资 from emp;这里的comm是额外的奖励工资,当没有奖励时就用isnull函数判断是否为0
6.如何显示首字母为S的员工姓名和工资
select enamel,sal from emp where enamel like 'S%';
7.如何显示第三个字母为大写O的所有员工的姓名和工资
select ename ,sal from emp where ename like '_ _S%';这里下划线之间没有空格,为了显示两个下划线的效果才刻意添加的空格。
8.如何显示没有上级雇员的情况
select * from emp where mgr isnull;
9.如何显示emptno为123,345,800...的雇员情况
①select * from emp where emptno=123 and emptno=345 and emptno=800;
这里员工编号较少,如果员工编号很多,就会显得很繁琐,所以出现第二种查询方式(使用in函数)
②select * from emp where emptno in (123,345,800)
10.按照部门号升序而雇员的工资降序排列
select * from emp order by deptno,sal desc
使用order by 字句(默认是升序排序),asc代表升序,desc代表降序
11.如何显示最低工资和该雇员的名字
select ename ,sal from emp where sal=(select min(sal) from emp)
12.统计共有多少员工
select count(*) from emp;
13.如何显示每个部门的平均工资和最高工资
select avg(sal),deptno,max(sal) from emp group by deptno
14.显示平均工资低于2000的部门号和它的平均工资并从低到高排序
select avg(sal),deptno from emp group by deptno having avg(sal)<2000 order by avg(sal) asc
having 往往和group by 结合使用。可以对分组查询结果进行筛选
对数据分组的总结:
①分组函数只能出现在选择列表 having ,order by 字句中
②如果在select 语句中同时包含group by ,having,order by 那么他们的顺序是group by ,having,order by
③在选择列中,如果有列,表达式和分组函数。那么这些列和表达式必须有一个出现在group by字句中,否则就会出错