您好,欢迎访问三七文档
当前位置:首页 > 中学教育 > 高中教育 > sqlserver练习答案
Chinese_PRC_CS_AS字段的数据区分大小写Chinese_PRC_CI_AS字段的数据不区分大小写usepubscreatetableemp(--员工表empnointprimarykey,--工号enamevarchar(20),--姓名jobvarchar(20)COLLATEChinese_PRC_CS_AS,--工作mgrint,--上级编号hiredatedatetime,--参加工作时间saldecimal(7,2),--薪金commdecimal(7,2),--佣金deptnoint--所在部门编号)goinsertintoempvalues(7369,'SMITH','CLERK',7902,'12/17/1980',800,null,20)insertintoempvalues(7499,'ALLEN','SALESMAN',7698,'02/20/1981',1600,300,30)insertintoempvalues(7521,'WARD','SALESMAN',7698,'02/22/1981',1250,500,30)insertintoempvalues(7566,'JONES','MANAGER',7839,'04/02/1981',2975,null,20)insertintoempvalues(7654,'MARTIN','SALESMAN',7698,'09/28/1981',1250,1400,30)insertintoempvalues(7698,'BLAKE','MANAGER',7839,'05/01/1981',2850,null,30)insertintoempvalues(7782,'CLARK','MANAGER',7839,'06/09/1981',2450,null,10)insertintoempvalues(7788,'SCOTT','ANALYST',7566,'04/19/1987',3000,null,20)insertintoempvalues(7839,'KING','PRESIDENT',null,'11/17/1981',5000,null,10)insertintoempvalues(7844,'TURNER','SALESMAN',7698,'09/08/1981',1500,0,30)insertintoempvalues(7876,'ADAMS','CLERK',7788,'05/23/1987',1100,null,20)insertintoempvalues(7900,'JAMES','CLERK',7698,'12/03/1981',950,null,30)insertintoempvalues(7902,'FORD','ANALYST',7566,'12/03/1981',3000,null,20)insertintoempvalues(7934,'MILLER','CLERK',7782,'01/23/1982',1300,null,10)go在SQLSERVER查询分析器中完成以下查询语句:1.选择部门30中的所有员工.select*fromempwheredeptno=302.列出所有办事员(CLERK)的姓名,编号和部门编号.selectename,empno,deptnofromempwherejob='CLERK'3.找出佣金高于薪金的员工.select*fromempwherecommsal4.找出佣金高于薪金的60%的员工.select*fromempwherecommsal*0.65.找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料.select*fromempwhere(deptno=10andjob='MANAGER')or(deptno=20andjob='CLERK')6.找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详细资料.select*fromempwhere(deptno=10andjob='MANAGER')or(deptno=20andjob='CLERK')or(jobnotin('MANAGER','CLERK')andsal=2000)7.找出收取佣金的员工的不同工作.selectdistinctjobfromempwherecomm08.找出不收取佣金或收取的佣金低于100的员工.select*fromempwherecommisnullorcomm100或者select*fromempwhereisnull(comm,0)100isnull的作用和ORacle中的nvl是一样的9.找出各月倒数第3天受雇的所有员工.dateadd(year,5,'12/10/1980')在向指定日期加上一段时间的基础上,返回新的datetime值datename()返回代表指定日期的指定日期部分的字符串datename(year,'12/10/1990')select*fromempwherehiredate=dateadd(day,-3,datename(year,dateadd(month,1,hiredate))+datename(month,dateadd(month,1,hiredate))+'01')10.找出早于12年前受雇的员工.datediff()日期之间的时间间隔selectename,hiredate,getdate()fromempwheredatediff(year,hiredate,getdate())12注意:计算的方向是getdate()-hiredate11.以首字母大写的方式显示所有员工的姓名.selectename,substring(upper(ename),1,1)+substring(lower(ename),2,len(ename)-1)fromemp12.显示正好为5个字符的员工的姓名.select*fromempwherelen(ename)=5orselect*fromempwhereenamelike'_____'13.显示不带有R的员工的姓名.selectenamefromempwhereenamenotlike'%R%'14.显示所有员工姓名的前三个字符.selectename,substring(ename,1,3)fromempselectename,left(ename,3)fromempselectename,right(ename,3)fromemp15.显示所有员工的姓名,用a替换所有Aselectename,replace(ename,'A','a')fromemp;16.显示满10年服务年限的员工的姓名和受雇日期.selectename,hiredatefromempwheredatediff(year,hiredate,getdate())1017.显示员工的详细资料,按姓名排序.select*fromemporderbyename18.显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面.selectename,hiredatefromemporderbyhiredate19.显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同则按薪金排序.selectename,job,salfromemporderbyjobdesc,sal20.显示所有员工的姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同则将最早年份的员工排在最前面.selectename,year(hiredate),month(hiredate)fromemporderbymonth(hiredate),year(hiredate)21.显示在一个月为30天的情况所有员工的日薪金,忽略余数.selectfloor(sal/30)fromemp22.找出在(任何年份的)2月受聘的所有员工。select*fromempwheremonth(hiredate)=2;23.对于每个员工,显示其加入公司的天数.selectename,hiredate,datediff(day,hiredate,getdate())as天数fromemp24.显示姓名字段的任何位置包含A的所有员工的姓名.selectenamefromempwhereenamelike'%A%';
本文标题:sqlserver练习答案
链接地址:https://www.777doc.com/doc-4620909 .html