Oracle——基本查询语句

了解Oracle数据库,编写简单的查询语句,包括对数据的限制查询和排序,以下为练习题目

–(1)使用两种方式查询所有员工()的信息。
SELECT * FROM emp
SELECT empno,ename,job,mgr,hiredate,sal,comm,deptno
FROM emp

–(2)查询员工编号、 员工姓名、员工职位、员工月薪、工作部门编号。
SELECT empno,ename,job,sal,mgr FROM emp

–(3)员工转正后,月薪上调20% ,请查询出所有员工转正后的月薪。
SELECT sal*(1+0.2) 转正后月薪 FROM emp

–(4)员工试用期6个月,转正后月薪上调20% ,请查询出所有员工工作第一年的年薪所
–得(不考虑奖金部分,年薪为试用期6个月的月薪+转正后6个月的月薪)。
SELECT (sal+sal*(1+0.2))*6 试用加转正年薪 FROM emp

–(5)员工试用期6个月,转正后月薪上调20% ,请查询出所有员工工作第一年的所有收
–入(需考虑奖金部分),要求显示列标题为 员工姓名、工资收入、奖金收入、总收入。
SELECT ename 员工姓名,(sal+sal*(1+0.2))6 工资收入,NVL(comm,0) 奖金收入,(sal+sal(1+0.2))*6+NVL(comm,0) 总收入 FROM emp

–(6)员工试用期6个月,转正后月薪上调20% ,请查询出所有员工工作第一年的所有收
–入(需考虑奖金部分),要求显示格式为:XXX 的第一年总收入为 XXX 。
SELECT ename||’的第一年总收入为’||((sal+sal*(1+0.2))*6+NVL(comm,0)) FROM emp

–(7)查询员工表中一共有哪几种岗位类型。
SELECT DISTINCT job 岗位类型 FROM emp

–(8)分别选择员工表、部门表、薪资等级表中的所有数据。
SELECT * FROM emp
SELECT * FROM dept
SELECT * FROM salgrade

–(9)分别查看员工表、部门表、薪资等级表的表结构。在sqlplus或command Window中查询
DESC emp
DESC dept
SHOW COLUMNS FROM salgrade

–(10)查询职位为 SALESMAN 的员工编号、职位、入职日期。
SELECT empno 员工编号,job 职位,hiredate 入职时间 FROM emp
WHERE job=’SALESMAN’

–(11)查询1985年12月31日之前入职的 员工姓名及入职日期。
SELECT ename 员工姓名,hiredate 入职时间 FROM emp
WHERE hiredate<’31-12月-85’

–(12)查询部门编号不在10部门的 员工姓名、部门编号。
SELECT ename 员工姓名,deptno 部门编号 FROM emp
WHERE deptno NOT IN 10

–(13)查询入职日期在1982年至1985年的 员工姓名、入职日期。
SELECT ename 员工姓名,hiredate 入职日期 FROM emp
WHERE hiredate>’1-1月-82’ AND hiredate<’31-12月-85’

–(14)查询月薪在3000到5000的 员工姓名、月薪。
SELECT ename 员工姓名,sal 月薪 FROM emp
WHERE sal>=3000 AND sal<=5000

–(15)查询部门编号为10或者20的 员工姓名、部门编号。
SELECT ename 员工姓名,deptno 部门编号 FROM emp
WHERE deptno IN (10,20)

–(16)查询经理编号为7902 、7566 、7788的 员工姓名、经理编号。
SELECT ename 员工姓名,mgr 经理编号 FROM emp
WHERE mgr IN (7902,7566,7788)

–(17)查询员工姓名以W开头的员工姓名。
SELECT ename 员工姓名 FROM emp
WHERE ename LIKE ‘W%’

–(18)查询 员工姓名倒数第2个字符为 T 的 员工姓名。
SELECT ename 员工姓名 FROM emp
WHERE ename LIKE ‘%T_’

