最新SQLServer基础查询练习附标准答案.docx
- 文档编号:14749303
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:18
- 大小:21.13KB
最新SQLServer基础查询练习附标准答案.docx
《最新SQLServer基础查询练习附标准答案.docx》由会员分享,可在线阅读,更多相关《最新SQLServer基础查询练习附标准答案.docx(18页珍藏版)》请在冰点文库上搜索。
最新SQLServer基础查询练习附标准答案
--创建数据库
USE[master]
GO
CREATEDATABASE[test]ONPRIMARY
(NAME=N'test',FILENAME=N'D:
\SQL\DataBase\test.mdf',SIZE=3072KB,MAXSIZE=UNLIMITED,FILEGROWTH=1024KB)
LOGON
(NAME=N'test_log',FILENAME=N'D:
\SQL\DataBase\test_log.ldf',SIZE=1024KB,MAXSIZE=2048GB,FILEGROWTH=10%)
GO
ALTERDATABASE[test]SETCOMPATIBILITY_LEVEL=90
GO
IF(1=FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC[test].[dbo].[sp_fulltext_database]@action='enable'
end
GO
ALTERDATABASE[test]SETANSI_NULL_DEFAULTOFF
GO
ALTERDATABASE[test]SETANSI_NULLSOFF
GO
ALTERDATABASE[test]SETANSI_PADDINGOFF
GO
ALTERDATABASE[test]SETANSI_WARNINGSOFF
GO
ALTERDATABASE[test]SETARITHABORTOFF
GO
ALTERDATABASE[test]SETAUTO_CLOSEOFF
GO
ALTERDATABASE[test]SETAUTO_CREATE_STATISTICSON
GO
ALTERDATABASE[test]SETAUTO_SHRINKOFF
GO
ALTERDATABASE[test]SETAUTO_UPDATE_STATISTICSON
GO
ALTERDATABASE[test]SETCURSOR_CLOSE_ON_COMMITOFF
GO
ALTERDATABASE[test]SETCURSOR_DEFAULTGLOBAL
GO
ALTERDATABASE[test]SETCONCAT_NULL_YIELDS_NULLOFF
GO
ALTERDATABASE[test]SETNUMERIC_ROUNDABORTOFF
GO
ALTERDATABASE[test]SETQUOTED_IDENTIFIEROFF
GO
ALTERDATABASE[test]SETRECURSIVE_TRIGGERSOFF
GO
ALTERDATABASE[test]SETDISABLE_BROKER
GO
ALTERDATABASE[test]SETAUTO_UPDATE_STATISTICS_ASYNCOFF
GO
ALTERDATABASE[test]SETDATE_CORRELATION_OPTIMIZATIONOFF
GO
ALTERDATABASE[test]SETTRUSTWORTHYOFF
GO
ALTERDATABASE[test]SETALLOW_SNAPSHOT_ISOLATIONOFF
GO
ALTERDATABASE[test]SETPARAMETERIZATIONSIMPLE
GO
ALTERDATABASE[test]SETREAD_COMMITTED_SNAPSHOTOFF
GO
ALTERDATABASE[test]SETREAD_WRITE
GO
ALTERDATABASE[test]SETRECOVERYSIMPLE
GO
ALTERDATABASE[test]SETMULTI_USER
GO
ALTERDATABASE[test]SETPAGE_VERIFYCHECKSUM
GO
ALTERDATABASE[test]SETDB_CHAININGOFF
GO
--创建表
USEtest
CREATETABLEemp
(
EMPNONUMERIC(5,0)NOTNULL,
ENAMENVARCHAR(10),
JOBNVARCHAR(9),
MGRNUMERIC(5,0),
HIREDATEDATETIME,
SALNUMERIC(7,2),
COMMNUMERIC(7,2),
DEPTNONUMERIC(2,0),
)
CREATETABLEdept
(
DEPTNONUMERIC
(2),
DNAMENVARCHAR(14),
LOCNVARCHAR(13),
)
--插入数据
INSERTINTOEMPVALUES
(7369,'SMITH','CLERK',7902,'2000-12-17',800,NULL,20);
INSERTINTOEMPVALUES
(7499,'allen','SALESMAN',7698,'2001-2-20',1600,300,30);
INSERTINTOEMPVALUES
(7521,'WARD','SALESMAN',7698,'2001-2-22',1250,500,30);
INSERTINTOEMPVALUES
(7566,'JONES','MANAGER',7839,'2001-4-2',2975,NULL,20);
INSERTINTOEMPVALUES
(7654,'MARTIN','SALESMAN',7698,'2001-9-28',1250,1400,30);
INSERTINTOEMPVALUES
(7698,'BLAKE','MANAGER',7839,'2001-5-1',2850,NULL,30);
INSERTINTOEMPVALUES
(7782,'CLARK','MANAGER',7839,'2001-6-9',2450,NULL,10);
INSERTINTOEMPVALUES
(7788,'scott','ANALYST',7566,'2002-12-9',3000,NULL,20);
INSERTINTOEMPVALUES
(7839,'king','PRESIDENT',NULL,'2001-11-17',5000,NULL,10);
INSERTINTOEMPVALUES
(7844,'TURNER','SALESMAN',7698,'2001-9-8',1500,0,30);
INSERTINTOEMPVALUES
(7876,'ADAMS','CLERK',7788,'2003-1-12',1100,NULL,20);
INSERTINTOEMPVALUES
(7900,'JAMES','CLERK',7698,'2001-3-12',950,NULL,30);
INSERTINTOEMPVALUES
(7902,'FORD','ANALYST',7566,'2001-3-12',3000,NULL,20);
INSERTINTOEMPVALUES
(7934,'MILLER','CLERK',7782,'2002-01-23',1300,NULL,10);
INSERTINTODEPTVALUES(10,'ACCOUNTING','NEWYORK');
INSERTINTODEPTVALUES(20,'RESEARCH','DALLAS');
INSERTINTODEPTVALUES(30,'SALES','CHICAGO');
INSERTINTODEPTVALUES(40,'OPERATIONS','BOSTON');
--1、查询所有的雇员
SELECT*
FROMemp
--2、查询所有的部门
SELECT*
FROMdept
--3、查询没有佣金(COMM)的所有雇员信息
SELECT*
FROMdbo.emp
WHERECOMMISNULL
--4、查询薪金(SAL)和佣金(COMM)总数大于2000的所有雇员信息
SELECT*
FROMemp
WHERE(sal+ISNULL(comm,0))>2000
--5、选择部门30中的雇员
SELECT*
FROMemp
WHEREdeptno=30
--6、列出所有办事员("CLERK")的姓名、编号和部门
SELECTename,
empno,
dname
FROMemp
JOINdeptONemp.deptno=dept.deptno
WHEREemp.job='CLERK'
--7、找出佣金高于薪金的雇员
SELECT*
FROMemp
WHEREcomm>sal
--8、找出佣金高于薪金60%的雇员
SELECT*
FROMemp
WHEREcomm>sal*0.6
--9、找出部门10中所有经理和部门20中的所有办事员的详细资料
SELECT*
FROMemp
WHERE(job='MANAGER'
ANDdeptno=10
)
OR(job='CLERK'
ANDdeptno=20
)
ORDERBYjob
--10、找出部门10中所有经理、部门20中所有办事员,
--既不是经理又不是办事员但其薪金>=2000的所有雇员的详细资料
SELECT*
FROMdbo.emp
WHERE(JOB='MANAGER'
ANDDEPTNO=10
)
OR(JOB='CLERK'
ANDDEPTNO=20
)
OR(JOBNOTIN('MANAGER','CLERK')
ANDSAL>=2000
)
ORDERBYJOB
--11、找出收取佣金的雇员的不同工作
SELECTDISTINCT
JOB
FROMdbo.emp
WHERECOMMISNOTNULL
--12、找出不收取佣金或收取的佣金低于100的雇员
SELECT*
FROMemp
WHEREISNULL(comm,0)<100
--13、找出早于12年之前受雇的雇员
SELECT*
FROMdbo.emp
WHEREYEAR(GETDATE())-YEAR(HIREDATE)>11
--14、显示首字母大写的所有雇员的姓名
SELECTename
FROMemp
WHEREASCII(ename)BETWEEN65AND90
--15、显示正好为5个字符的雇员姓名
SELECTename
FROMemp
WHERELEN(ename)=5
--16、显示带有'R'的雇员姓名
SELECTENAME
FROMdbo.emp
WHEREENAMELIKE'%R%''
--17、显示不带有'R'的雇员姓名
SELECTENAME
FROMdbo.emp
WHEREENAMENOTLIKE'%R%'
--18、显示包含"A"的所有雇员的姓名及"A"在姓名字段中的位置
SELECTENAME,
CHARINDEX('A',ENAME)A的位置
FROMdbo.emp
WHEREENAMELIKE'%A%'
--19、显示所有雇员的姓名,用a替换所有'A'
SELECTREPLACE(ename,'A','a')ENAME
FROMdbo.emp
--20、显示所有雇员的姓名的前三个字符
SELECTSUBSTRING(ename,1,3)ENAME
FROMdbo.emp
--21、显示雇员的详细资料,按姓名排序
SELECT*
FROMdbo.emp
ORDERBYENAME
--22、显示雇员姓名,根据其服务年限,将最老的雇员排在最前面
SELECTENAME
FROMdbo.emp
ORDERBYHIREDATE
--23、显示所有雇员的姓名、工作和薪金,按工作内的工作的降序顺序排序,
--而工作按薪金排序
SELECTename,
job,
sal
FROMemp
ORDERBYjobDESC,
Sal
--24、显示在一个月为30天的情况下所有雇员的日薪金,忽略小数
SELECTename名字,
CAST(sal/30ASNUMERIC)日薪
FROMdbo.emp
--25、找出在(任何年份的)2月受聘的所有雇员
SELECTename,
hiredate
FROMdbo.emp
WHEREMONTH(hiredate)=2
--26、对于每个雇员,显示其加入公司的天数
SELECTename姓名,
DATEDIFF(DAY,hiredate,GETDATE())天数
FROMdbo.emp
--27、列出至少有一个雇员的所有部门
SELECT*
FROMdbo.dept
WHEREDEPTNOIN(SELECTDEPTNO
FROMdbo.emp)
--28、列出各种类别工作的最低薪金
SELECTjob,
MIN(sal)minsal
FROMdbo.emp
GROUPBYjob
--29、列出各个部门的MANAGER(经理)的最低薪金
SELECTename,
dname,
MIN(sal)minsal
FROMdbo.emp,
dbo.dept
WHEREemp.deptno=dept.deptno
ANDjob='MANAGER'
GROUPBYdname,
ename
--30、列出薪金高于公司平均水平的所有雇员
SELECTename,
sal
FROMdbo.emp
WHEREsal>(SELECTAVG(sal)
FROMdbo.emp
)
--31、列出各种工作类别的最低薪金,并使最低薪金大于1500
SELECTjob,
MIN(sal)minsal
FROMdbo.emp
GROUPBYjob
HAVINGMIN(sal)>1500
--32、显示所有雇员的姓名和加入公司的年份和月份,
--按雇员受雇日所在月排序,将最早年份的项目排在最前面
SELECTename,
YEAR(hiredate)_year,
MONTH(hiredate)_month
FROMemp
ORDERBYhiredate
--33、显示所有雇员的姓名以及满10年服务年限的日期
SELECTename,
hiredate
FROMemp
WHEREDATEDIFF(YEAR,hiredate,GETDATE())>10
--34、显示所有雇员的服务年限:
总的年数或总的月数或总的天数
SELECTename,
DATEDIFF(YEAR,hiredate,GETDATE())_years,
DATEDIFF(MONTH,hiredate,GETDATE())_months,
DATEDIFF(DAY,hiredate,GETDATE())_days
FROMdbo.emp
--35、列出按计算的字段排序的所有雇员的年薪.
--即:
按照年薪对雇员进行排序,年薪指雇员每月的总收入总共12个月的累加
SELECTename,
CAST(sal+ISNULL(comm,0)ASNUMERIC)*12sal_year
FROMdbo.emp
ORDERBYsal_year
--36、列出年薪前名的雇员
SELECTTOP5
ename,
CAST(sal+ISNULL(comm,0)ASNUMERIC)*12sal_year
FROMdbo.emp
ORDERBYsal_yearDESC
--列出薪金水平处于第四位的雇员
--注意子查询一定要起别名
SELECT*
FROM(SELECTename,
sal,
rank()OVER(ORDERBYsalDESC)ASgrade
FROMemp
)ASa
WHEREa.grade=4
--37、列出年薪低于10000的雇员
SELECT*
FROMdbo.emp
WHERE(sal+ISNULL(comm,0))*12<10000
--38、列出雇员的平均月薪和平均年薪
SELECTCAST(SUM(sal+ISNULL(comm,0))/COUNT(ename)ASNUMERIC)平均月薪,
CAST(SUM((sal+ISNULL(comm,0))*12)/COUNT(ename)ASNUMERIC)平均年薪
FROMemp
--39、列出部门名称和这些部门的雇员,同时列出那些没有雇员的部门(重要)
SELECTdname,
ename
FROMdept
LEFTJOINempONemp.deptno=dept.deptno
ORDERBYdname
--列出那些没有雇员的部门
SELECTdname
FROMemp
RIGHTJOINdeptONemp.deptno=dept.deptno
WHEREemp.enameISNULL
--40、列出每个部门的信息以及该部门中雇员的数量(重要)
SELECTdept.*,
COUNT(emp.ENAME)人数
FROMdept
LEFTJOINdbo.empONdbo.dept.DEPTNO=dbo.emp.DEPTNO
GROUPBYdept.DNAME,dept.DEPTNO,dept.LOCORDERBYdbo.dept.DEPTNO
--41、列出薪金比"SMITH"多的所有雇员
SELECTemp.ename,
emp.sal
FROMemp
WHEREsal>(SELECTsal
FROMemp
WHEREename='smith'
)
--42、列出所有雇员的姓名及其直接上级的姓名
SELECTA.ENAME雇员,
B.ENAME直接上级
FROMdbo.empA
LEFTJOINdbo.empBONA.MGR=B.EMPNO
ORDERBYB.EMPNO
--43、列出入职日期早于其直接上级的所有雇员
SELECTename雇员,
hiredate雇员入职日期
FROMempe
WHEREhiredate<(SELECThiredate
FROMemp
WHEREempno=e.mgr
)
--44、列出所有办事员("CLERK")的姓名及其部门名称
SELECTename,
dname,
job
FROMempe
JOINdeptdONe.deptno=d.deptno
WHEREjob='CLERK'
--45、列出从事"SALES"(销售)工作的雇员的姓名,假定不知道销售部的部门编号
SELECTename
FROMemp
WHEREdeptno=(SELECTdeptno
FROMdept
WHEREdname='sales'
)
--46、列出与"SCOTT"从事相同工作的所有雇员
SELECTename,
job
FROMemp
WHEREjob=(SELECTjob
FROMemp
WHEREename='SCOTT'
)
--47、列出某些雇员的姓名和薪金,条件是他们的薪金等于部门中任何一个雇员的薪金
SELECTename,
sal,
deptno
FROMemp
WHEREsalIN(SELECTsal
FROMemp
WHEREdeptno=30)
--48、列出某些雇员的姓名和薪金,条件是他们的薪金高于部门中所有雇员的薪金
SELECTename,
sal,
deptno
FROMemp
WHEREsal>(SELECTMAX(sal)
FROMemp
WHEREdeptno=30
)
--49、列出从事同一种工作但属于不同部门的雇员的不同组合
SELECTa.ename雇员A,
在上海,随着轨道交通的发展,地铁商铺应运而生,并且在重要商圈已经形成一定的气候,投资经营地铁商铺逐渐为一大热门。
在人民广场地下的迪美购物中心,有一家DIY自制饰品店--“碧芝自制饰品店”b.ename雇员B,
(二)DIY手工艺品的“热卖化”a.job雇员A工作,
b.job雇员B工作,
图1-3大学生偏爱的手工艺品种类分布a.deptno雇员A部门,
“碧芝”最吸引人的是那些小巧的珠子、亮片等,都是平日里不常见的。
据店长梁小姐介绍,店内的饰珠有威尼斯印第安的玻璃珠、秘鲁的陶珠、奥地利的施华洛世奇水晶、法国的仿金片、日本的梦幻珠等,五彩缤纷,流光异彩。
按照饰珠的质地可分为玻璃、骨质、角质、陶制、水晶、仿金、木制等种类,其造型更是千姿百态:
珠型、圆柱型、动物造型、多边形、图腾形象等,美不胜收。
全部都是进口的,从几毛钱一个到几十元一个的珠子,做一个成品饰物大约需要几十元,当然,还要决定于你的心意尽管售价不菲,却仍没挡住喜欢它的人。
b.deptno雇员B部门
10、如果学校开设一家DIY手工艺制品店,你希望_____F
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 SQLServer 基础 查询 练习 标准答案