SQL单表查询

[sql] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. --1,选择不猛30中的雇员  
  2. SELECT *  
  3. FROM EMP  
  4. WHERE DEPTNO = 30;  
  5.   
  6. --2,列出所有办事员的姓名,编号和部门  
  7. SELECT ENAME,EMPNO,DEPTNO   
  8. FROM EMP  
  9. WHERE JOB = 'CLERK';  
  10.   
  11. --3,找出佣金高于薪金的雇员  
  12. SELECT *  
  13. FROM EMP  
  14. WHERE NVL(COMM,0) > SAL;  
  15.   
  16. --4,找出佣金高出薪金的60%的雇员  
  17. SELECT *   
  18. FROM EMP   
  19. WHERE NVL(COMM,0) > SAL * 0.6;  
  20.   
  21. --5,找出部门10中所有经理和部门20中所有办事员的详细资料  
  22. SELECT *   
  23. FROM EMP  
  24. WHERE (DEPTNO = 10 AND JOB = 'MANAGER')  
  25. OR (DEPTNO = 20 AND JOB = 'CLERK');  
  26. --  
  27. SELECT *   
  28. FROM EMP   
  29. WHERE DEPTNO = 10  
  30. AND JOB = 'MANAGER'  
  31. UNION  
  32. SELECT *  
  33. FROM EMP  
  34. WHERE DEPTNO = 20  
  35. AND JOB = 'CLERK';    
  36.   
  37. --6,找出部门10中所有经理,部门20中所有办事员  
  38. --以及既不是经理又不是办事员但其薪金大于或等于2000  
  39. --的所有雇员的详细资料  
  40. SELECT *  
  41. FROM EMP  
  42. WHERE (DEPTNO = 10 AND JOB = 'MANAGER')  
  43. OR (DEPTNO = 20 AND JOB = 'CLERK')  
  44. OR (JOB NOT IN ('MANAGER','CLERK')   
  45. AND SAL >= 2000);  
  46. --  
  47. SELECT *   
  48. FROM EMP  
  49. WHERE DEPTNO = 10   
  50. AND JOB = 'MANAGER'  
  51. UNION  
  52. SELECT *  
  53. FROM EMP  
  54. WHERE DEPTNO = 20  
  55. AND JOB = 'CLERK'  
  56. UNION  
  57. SELECT *  
  58. FROM EMP  
  59. WHERE JOB != 'MANAGER'  
  60. AND JOB != 'CLERK'  
  61. AND SAL >= 2000;  
  62.   
  63. --7,找出收取佣金的员工的不同工作  
  64. SELECT DISTINCT JOB  
  65. FROM EMP  
  66. WHERE NVL(COMM,0) > 0;  
  67.   
  68. --8,找出不收取佣金或收取的佣金低于100的员工  
  69. SELECT *   
  70. FROM EMP  
  71. WHERE NVL(COMM,0) < 100  
  72. OR COMM IS NULL;  
  73.   
  74. --9,找出各月倒数第三天受雇的所有员工  
  75. SELECT *  
  76. FROM EMP  
  77. WHERE HIREDATE = LAST_DAY(HIREDATE) -2;  
  78.   
  79. --10,找出早于12年前受雇的员工  
  80. SELECT *  
  81. FROM EMP  
  82. WHERE HIREDATE < ADD_MONTHS(SYSDATE,-12*12);  
  83.   
  84. --11,以首字母大写的方式显示所有员工的姓名  
  85. SELECT INITCAP(ENAME) AS 姓名  
  86. FROM EMP;  
  87.   
  88. --12,显示正好为5个字符的员工的姓名  
  89. SELECT ENAME   
  90. FROM EMP  
  91. WHERE LENGTH(ENAME) = 5;  
  92. --  
  93. SELECT ENAME  
  94. FROM EMP  
  95. WHERE ENAME LIKE '_____';  
  96.   
  97. --13,显示不带‘R’的员工的姓名  
  98. SELECT ENAME   
  99. FROM EMP  
  100. WHERE ENAME NOT LIKE '%R%';   
  101.   
  102. --14,显示所有员工姓名的前三个字符  
  103. SELECT SUBSTR(ENAME,1,3) AS ENAME  
  104. FROM EMP;  
  105.   
  106. --15,显示所有员工的姓名,用a替换所有‘A’  
  107. SELECT REPLACE(ENAME,'A','a') AS ENAME  
  108. FROM EMP;  
  109. --  
  110. SELECT TRANSLATE(ENAME,'A','a') AS ENAME  
  111. FROM EMP;  
  112.   
  113. --16,显示满10年服务年限的员工的姓名和受雇日期  
  114. SELECT ENAME,HIREDATE  
  115. FROM EMP  
  116. WHERE MONTHS_BETWEEN(SYSDATE,HIREDATE) > 120;--!大时间写在后  
  117. --  
  118. SELECT ENAME,HIREDATE   
  119. FROM EMP  
  120. WHERE SYSDATE > ADD_MONTHS(HIREDATE,12 * 10);  
  121.   
  122. --17,显示员工的详细资料,按姓名排序  
  123. SELECT *   
  124. FROM EMP  
  125. ORDER BY ENAME;  
  126.   
  127. --18,显示员工的姓名和受雇日期,根据其服务年限,  
  128. --将最老的员工排在最前面  
  129. SELECT ENAME,HIREDATE  
  130. FROM EMP  
  131. ORDER BY HIREDATE;  
  132.   
  133. --19,显示所有员工的姓名、工作和薪金,按工作的  
  134. --降序排列,若工作相同则按薪金排序  
  135. SELECT ENAME,JOB,SAL  
  136. FROM EMP  
  137. ORDER BY JOB DESC,SAL;  
  138.   
  139. --20,显示所有员工的姓名、加入公司的年份和月份,  
  140. --按受雇日期所在月排序,若月份相同则将最早  
  141. --年份的员工排在最前面  
  142. SELECT ENAME,TO_CHAR(HIREDATE,'YYYY"年"MM"月"')  
  143. FROM EMP   
  144. ORDER BY TO_CHAR(HIREDATE,'MM'),TO_CHAR(HIREDATE,'YYYY')  
  145.   
  146. --21,显示在一个月为30天的情况所有员工的日薪金,  
  147. --忽略余数  
  148. SELECT ENAME,TRUNC(SAL/30)  
  149. FROM EMP;  
  150.   
  151. --22,找出在(任何年份的)2月受聘的所有员工  
  152. SELECT *   
  153. FROM EMP  
  154. WHERE TO_CHAR(HIREDATE,'MM') = '02';  
  155.   
  156. --23,对于每个员工,显示其加入公司的天数  
  157. SELECT ENAME,FLOOR(SYSDATE - HIREDATE)  
  158. FROM EMP;  
  159.   
  160. --24,显示姓名字段的任何位置包含‘A’的所有员工的姓名  
  161. SELECT *  
  162. FROM EMP  
  163. WHERE ENAME LIKE '%A%';  
  164.   
  165. --25,以年月日的方式显示所有员工的服务年限(大概)  
  166. SELECT EMPNO,ENAME,  
  167. (  
  168.        '在职'||TRUNC((MONTHS_BETWEEN(SYSDATE,HIREDATE)/12))||'年'||  
  169.        TRUNC(MOD((MONTHS_BETWEEN(SYSDATE,HIREDATE)),12))||'个月'||  
  170.        ROUND(SYSDATE-(ADD_MONTHS(HIREDATE,MONTHS_BETWEEN  
  171.        (SYSDATE,HIREDATE))))||'天'         
  172. )  
  173. FROM EMP;  
原文地址:https://www.cnblogs.com/guanghe/p/6054098.html