首页 > MySQL > 简单查询部分sql练习题
2015
06-04

简单查询部分sql练习题

简单查询部分sql练习题:

  1. — 选择部门30中的所有职工
  2. select * from emp where deptno = 30;
  3. — 列出所有业务员(CLERK)的姓名,编号,和部门编号
  4. select e.ename, e.empno, e.deptno from emp e where e.job = ‘CLERK’;
  5. — 找出奖金高于薪金的员工
  6. select * from emp where comm > sal;
  7. — 找出奖金高于薪金的60%的员工
  8. select * from emp where comm > sal * 0.6;
  9. — 找出部门10中所有经理(MANAGER)和部门20中所有业务员(CLERK)的详细资料
  10. select * from emp e
  11. where e.deptno = 10 and e.job = ‘MANAGER’
  12.     or e.deptno = 20 and e.job = ‘CLERK’;
  13. select * from emp e
  14. where (e.deptno = 10 and e.job = ‘MANAGER’)
  15.     or (e.deptno = 20 and e.job = ‘CLERK’);
  16. select * from emp e where e.deptno = 10 and e.job = ‘MANAGER’
  17. union
  18. select * from emp e where e.deptno = 20 and e.job = ‘CLERK’;
  19. — 找出部门10中所有经理(MANAGER),部门20中所有业务员(CLERK),既不是经理又不是业务员但其薪水大于等于2000的所有员工的详细资料
  20. select * from emp e where e.deptno = 10 and e.job = ‘MANAGER’
  21. union
  22. select * from emp e where e.deptno = 20 and e.job = ‘CLERK’
  23. union
  24. select * from emp e where e.sal > 2000 and e.job not in(‘MANAGER’‘CLERK’);
  25. — 找出收取奖金的员工的不同工作
  26. select distinct e.job from emp e;
  27. — 找出不收取奖金或收取的奖金低于100的员工
  28. select * from emp e where e.comm is null or e.comm < 100;
  29. — 找出各月倒数第3天受雇的所有员工
  30. select * from emp e where e.hiredate between last_day(hiredate)-3 and last_day(hiredate);
  31. — 找出早于30年前受雇的员工
  32. select * from emp e where (sysdate – e.hiredate)/365 > 30;
  33. — 以首字母大写的方式显示所有员工的姓名
  34. select initcap(ename) from emp;
  35. — 显示正好为5个字符的员工姓名
  36. select * from emp where length(ename) = 5;
  37. — 显示不带有”R”的员工姓名
  38. select * from emp where ename not like ‘%K%’;
  39. — 显示所有员工姓名的前三个字符
  40. select substr(ename, 0, 3) from emp;
  41. — 显示所有员工的姓名,并用’a’替换所有’A’
  42. select replace(ename, ‘A’‘a’from emp;
  43. — 显示满30年服务年限的员工姓名和受雇日期
  44. select * from emp where (sysdate – hiredate)/365 > 30;
  45. — 显示员工的详细资料,按姓名由大到小排序
  46. select * from emp order by ename desc;
  47. — 显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面
  48. select ename, hiredate from emp order by hiredate asc;
  49. — 显示所有员工的姓名,工作和薪金,按工作降序排列,若工作相同则按薪金升序排序
  50. select ename, job, sal from emp order by job desc, sal asc;
  51. select ename, job, sal from emp order by 2 desc, 3;
  52. — 显示所有员工的姓名,加入公司的年份和月份,按受雇日期所在的月排序,若月份相同,则将最早年份排在最前面
  53. select ename, to_number(to_char(hiredate, ‘yyyy’)) Year, to_number(to_char(hiredate, ‘mm’)) from emp order by 3 desc, 2 asc;
  54. — 显示一个月为30天的情况所员工的日薪金,忽略余数
  55. select round(sal/30) 日薪 from emp;
  56. — 找出在(任何年份)2月受聘的所有员工
  57. select * from emp where to_number(to_char(hiredate, ‘mm’))= 2;
  58. — 对每个员工,显示其加入公司的天数
  59. select ename, round(sysdate – hiredate) Days from emp;
  60. — 显示姓名中任意位置包含“A”的所有员工姓名
  61. select * from emp where upper(ename) like ‘%A%’;
  62. — 以年月日方式显示所有员工的服务年限
  63. select ename, hiredate,
  64. trunc(months_between(sysdate, hiredate) /12)  year  ,
  65. trunc(mod(months_between(sysdate, hiredate) ,  12 ) ) months  ,
  66. trunc(sysdate – add_months(hiredate,months_between(sysdate, hiredate))) day
  67. from emp ;

留下一个回复

你的email不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据