SQL基本语句练习(一)

 
1.查询emp表中的员工号以及每个人工资的80%。
       select EMPNO,SAL*0.8 from emp
 
2.查询emp表中员工的员工号和姓名,要求输出格式如下:
     EMPNO 'NAMEIS: ENAME
---------- -------- ----------
      7369 Name is: SMITH
      7499 Name is: ALLEN
      7521 Name is: WARD
 
              select empno,'Name is',ename from emp;
 
3.查询emp表中员工编号,姓名,要求姓名输出小写。
              select empno,'Name is',ename from emp;
 
4.查询emp表中员工姓名、工资和工种,要求将姓名列标题改为employeename,工资列标题改为salary。
              select ename as employeename,sal salary,job from emp;
 
5.使用字符串连接运算符‘||’输出员工姓名及其一个月工资。
MONTHY
---------------------------
SMITH:1month salary=800
ALLEN:1month salary=1600
WARD:1month salary=1250
              select ename||':1 month salary='||sal as monthy from emp;
 
6.输出所有员工工种。
              select distinct job from emp;
 
7.查询10号部门的员工号、员工姓名和工资。
              select empno,ename,sal from emp where deptno=10;
 
8.查询工资超过1500的员工的编号、姓名和工资。
              select empno,ename,sal from emp where sal>1500;
 
9.查询工资不在1000-2000之间的员工的编号、姓名、工资和部门号。
              select empno,ename,sal,deptno from emp where sal not between 1000 and 2000;
 
10.查询10号部门和30号部门的所有员工的编号、姓名、工资和部门号。
              select empno,ename,sal,deptno from emp where deptno in (10,30);
 
11.查询姓名以's'开头的员工的编号、姓名、工资和部门号。
     EMPNO ENAME             SAL     DEPTNO
---------- ---------- ---------- ----------
      7369 SMITH             800         20
      7788 SCOTT            3000         20
       select empno,ename,sal,deptno from emp where ename like 'S%';
 
12.查询奖金不为空的员工的编号、姓名、工资、奖金和部门号。
       select empno,ename,sal,comm,deptno from emp where comm is not null;
 
13.查询奖金不为空且工资超过1500的员工的编号、姓名、工资、奖金和部门号。
select empno,ename,sal,comm,deptno from emp where comm is not null and sal>1500;
 
14.查询工种是salesman或者clerk且工资超过1500的员工的编号、姓名、工资、奖金和部门号。
       select empno,ename,sal,comm,deptno from emp where job in ('SALESMAN','CLERK') and sal>1500;
 
15.查询emp表中的员工号、员工姓名、工种、工资,并按工资降序排序。
       select empno,ename,job,sal from  emp order by sal desc;
 
16.查询emp表中的员工号、员工姓名、工种、工资,以及员工总收入(工资奖金之和),并按工资奖金之和升序排序。
       select empno,ename,job,sal ,sal+nvl(comm,0)from emp order by sal+nvl(comm,0) asc;
 
17.将上题中工资和奖金之和起别名为earnings,排序输出。
       select empno,ename,job,sal ,sal+nvl(comm,0) as earnings from emp order by earnings asc;
 
18.查询emp表中员工姓名、工资、部门号,并按部门号升序排序,同一部门按工资降序排序。
       select ename, sal ,deptno from emp order by deptno,sal desc;
 
19.求emp表中所有员工的平均工资。
       select avg(sal) from emp;
 
20.计算工资在1000-3000之间的员工人数。
       select count(*) from emp where sal between 1000 and 3000;
 
21.查询工作以“sales”开头的员工的平均工资,最高工资、最低工资和总工资。
       Select avg(sal),max(sal),min(sal),sum(sal) from emp where job like ‘SALES%’
 
22.查询所有员工的最早入职时间和最晚入职时间。
       Select min(HIREDATE),max(HIREDATE) from emp;
 
23.查询30号部门的员工人数。
       Select count(*) from emp where deptno=30;
 
24.查询30号部门有奖金的员工人数。
       Select count(*) from emp where deptno=30 and comm is not null;
 
25.查询所有员工的平均奖金。
       Select avg(nvl(comm,0)) from emp;
 
26.查询每个部门的平均工资。
       Select deptno,avg(sal) from emp group by deptno;
 
27.查询每个部门各工种的雇员数。
       Select deptno,count(*) from emp group by deptno,jop;
 
28.查询平均工资超过2000的部门,并按部门号进行排序。
       Select deptno,avg(sal) from emp group by deptno having avg(sal)>2000;
 
29.查询所有员工的员工号、姓名、部门号和部门名称。
       Select empno,ename,emp.deptno,dname from emp,dept where emp.deptno=dept.deptno;
 
30.查询每个员工的员工号、姓名、入职时间、工资和级别。
Select empno,ename, hiredate,sal, grade from emp,salgrade where losal<=sal and hisal=>sal
Select empno,ename, hiredate,sal, grade from emp,salgrade where sal between losal and hisal;
 
31.查询所有员工的姓名和他的上司的姓名。
       Select worker.ename,manager.ename from emp worker,emp manager
       Where worker.mgr=manager.empno(+);
 
32.查询所有工资大于2000的雇员的姓名和他的经理的名字。
       Select worker.deptno, worker.ename,manager.ename ,worker.sal from emp worker,emp manager Where worker.sal>2000 and worker.deptno=manager.deptno and
manager.job=’ MANAGER’  
 
33.查询比7566号员工工资高的员工的姓名。
       Select ename,sal from emp where sal>(select sal from emp where empno=7566);
 
34.查询工资最低的员工的姓名、职务和工资信息。
       Select ename,sal,job,grade from emp,salgrade where sal=(Select min(sal) from emp) and sal between losal and hisal;
 
35.查询每个部门号和最低工资,要求该部门的最低工资比20号部门的最低工资高。
       一条记录 Select deptno,sal from emp where sal=(select min(sal) from emp where sal>(Select min(sal) from emp where deptno=20));
 
Select deptno,min(sal) from emp group by deptno having min(sal)> (Select min(sal) from emp where deptno=20);
36.查询每个部门工资最高的员工的姓名、部门号和工资。
       Select ename,deptno,sal from emp where (deptno,sal) in (Select deptno,max(sal) from emp group by deptno);
 
37.查询员工的名字, 部门号, 薪水, 奖金,要求该员工的薪水、奖金都要和部门号30内的某个员工相等。
       Select ename,deptno,sal,comm from emp where (sal,nvl(comm,-1)) in (Select sal,nvl(comm,-1) from emp where deptno=30);
 
38.求没有下属的员工。
select * from emp where empno not in(select distinct mgr from emp where mgr is not null);
select * from emp where empno in       (select empno from emp minus select distinct mgr from emp);
 
39.向emp表中插入一条与SMITH的内容相同的记录,但姓名改为了FAN,雇员号改为8000.
       insert into emp (empno,ename,job,mgr,hiredate,sal,comm,deptno) select 8000, 'FAN',job,
mgr,hiredate,sal,comm,deptno from emp where ename='SMITH';
 
40.将雇员号为8000的雇员提升为部门20的经理,工资增加1000。.
       update emp set job = 'manager',sal = sal + 1000,deptno = 20 where empno = '8000';
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值