–(19)查询奖金为空的员工姓名、奖金。
SELECT ename 员工姓名,nvl(comm,0) 奖金 FROM emp
WHERE comm IS NULL

–(20)查询工资超过2000并且职位是MANAGER,或者职位是SALESMAN的员工姓
–名、职位、工资
SELECT ename 员工姓名,job 职位,sal 工资 FROM emp
WHERE (sal>2000 AND job=’MANAGER’) OR job=’SALESMAN’

–(21)查询工资超过2000并且职位是MANAGER或SALESMAN的员工姓名、职位、工资。
SELECT ename 员工姓名,job 职位,sal 工资 FROM emp
WHERE sal>2000 AND job IN (‘MANAGER’,’SALESMAN’)

–(22)查询部门在10或者20 ,并且工资在3000到5000之间的 员工姓名、部门、工资。
SELECT ename 员工姓名,deptno 部门,sal 工资 FROM emp
WHERE deptno IN (10,20) AND sal>=3000 AND sal<=5000

–(23)查询入职日期在1981年,并且职位不是 SALES开头的 员工姓名、入职日期、职位。
SELECT ename 员工姓名,hiredate 入职时间,job 职位 FROM emp
WHERE hiredate BETWEEN ‘1-1月-81’ AND ‘31-12月-81’ AND job NOT LIKE ‘SALES%’

–(24)查询职位为 SALESMAN或 MANAGER,部门编号为10或者20 ,姓名包含 A的
–员工姓名、职位、部门编号。
SELECT ename 员工姓名,job 职位,deptno 部门编号 FROM emp
WHERE (job IN (‘SALESMAN’,’MANAGER’)) AND (deptno IN (10,20)) AND (ename LIKE ‘%A%’)

–(25)查询部门在20或30的 员工姓名、部门编号,并按照工资升序排序。默认升序,desc降序
SELECT ename 员工姓名,deptno 部门编号 FROM emp
WHERE deptno IN (20,30)
ORDER BY sal

–(26)查询工资在2000~3000之间,部门不在10号的 员工姓名、部门编号、工资,并按照
–部门升序、工资降序排序。多个升降序条件中间用逗号隔开
SELECT ename 员工姓名,deptno 部门编号,sal 工资 FROM emp
ORDER BY deptno, sal DESC

–(27)查询入职日期在1982年至1983年之间,职位以 SALES或者 MAN开头的员工姓
–名、入职日期、职位,并按照入职日期降序排序。
SELECT ename 员工姓名,hiredate 入职日期,job 职位 FROM emp
WHERE (hiredate BETWEEN ‘1-1月-82’ AND ‘31-12月-83’) AND (job LIKE ‘SALES%’ OR job LIKE ‘MAN%’)
ORDER BY hiredate DESC

–(28)查询入职时间在1982-7-9之后,并且不从事SALESMAN工作的 员工姓名、入职时
–间、职位。
SELECT ename 员工姓名,hiredate 入职时间,job 职位 FROM emp
WHERE hiredate>’9-7月-82’ AND job NOT IN ‘SALESMAN’

–(29)查询 员工姓名的第三个字母是a的 员工姓名。
SELECT ename 员工姓名 FROM emp
WHERE ename LIKE ‘__a%’

–(30)查询除了10、20号部门以外的 员工姓名、部门编号。
SELECT ename 员工姓名,deptno 部门编号 FROM emp
WHERE deptno NOT IN (10,20)

–(31)查询部门号为30号员工的信息,先按工资降序排序,再按姓名升序排序。
SELECT * FROM emp WHERE deptno = 30
ORDER BY sal DESC,ename ASC

–(32)查询没有上级的员工(经理号为空)的 员工姓名。
SELECT ename 员工姓名 FROM emp
WHERE mgr IS NULL

–(33)查询工资大于等于4500并且部门为10或者20的员工的姓名、工资、部门编号。
SELECT ename 员工姓名,sal 工资,deptno 部门编号 FROM emp
WHERE sal>=4500 AND deptno IN (10,20)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值