• 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;  
  • 相关阅读:
    微信开发 提示 Redirect_uri(错误10003)
    Windows激活
    百度区块链的数字宠物狗——莱茨狗
    导出数据之CSV[PHP]
    Mongo安装与使用
    开发神器之phpstorm破解与日常使用
    php常用方法
    开发工具之Sublime编辑器
    文件搜索神器之everything
    docker之基本命令(1)
  • 原文地址:https://www.cnblogs.com/guanghe/p/6054098.html
Copyright © 2020-2023  润新知