常用SQl 查询语句

 
  1. 1 找出佣金高于薪金60%的雇员。   
  2. SELECT * FROM emp WHERE comm>sal*0.6;   
  3.   
  4. 2 找出部门10中所有经理和部门20中所有办事员的详细资料。   
  5. SELECT * FROM emp   
  6. WHERE deptno=10 AND JOB='MANAGER' OR deptno=20 AND job='CLERK';   
  7.   
  8. 3 找出部门10中所有经理,部门20中所有办事员以及既不是经理又不是办事员但其薪金大于或等2000的所有雇员的详细资料。   
  9. SELECT * FROM emp   
  10. WHERE deptno=10 AND JOB='MANAGER' OR deptno=20 AND job='CLERK' OR JOB NOT IN('MANAGER','CLERK') AND SAL>=2000;    
  11. SELECT * FROM emp   
  12. WHERE deptno=10 AND JOB='MANAGER' OR deptno=20 AND job='CLERK' OR (JOB<>'MANAGER' AND JOB<>'MANAGER' AND SAL>=2000);    
  13.   
  14. 4 找出收取佣金的雇员的不同工作。   
  15. SELECT DISTINCT JOB FROM EMP WHERE COMM IS NOT NULL;   
  16.   
  17. 5 找出不收取佣金或收取的佣金低于300的雇员。   
  18. SELECT * FROM EMP WHERE COMM IS NULL OR COMM<300;   
  19.   
  20. 6 找出各月最后一天受雇的所有雇员。   
  21. SELECT * FROM EMP WHERE HIREDATE=LAST_DAY(HIREDATE);   
  22. --找出各月最后受雇的所有雇员   
  23. SELECT * FROM emp WHERE hiredate IN   
  24. (SELECT maxh FROM   
  25. (SELECT MAX(HIREDATE) AS maxh,EXTRACT(MONTH FROM hiredate)   
  26. FROM EMP   
  27. GROUP BY EXTRACT(MONTH FROM hiredate)));   
  28.   
  29. 7 找出晚于26年之前受雇的雇员。   
  30. SELECT * FROM emp WHERE months_between(SYSDATE,hiredate)<=26*12;   
  31.   
  32. 8 显示只有首字母大写的的所有雇员的姓名。   
  33. SELECT * FROM emp WHERE ename=initcap(ename);   
  34.   
  35. 9 显示正好为5个字符的雇员的姓名。   
  36. SELECT * FROM emp WHERE length(ename)=5;   
  37.   
  38. 10显示不带有“R”的雇员姓名。   
  39. SELECT * FROM emp WHERE instr(ename,'R')=0;   
  40. SELECT * FROM emp WHERE ename NOT LIKE '%R%';   
  41.   
  42. 11显示所有雇员的姓名的前三个字符。   
  43. SELECT substr(ename,1,3) AS en3 FROM emp;   
  44.   
  45. 12显所有雇员的姓名,用a替换所有“A”。   
  46. SELECT REPLACE(ename,'A','a') FROM emp;   
  47.   
  48. 13显示所有雇员的姓名以及满10年服务年限的日期。   
  49. SELECT ENAME,HIREDATE,ADD_MONTHS(HIREDATE,120) AS H_10Y FROM EMP;   
  50.   
  51. 14显示雇员的详细资料,按姓名排序。   
  52. SELECT * FROM EMP ORDER BY ENAME;   
  53.   
  54. 15显示雇员姓名,根据其服务年限,将最老的雇员排在最前面。   
  55. SELECT ENAME,HIREDATE FROM EMP ORDER BY HIREDATE;   
  56.   
  57. 16显示所有雇员的姓名、工作和薪金,按工作内的工作的降序顺序顺序排序,而工作按薪金排序。   
  58. SELECT ENAME,JOB,SAL   
  59. FROM EMP   
  60. ORDER BY JOB DESC,SAL;   
  61.   
  62. 17显示所有雇员的姓名和加入公司的年份和月份,按雇员受雇日所在月排序,并将最早年份的项目排在最前面。   
  63. SELECT ENAME,TO_CHAR(HIREDATE,'YYYY-MM') AS Y_M   
  64. FROM EMP   
  65. ORDER BY TO_CHAR(HIREDATE,'MM'),TO_CHAR(HIREDATE,'YYYY');   
  66.   
  67. 18显示在一个月为30天的情况下所有雇员的日薪金,取整。   
  68. SELECT ROUND(SAL/30) AS SAL FROM EMP;   
  69.   
  70. 19找出在(任何年份的)2月受聘的所有雇员。   
  71. SELECT * FROM EMP WHERE TO_CHAR(HIREDATE,'MM')='02';   
  72.   
  73. 20对于每个雇员,显示其加入公司的天数。   
  74. SELECT CEIL(SYSDATE-HIREDATE) AS DY FROM EMP;   
  75.   
  76. 21显示姓名字段的任何位置,包含“A”的所有雇员的姓名。   
  77. SELECT ENAME FROM EMP WHERE ENAME LIKE '%A%';   
  78. SELECT ENAME FROM EMP WHERE INSTR(ENAME,'A')>0;   
  79.   
  80. 22以年、月和日显示所有雇员的服务年限。   
  81. SELECT HIREDATE,   
  82.   FLOOR(MONTHS_BETWEEN(SYSDATE,HIREDATE)/12) AS Y,   
  83.   MOD(FLOOR(MONTHS_BETWEEN(SYSDATE,HIREDATE)),12) AS M,   
  84.   MOD(FLOOR(SYSDATE-HIREDATE),30) AS D   
  85. FROM EMP;   
  86.   
  87. 23列出至少有一个雇员的所有部门。   
  88. SELECT * FROM DEPT WHERE DEPTNO IN (SELECT DISTINCT DEPTNO FROM EMP);   
  89.   
  90. 24列出薪金比“SMITH”多的所有雇员。   
  91. SELECT * FROM EMP WHERE SAL>(SELECT SAL FROM EMP WHERE ENAME='SMITH');   
  92.   
  93. 25列出所有雇员的姓名及其上级的姓名。   
  94. SELECT ygb.ename AS empnm,sjb.ename AS mgrnm   
  95. FROM emp ygb,emp sjb   
  96. WHERE ygb.mgr=sjb.empno;   
  97.   
  98. 26列出入职日期早于其直接上级的所有雇员。   
  99. SELECT * FROM emp ygb WHERE hiredate<(SELECT hiredate FROM emp sjb WHERE sjb.empno=ygb.mgr);   
  100.   
  101. 27列出部门和这些部门的雇员,同时列出那些没有雇员的部门。   
  102. /*  
  103. SELECT * FROM dept WHERE deptno IN (SELECT DISTINCT deptno FROM emp)  
  104. UNION  
  105. SELECT * FROM dept WHERE deptno NOT IN (SELECT DISTINCT deptno FROM emp)  
  106. */  
  107. SELECT dname,ename   
  108. FROM dept a LEFT JOIN emp b   
  109. ON a.deptno=b.deptno;   
  110.   
  111. 28列出所有“CLERK”(办事员)的姓名及其部门名称。   
  112. SELECT ename,dname   
  113. FROM dept a,emp b   
  114. WHERE a.deptno=b.deptno AND job='CLERK';   
  115.   
  116. 29列出各种类型的最低薪金,并使最低薪金大于1500。   
  117. SELECT job,MIN(sal)   
  118. FROM emp   
  119. GROUP BY job   
  120. HAVING MIN(sal)>1500;   
  121.   
  122. 30列出从事“SALES”(销售)工作的雇员的姓名,假定不知道销售部的部门编号。   
  123. SELECT ename FROM emp WHERE deptno=(SELECT deptno FROM dept WHERE dname='SALES');   
  124.   
  125. 31列出薪金高于公司平均水平的所有雇员。   
  126. SELECT * FROM EMP WHERE SAL>(SELECT AVG(SAL) FROM EMP);   
  127.   
  128. 32列出与“SCOTT”从事相同工作的所有雇员。   
  129. SELECT * FROM EMP WHERE JOB=(SELECT JOB FROM EMP WHERE ENAME='SCOTT') AND ENAME<>'SCOTT';   
  130.   
  131. 33列出薪金等于在部门30工作的所有雇员的姓名和薪金。   
  132. SELECT * FROM EMP WHERE SAL IN(SELECT SAL FROM EMP WHERE DEPTNO=30);   
  133.   
  134. 34列出薪金高于在部门30工作的所有雇员的姓名和薪金。   
  135. SELECT * FROM EMP WHERE SAL >ALL(SELECT SAL FROM EMP WHERE DEPTNO=30);   
  136.   
  137. 35列出在每个部门工作的雇员的经理以及其他信息。   
  138. SELECT A.*,B.*   
  139. FROM DEPT A,EMP B   
  140. WHERE A.DEPTNO=B.DEPTNO AND JOB='MANAGER';   
  141. /*  
  142. SELECT A.*,B.*  
  143. FROM (SELECT * FROM EMP WHERE JOB<>'MANAGER') A,(SELECT * FROM EMP WHERE JOB='MANAGER') B  
  144. WHERE A.DEPTNO=B.DEPTNO AND B.JOB='MANAGER'  
  145. ORDER BY A.DEPTNO;  
  146. */  
  147.   
  148. 36列出所有雇员的雇员名称、部门名称和薪金。   
  149. SELECT ENAME,DNAME,SAL   
  150. FROM DEPT A,EMP B   
  151. WHERE A.DEPTNO=B.DEPTNO;   
  152.   
  153. 37列出从事同一种工作但属于不同部门的雇员的不同组合。   
  154. SELECT * FROM emp ORDER BY job,deptno;   
  155.   
  156. 38列出分配有雇员数量的所有部门的详细信息,即使是分配有0个雇员。   
  157. SELECT * FROM dept WHERE deptno IN (SELECT DISTINCT deptno FROM emp)   
  158. UNION   
  159. SELECT * FROM dept WHERE deptno NOT IN (SELECT DISTINCT deptno FROM emp)   
  160.   
  161. 39列出各种类型工作的最低工资。   
  162. SELECT job,MIN(sal)   
  163. FROM emp   
  164. GROUP BY job;   
  165.   
  166. 40列出各个部门的MANAGER(经理)的最低薪金。   
  167. SELECT MIN(sal) FROM emp WHERE job='MANAGER';   
  168.   
  169. 41列出按年薪排序的所有雇员的年薪。   
  170. SELECT sal*12 AS y_sal FROM emp ORDER BY sal*12;   
  171.   
  172. 42列出薪金水平处于第四位的雇员。   
  173. SELECT * FROM   
  174.   (SELECT a.*,row_number() over(ORDER BY sal DESC) AS rn FROM emp a)   
  175. WHERE rn=4;   
  176.   
  177. 43查找EMP表中前5条记录   
  178. SELECT * FROM emp WHERE ROWNUM<=5;   
  179.   
  180. 44查找EMP表中10条以后的记录   
  181. SELECT * FROM (SELECT a.*,ROWNUM AS rn FROM emp a) WHERE rn>10;   
  182.   
  183. 45查找EMP表中薪水第5高的员工   
  184. SELECT * FROM   
  185.   (SELECT a.*,row_number() over(ORDER BY sal DESC) AS rn FROM emp a)   
  186. WHERE rn=5;   
  187.   
  188. 46查找EMP表部门30中薪水第3的员工   
  189. SELECT * FROM   
  190.   (SELECT a.*,row_number() over(PARTITION BY deptno ORDER BY sal DESC) AS rn FROM emp a)   
  191. WHERE rn=5 AND deptno=30;   
  192.   
  193. 47查找EMP表中每部门薪水第3的员工   
  194. SELECT * FROM   
  195.   (SELECT a.*,row_number() over(PARTITION BY deptno ORDER BY sal DESC) AS rn FROM emp a)   
  196. WHERE rn=3;   
  197.   
  198. 48统计各部门的薪水总和.   
  199. SELECT deptno,SUM(sal) AS sumsal   
  200. FROM emp   
  201. GROUP BY deptno;   
  202.   
  203. --每个部门员工和经理的详细信息:编号,姓名,薪水,入职日期,部门编号   
  204. SELECT a.empno AS eno,a.ename AS enm,a.job AS ejob,a.sal AS esal,a.hiredate AS edate,a.deptno AS edept,   
  205.        b.empno AS mno,b.ename AS mnm,b.job AS mjob,b.sal AS msal,b.hiredate AS mdate,b.deptno AS mdept   
  206. FROM (SELECT * FROM emp WHERE job<>'MANAGER' AND job<>'PRESIDENT') a,(SELECT * FROM emp WHERE job='MANAGER') b   
  207. WHERE a.deptno=b.deptno;  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
