目录
1、 选择部门编号是30的员工
select *
from emp(员工表)
where deptno=30(部门等于30)
2、 列出所有办事员(CLERK)的姓名,编号和部门编号
select ename,empno,deptno,(姓名,编号和部门编号)
from emp(员工表)
where job=’CLERK’ (办事员)
3、 找出有奖金的员工的不同工作
select distinct job (关键词 distinct用于返回唯一不同的值。)
from emp(员工表)
where comm(奖金) is not null
4、 显示不带“R“的员工姓名
select name
from emp(员工表)
where ename not like ‘%R%’
like就是包含里面的内容
not like 就是不包含里面的内容
%R,以R结尾的
R%,以R开头的
%R% ,任意R
“%” 可用于定义通配符(模式中缺少的字母)。
a //三位且中间字母是a的
a //两位且结尾字母是a的
a //两位且开头字母是a的
5、 显示员工的姓名和入职日期,根据其服务年限,将最老的员工排在前面
select ename,hiredate
from emp
order by(排序) DATEDIFF(current_date,hiredate)/365(服务年限) DESC(降序)
order by语句默认按照升序对记录进行排序。
如果想降序排序使用DESC,升序是ASC一般是默认,忽略不写。
DATEDIFF是减
6、 列出在每个部门工作的员工数量,平均工资和平均工作期限
select deptno,count(empno(员工数量)),avg(sal(平均工资)),avg(DATEDIFF(current_date,hiredate)工作期限)
from emp
group by deptno(部门)
分组 group by 有最大最小或者平均,数量
数量 count
平均 avg
7、 列出薪金比“SMITH”多的所有员工
首先先查出SMITH的工资
select sal from emp where ename=‘SMITH’
select *
from emp
where sal>上面的(select sal from emp where ename=‘SMITH’)
8、 列出所有员工的姓名,部门名称和工资
首先姓名和工资是一张表上的东西,部门名称是另一张表上,这个时候我们就要把两张表连在一起,我们先找出,两个表的共同点,然后再连在一起,最后找到想要的东西。
select e.,d.
from emp e, dept,d (这是给两张表起一个方便区别的名字)
where e.deptno=d.deptno (先把两张表连接在一起)
然后
select e.enmae,d.dname,e,sal
from emp e,dept d
where e.deptno=d.deptno
9、 列出与“SCOTT”从事相同工作的所有员工及部门名称
select e.*,d.dname
from emp e,dept d
where e.deptno=d.deptno (连接两个表)and(其他条件) e.job=(select job from emp where ename=’SCOTT’找到与SCOTT从事的工作)and ename<>’SCOTT’(去掉SCOTT这一行)
10、列出所有“CLERK”(办事员)其部门名称,部门的人数
select d.dname,count(e.empno)
from emp e,dept d
where e.deptno=d.deptno and jod=’CLERK’
group by d.dname