数据库面试题SQLSERVER和答案.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

数据库面试题(SQLSERVER)和答案

一、基础概念与体系结构

1.简述SQLServer的逻辑体系结构组成部分。

SQLServer的逻辑体系结构从宏观到微观可分为以下层级:

-(1).数据库(Database):SQLServer的核心容器,包含所有用户数据、系统数据、元数据及对象(如表、视图、存储过程等)。

-(2).文件组(Filegroup):用于管理数据文件的逻辑集合,可将不同类型数据(如表数据、索引数据)存储到不同文件组,优化I/O性能。

-(3).数据文件(.mdf/.ndf)与日志文件(.ldf):.mdf为主数据文件,存储核心数据;.ndf为辅助数据文件,扩展存储;.ldf为事务日志文件,记录所有事务操作以保证数据恢复。

-(4).页(Page):数据存储的最小物理单位(默认8KB),包含行数据、索引条目或其他元数据。

-(5).区(Extent):由8个连续页组成(64KB),是SQLServer分配空间的基本单位。

2.SQLServer2019相较于2017版本的主要新特性有哪些?

SQLServer2019针对大数据、安全性和跨平台能力进行了重点升级:

-(1).大数据集成:新增PolyBase功能支持直接查询Hadoop、AzureBlob存储中的数据,无需ETL;引入大数据池(BigDataPools),支持与Spark集成分析。

-(2).语言扩展:支持Python、R、Java的用户定义函数(UDF),并通过机器学习服务实现模型训练与推理。

-(3).安全增强:动态数据屏蔽(DDM)支持更细粒度的列级屏蔽策略;始终加密(AlwaysEncrypted)支持enclaves技术,允许在加密数据上执行计算。

-(4).跨平台支持:正式推出Linux版本,支持Kubernetes容器化部署(通过Operator)。

3.说明SQLServer中“主数据文件”与“事务日志文件”的核心作用及关联关系。

(1).主数据文件(.mdf):存储数据库的核心数据(如表、索引、视图等对象)和元数据(如表结构、约束定义),是数据库启动时必须加载的文件。

(2).事务日志文件(.ldf):记录所有事务操作的前像(Undo信息)和后像(Redo信息),用于实现事务的原子性(Atomicity)、持久性(Durability)及数据恢复(如崩溃恢复、日志备份还原)。

(3).关联关系:事务日志是数据恢复的核心依据,即使数据文件损坏,可通过日志文件将数据库恢复到故障前的一致状态(需结合完整备份)。

二、SQL语法与查询设计

1.编写SQL语句:查询每个部门的最高工资,要求显示部门ID、部门名称和最高工资(表结构:部门表Dept(DeptID,DeptName),员工表Emp(EmpID,EmpName,DeptID,Salary))。

SELECT

d.DeptID,

d.DeptName,

MAX(e.Salary)ASMaxSalary

FROM

Deptd

LEFTJOIN

EmpeONd.DeptID=e.DeptID

GROUPBY

d.DeptID,d.DeptName;

关键点:使用LEFTJOIN确保无员工的部门也能显示(最高工资为NULL),通过GROUPBY按部门分组后取最大值。

2.解释INNERJOIN、LEFTJOIN、FULLOUTERJOIN的区别,并举例说明适用场景。

(1).INNERJOIN:仅返回两表中满足连接条件的匹配行。

示例:查询“有员工的部门”,排除无员工的部门。

(2).LEFTJOIN:返回左表所有行,右表无匹配时以NULL填充。

示例:统计各部门员工数量(包括无员工的部门,数量为0)。

(3).FULLOUTERJOIN:返回左表和右表所有行,无匹配时以NULL填充。

示例:合并两个系统的用户数据,保留所有记录(即使一方无对应数据)。

3.如何用SQL实现“查询薪资高于所在部门平均薪资的员工”?(表结构:Emp(EmpID,DeptID,Salary))

WITHDeptAvgAS(

SELECT

DeptID,

AVG(Salary)ASAvgSalary

FROMEmp

GROUPBYDeptID

)

SELECT

e.EmpID,

e.DeptID,

e.Salary

FROM

Empe

INNERJOIN

DeptAvg

文档评论(0)

***** + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档