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

上传人:b****9 文档编号:26055391 上传时间:2023-06-17 格式:DOCX 页数:18 大小:19.57KB
下载 相关 举报
SQLServer基础查询练习附答案.docx_第1页
第1页 / 共18页
SQLServer基础查询练习附答案.docx_第2页
第2页 / 共18页
SQLServer基础查询练习附答案.docx_第3页
第3页 / 共18页
SQLServer基础查询练习附答案.docx_第4页
第4页 / 共18页
SQLServer基础查询练习附答案.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

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

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

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

(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,'-12-17',800,NULL,20);

INSERTINTOEMPVALUES

(7499,'allen','SALESMAN',7698,'-2-20',1600,300,30);

INSERTINTOEMPVALUES

(7521,'WARD','SALESMAN',7698,'-2-22',1250,500,30);

INSERTINTOEMPVALUES

(7566,'JONES','MANAGER',7839,'-4-2',2975,NULL,20);

INSERTINTOEMPVALUES

(7654,'MARTIN','SALESMAN',7698,'-9-28',1250,1400,30);

INSERTINTOEMPVALUES

(7698,'BLAKE','MANAGER',7839,'-5-1',2850,NULL,30);

INSERTINTOEMPVALUES

(7782,'CLARK','MANAGER',7839,'-6-9',2450,NULL,10);

INSERTINTOEMPVALUES

(7788,'scott','ANALYST',7566,'-12-9',3000,NULL,20);

INSERTINTOEMPVALUES

(7839,'king','PRESIDENT',NULL,'-11-17',5000,NULL,10);

INSERTINTOEMPVALUES

(7844,'TURNER','SALESMAN',7698,'-9-8',1500,0,30);

INSERTINTOEMPVALUES

(7876,'ADAMS','CLERK',7788,'-1-12',1100,NULL,20);

INSERTINTOEMPVALUES

(7900,'JAMES','CLERK',7698,'-3-12',950,NULL,30);

INSERTINTOEMPVALUES

(7902,'FORD','ANALYST',7566,'-3-12',3000,NULL,20);

INSERTINTOEMPVALUES

(7934,'MILLER','CLERK',7782,'-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)总数不不大于所有雇员信息

SELECT*

FROMemp

WHERE(sal+ISNULL(comm,0))>

--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中所有办事员,

--既不是经理又不是办事员但其薪金>=所有雇员详细资料

SELECT*

FROMdbo.emp

WHERE(JOB='MANAGER'

ANDDEPTNO=10

OR(JOB='CLERK'

ANDDEPTNO=20

OR(JOBNOTIN('MANAGER','CLERK')

ANDSAL>=

ORDERBYJOB

--11、找出收取佣金雇员不同工作

SELECTDISTINCT

JOB

FROMdbo.emp

WHERECOMMISNOTNULL

--12、找出不收取佣金或收取佣金低于100雇员

SELECT*

FROMemp

WHEREISNULL(comm,0)<100

--13、找出早于之前受雇雇员

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、显示所有雇员姓名以及满服务年限日期

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,

b.ename雇员B,

a.job雇员A工作,

b.job雇员B工作,

a.deptno雇员A部门,

b.deptno雇员B部门

FROMempa

JOINempbONa.job=b.job

WHEREa.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-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1