SQLServer基础查询练习附答案.docx

上传人:b****1 文档编号:3278280 上传时间:2023-05-05 格式:DOCX 页数:19 大小:45.25KB
下载 相关 举报
SQLServer基础查询练习附答案.docx_第1页
第1页 / 共19页
SQLServer基础查询练习附答案.docx_第2页
第2页 / 共19页
SQLServer基础查询练习附答案.docx_第3页
第3页 / 共19页
SQLServer基础查询练习附答案.docx_第4页
第4页 / 共19页
SQLServer基础查询练习附答案.docx_第5页
第5页 / 共19页
SQLServer基础查询练习附答案.docx_第6页
第6页 / 共19页
SQLServer基础查询练习附答案.docx_第7页
第7页 / 共19页
SQLServer基础查询练习附答案.docx_第8页
第8页 / 共19页
SQLServer基础查询练习附答案.docx_第9页
第9页 / 共19页
SQLServer基础查询练习附答案.docx_第10页
第10页 / 共19页
SQLServer基础查询练习附答案.docx_第11页
第11页 / 共19页
SQLServer基础查询练习附答案.docx_第12页
第12页 / 共19页
SQLServer基础查询练习附答案.docx_第13页
第13页 / 共19页
SQLServer基础查询练习附答案.docx_第14页
第14页 / 共19页
SQLServer基础查询练习附答案.docx_第15页
第15页 / 共19页
SQLServer基础查询练习附答案.docx_第16页
第16页 / 共19页
SQLServer基础查询练习附答案.docx_第17页
第17页 / 共19页
SQLServer基础查询练习附答案.docx_第18页
第18页 / 共19页
SQLServer基础查询练习附答案.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

SQLServer基础查询练习附答案.docx

《SQLServer基础查询练习附答案.docx》由会员分享,可在线阅读,更多相关《SQLServer基础查询练习附答案.docx(19页珍藏版)》请在冰点文库上搜索。

SQLServer基础查询练习附答案.docx

SQLServer基础查询练习附答案

创建数据库

USE[master]

GO

CREATEDATABASE[test]ONPRIMARY

(NAME=N'test',FILENAME=N'D:

\SQL\DataBase\test.mdf',SIZE=3072KB,MAXSIZE=UNLIMITED,FILEGROWTH=1024KB)

LOGON

SIZE=

(NAME=N'test_log',FILENAME=N'D:

\SQL\DataBase\test_log.ldf'

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]

GO

SETANSI_NULL_DEFAULTOFF

ALTERDATABASE[test]

GO

SETANSI_NULLSOFF

ALTERDATABASE[test]

GO

SETANSI_PADDINGOFF

ALTERDATABASE[test]

GO

SETANSI_WARNINGSOFF

ALTERDATABASE[test]

GO

SETARITHABORTOFF

ALTERDATABASE[test]

GO

SETAUTO_CLOSEOFF

ALTERDATABASE[test]

GO

SETAUTO_CREATE_STATISTICSON

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]

GO

SETRECOVERYSIMPLE

ALTERDATABASE[test]

GO

SETMULTI_USER

ALTERDATABASE[test]

GO

SETPAGE_VERIFYCHECKSUM

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',

INSERTINTOEMPVALUES

7902

'2000-12-17'

800,NULL,

20)。

(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'INSERTINTOEMPVALUES

7698

'2001-9-28'

1250,1400,

30)

(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)

--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')ENAMEFROMdbo.emp

--20、显示所有雇员的姓名的前三个字符

SELECTSUBSTRING(ename,1,3)ENAMEFROMdbo.emp

--21、显示雇员的详细资料,按姓名排序

SELECT*FROMdbo.emp

ORDERBYENAME

--22、显示雇员姓名,根据其服务年限,将最老的雇员排在最前面SELECTENAME

FROMdbo.empORDERBYHIREDATE

--23、显示所有雇员的姓名、工作和薪金,按工作内的工作的降序顺序排序,--而工作按薪金排序

SELECTename,

job,

sal

FROMemp

ORDERBYjobDESC,

Sal

--24、显示在一个月为30天的情况下所有雇员的日薪金,忽略小数SELECTename名字,

CAST(sal/30ASNUMERIC)日薪FROMdbo.emp

--25、找出在(任何年份的)2月受聘的所有雇员SELECTename,

hiredateFROMdbo.emp

WHEREMONTH(hiredate)=2

--26、对于每个雇员,显示其加入公司的天数

SELECTename姓名,DATEDIFF(DAY,hiredate,GETDATE())天数FROMdbo.emp

--27、列出至少有一个雇员的所有部门

SELECT*

FROMdbo.dept

WHEREDEPTNOIN(SELECTDEPTNO

FROMdbo.emp)

--28、列出各种类别工作的最低薪金

SELECTjob,MIN(sal)minsalFROMdbo.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

1500

--31、列岀各种工作类别的最低薪金,并使最低薪金大于

SELECTjob,MIN(sal)minsalFROMdbo.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,

FROMdbo.emp--35、列出按计算的字段排序的所有雇员的年薪.

12个月的累加

--即:

按照年薪对雇员进行排序,年薪指雇员每月的总收入总共SELECTename,

CAST(sal+ISNULL(comm,0)ASNUMERIC)*12sal_yearFROMdbo.emp

ORDERBYsal_year

--36、列出年薪前名的雇员

SELECTTOP5ename,

CAST(sal+ISNULL(comm,0)ASNUMERIC)*12sal_yearFROMdbo.emp

ORDERBYsal_yearDESC

--列出薪金水平处于第四位的雇员

--注意子查询一定要起别名

SELECT*

FROM(SELECTename,

sal,

rank()OVER(ORDERBYsalDESC)ASgradeFROMemp

)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

--列出那些没有雇员的部门

SELECTdnameFROMemp

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,

b.ename雇员B,

a.job雇员A工作,

b.job雇员B工作,

a.deptno雇员A部门,

b.deptno雇员B部门

FROMempa

JOINempbONa.job=b.jobWHEREa.deptno!

=b.deptno

ANDa.job=b.job

ORDERBYa.job

--50、列出所有雇员的雇员名称、部门名称和薪金(包括没有雇员的部门)SELECTdbo.dept.DNAME,

dbo.emp.ENAME,

dbo.emp.SAL

FROMdbo.emp

RIGHTJOINdbo.deptONdbo.dept.DEPTNO=dbo.emp.DEPTNO

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 考试认证 > 从业资格考试

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2