第一部分、 基础 1、创建数据库 2、删除数据库 3、备份sql server 4、创建新表 5、删除新表 6、增加一个列 7、添加和删除主键 8、索引 9、视图 10、几个简单的基本的sql语句 11、几个高级查询运算词 12、使用外连接 13、分组:Group by: 14、对数据库进行操作: 15.如何修改数据库的名称: 第二部分、 提升 1、复制表 2、拷贝表 3、跨数据库之间表的拷贝 4、子查询 5、显示文章、提交人和最后回复时间 6、外连接查询 7、在线视图查询 8、between的用法 9、in 的使用方法 10、两张关联表,删除主表已经在副表没有的信息 11、四表联查问题 12、日程安排提前五分钟提醒 13、一条sql 语句搞定数据库分页 14、前10条记录 15、选择每组的最大数 第三部分、 技巧 1、True/False的使用 2、收缩数据库 3、压缩数据库 dbcc shrinkdatabase(dbname) 4、转移数据库给新用户以已存在用户权限 5、检查备份集 6、修复数据库 7、日志清除 8、更改某个表 9、存储更改全部表 10、SQL SERVER直接循环写入数据 数据开发-经典 1.按姓氏笔画排序 2.数据库加密 3.取回表字段 4.查看硬盘分区 5.比较A,B表是否相等 6.杀掉所有的事件探察器进程 7.记录搜索: 9:获取当前数据库的所有用户表 10:获取某一个表的所有字段 11:查看与某一个表相关的视图、存储过程、函数 12:查看当前数据库所有存储过程 13:查询用户创建的所有数据库 14:查询某一个表的字段和数据类型 15:不同服务器数据库之间的数据操作 SQL Server基本函数 SQLServer2000同步复制技术实现步骤 一、 预备工作 二、 正式配置

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值