oracle-scott-练习题(1)
–1、选择部门30中的雇员
select from emp where deptno = 30;
–2、列出所有办事员的姓名、编号和部门
select ename,empno,dname from emp e inner join dept d on e.deptno = d.deptno
where job=upper(‘clerk’);
–3、找出佣金高于薪金的雇员
select ename,sal,comm from emp where sal < comm;
–4、找出佣金高于薪金60%的雇员
select ename,sal,comm from emp where sal0.6 < comm;
–5、找出部门10中所有经理和部门20中的所有办事员的详细资料
–upper(字段名):是将字段的内容转换成大写进行返回 注意:字段的数据类型必须是字符串类型
– upper(字符串):Upper(‘aabbcc’)返回的是‘AABBCC‘select from emp where (deptno = 10 and job =upper(‘manager’)) or (deptno = 20 and job = ‘clerk’);
select * from emp where (deptno=10 and job=upper(‘manager’)) or (deptno=20 and job=upper('clerk '));
–6、找出部门10中所有经理、部门20中所有办事员,既不是经理又不是办事员但其薪金>=2000的所有雇员的详细资料
select * from emp where (deptno=10 and job=upper(‘manager’)) or (deptno=20 and job=upper('clerk ‘))or(job<>upper(‘manager’) and job<>upper(‘clerk’) and sal>=2000);
–7、找出收取佣金的雇员的不同工作
select job,ename from emp where comm >0;
select distinct job from emp where comm>0;
–8、找出不收取佣金或收取的佣金低于100的雇员
–NVL(表达式1,表达式2)
–如果表达式1为空值,NVL返回值为表达式2的值,否则返回表达式1的值。
–该函数的目的是把一个空值(null)转换成一个实际的值。其表达式的值可以是数字型、字符型和日期型。
–但是表达式1和表达式2的数据类型必须为同一个类型。NVL(表达式1,表达式2)
select * from emp where comm BETWEEN 0 and 100;
select * from emp where nvl(comm,0)<100;
–找出各月最后一天受雇的所有雇员
select * from emp where hiredate = LAST_DAY(hiredate);
–10、找出早于25年之前受雇的雇员
select * from emp where months_between(sysdate,hiredate)/12>25;
–11、显示只有首字母大写的所有雇员的姓名
–.函数INITCAP()是将每个单词的第一个字母大写,其它字母变为小写返回.
select ename from emp where ename=initcap(ename);
–12、显示正好为6个字符的雇员姓名
select ename from emp where length(ename) = 6;
–13、显示不带有’R’的雇员姓名
select ename from emp where ename not like ‘%R%’;
Select ename from emp where instr(ename,‘R’)=0;
–14、显示所有雇员的姓名的前三个字符
select substr(ename,1,3) from emp;
–15、显示所有雇员的姓名,用a替换所有’A’
Select replace(ename,‘a’,‘A’) from emp;
–16、显示所有雇员的姓名以及满10年服务年限的日期
select ename ,add_months(hiredate,1210) from emp;
–17、显示雇员的详细资料,按姓名排序
select * from emp order by ename asc;
–18、显示雇员姓名,根据其服务年限,将最老的雇员排在最前面
select ename ,hiredate from emp order by hiredate asc;
– 19、显示所有雇员的姓名、工作和薪金,按工作的降序顺序排序,而工作相同时按薪金升序
select ename ,job ,(sal+nvl(comm,0)) salary from emp order by job desc, (sal+nvl(comm,0)) asc;
–20、显示所有雇员的姓名和加入公司的年份和月份,按雇员受雇日所在月排序,将最早年份的项目排在最前面
select ename,to_char(hiredate,‘yyyy’),to_char(hiredate,‘mm’) from emp order by hiredate asc;
–21、显示在一个月为30天的情况下所有雇员的日薪金
select ename,sal/30 from emp;
– 22、找出在(任何年份的)2月受聘的所有雇员
select *from emp where to_char(hiredate,‘mm’)= 2;
–23、对于每个雇员,显示其加入公司的天数
select ename , sysdate-hiredate from emp;
–24、显示姓名字段的任何位置,包含 “A” 的所有雇员的姓名
select ename from emp where instr(ename,‘A’)>0;
select ename from emp where ename like ‘%A%’;
–25、以年、月和日显示所有雇员的服务年限
Select months_between(sysdate,hiredate)/12, months_between(sysdate,hiredate) , sysdate-hiredate as from emp;
————————————————
版权声明:本文为CSDN博主「愤怒的阿木木」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_44364267/article/details/115980011
本文来自博客园,作者:xiaoyongdata(微信号:xiaoyongdata),转载请注明原文链接:https://www.cnblogs.com/xiaoyongdata/p/16147468.html