![MSSQL 常见面试题_第1页](http://file3.renrendoc.com/fileroot_temp3/2021-12/3/6628f57b-6f45-451b-86d9-2ae423f54935/6628f57b-6f45-451b-86d9-2ae423f549351.gif)
![MSSQL 常见面试题_第2页](http://file3.renrendoc.com/fileroot_temp3/2021-12/3/6628f57b-6f45-451b-86d9-2ae423f54935/6628f57b-6f45-451b-86d9-2ae423f549352.gif)
![MSSQL 常见面试题_第3页](http://file3.renrendoc.com/fileroot_temp3/2021-12/3/6628f57b-6f45-451b-86d9-2ae423f54935/6628f57b-6f45-451b-86d9-2ae423f549353.gif)
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一数据库概念1. 约束约束有几种?主关键字约束(primary key constraint)、外关键字约束(foreign key constraint)、惟一性约束(unique constraint)、检查约束(check constraint)和缺省约束(default constraint)。2. 表连接表的连接方式有几种?内外连接的差别?内连接(inner join),外连接(outer join),交叉连接(cross join)。内联接消退与另一个表中的任何行不匹配的行。而外联接会返回 from 子句中提到的至少一个表或视图的全部行,只要这些行符合任何 where 或 havi
2、ng 搜寻条件。将检索通过左向外联接引用的左表的全部行,以及通过右向外联接引用的右表的全部行。完整外部联接中两个表的全部行都将返回。外连接又分为哪几种?左(外)连接(left outer join /left join),右(外)连接(right outer join / right join),全外连接(full outer join / full join)3. 索引索引有几种?他们的区分是什么?聚拢索引( clustered index, 也称聚类索引、簇集索引) 和非聚拢索引(nonclustered index,也称非聚类索引、非簇集索引)。聚簇索引的挨次就是数据的物理存储挨次,而非
3、聚簇索引的索引挨次与数据物理排列挨次无关,叶节点仍旧是索引节点,只不过有一个指针指向对应的数据块。一个表最多只能有一个聚簇索引。4. 存储过程为什么要使用存储过程?1. 允许模块化程序设计。2. 允许更快执行。3. 削减网络流量。4. 可作为平安机制使用。5. 事务简洁描述事务的概念和特性事务(transaction)是并发把握的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不行分割的工作单位。通过事务,sql server 能将规律相关的一组操作绑定在一起,以便服务器保持数据的完整性。a:原子性(atomicity)事务是数据库的规律工作单位,事务中包括的诸操作要么全做
4、,要么全不做。b:全都性(consistency)事务执行的结果必需是使数据库从一个全都性状态变到另一个全都性状态。全都性与原子性是亲热相关的。c:隔离性(isolation)一个事务的执行不能被其他事务干扰。d:持续性/永久性(durability)一个事务一旦提交,它对数据库中数据的转变就应当是永久性的。如何推断事务中语句是否出错?利用error 推断是否出错6. 数据库范式数据库设计的一、二、三范式是什么?第一范式(1nf)是指数据库表的每一列都是不行分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。其次范式(2nf)要求数据库表中的每个实例或行
5、必需可以被惟一地区分。第三范式(3nf)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。7. 锁和死锁为什么要引入锁多个用户同时对数据库的并发操作时会带来丢失更新,脏读等数据不全都的问题。锁的分类1. 从数据库系统的角度来看:分为独占锁(即排它锁(x)),共享锁(s)和更新锁(u)2. 从程序员的角度看:分为乐观锁和悲观锁。死锁是怎么产生的?死锁就是多个用户申请不同封锁,由于申请者均拥有一部分封锁权而又等待其他用 户拥有的部分封锁而引起的无休止的等待可以使用 set deadlock_priority 把握在发生死锁状况时会话的反应方式。假如两个进程都锁定数据,并且直到其它进程释放
6、自己的锁时,每个进程才能释放自己的锁,即发生死锁状况。如何避开死锁1 使用事务时,尽量缩短事务的规律处理过程,及早提交或回滚事务;2 设置死锁超时参数为合理范围,如:3 分钟-10 分种;超过时间,自动放弃本次操作,避开进程悬挂;3 优化程序,检查并避开死锁现象消灭;如:在transaction 语句中加入trycatch 语句4 .对全部的脚本和sp 都要认真测试,在正是版本之前。5 全部的sp 都要有错误处理(通过error)6 一般不要修改sql server 事务的默认级别。不推举强行加锁二sql server1、数据类型列举 sql 中几种常用的数据类型,并说明char(100),v
7、archar(100), nvarchar(100)的差别?int,bit,varchar,nvarchar,datetimechar 为定长,varchar 和 nvarchar 为变长,nvarchar 存储 unicode, 为双字节,实际存储长度是 200。2、临时表和表变量什么是临时表?临时表与永久表相像,只是它的创建是在tempdb 中,它只有在一个数据库连接结束后或者由sql 命令 drop 掉,才会消逝,否则就会始终存在。临时表在创建的时候都会产生 sql server 的系统日志,虽它们在 tempdb 中体现,是安排在内存中的,它们也支持物理的磁盘,但用户在指定的磁盘里看不
8、到文件。临时表的分类?临时表分为本地和全局两种。本地临时表的名称都是以“#”为前缀,只有在本地当前的用户连接中才是可见的,当用户从实例断开连接时被删除。全局临时表的名称都是以“#”为前缀,创建后对任何用户都是可见的,当全部引用该表的用户断开连接时被删除。临时表和表变量有什么区分?1. 创建的时候,必需要为之命名。表变量是变量的一种,表变量也分为本地及全局的两种,本地表变量的名称都是以“”为前缀,只有在本地当前的用户连接中才可以访问。全局的表变量的名称都是以“”为前缀,一般都是系统的全局变量,像我们常用到的,如error 代表错误的号,rowcount 代表影响的行数。2. 不能在表变量上创建显
9、式的索引,只能创建pk 和unique 约束3. 一旦申明表变量,就不能修改它的定义。4. 表变量不是外部事务的组成部分。假如修改表变量的语句执行失败,则该语句的更改会被撤销。但是,假如语句是外部事务的一部分,外部事务回滚后,对表变量已经完成的更改将不行撤销。3、视图、cte简述视图、cte视图:是由若干基本表或其他视图构成的表的定义。未建索引的视图中的数据没有物理表现形式。 cte:它允许使用模块化的方法开发解决方案。可简化开发过程并削减bug 和错误的消灭。4、备份和还原数据库的备份有几种?数据库的备份一般都会同时拥有三种:完全备份、差异备份、事务日志备份。5、系统库、视图、过程及方法sq
10、l server 系统自带的数据库有哪些?系统中各个数据库的用途是什么?master:核心数据库主要协作完成数据库的权限,日志,登陆信息,设定,进程治理等数据库系统与操作系统级别的服务操作model:模版数据库主要协作完成用户自定义数据库创建时供应各种模板msdb:自动化任务主要完成一些定时,预操作比如发送邮件,提示等等等等。tempdb:临时缓存请列举一些数据库中常用的系统表? sysobjects,syscolumns,syscomments 请列举一些数据库中常用的系统存储过程? sp_helptext, sp_who, sp_who2, sp_rename 6、错误处理说出错误处理的两
11、种方式(sql2005)?try.catch error7、性能优化列举一些会影响数据库性能的因素。有很多因素会影响数据库的性能表现,例如:操作系统,硬件方面的因素,如内存和磁盘空间,访问数据库的应用软件。除此之外,数据库本身的设计也是一个影响性能的重要因素。有一个数据库 200g 大小,每天增加 50m 允许用户随时访问,制定备份策略(具体说明)。这种状况可以接受增量备份方式。每周日做一次全备份,周一到周六作增量备份(由于数据量较少,可以考虑每 30 分钟增量备份一次)。这样可以尽量削减性能消耗,而且假如 transaction log 丢失的状况下,可以保证最多丢失30 分钟数据。比较下列
12、语句的性能优越性。(红色为较优化方案)1. 常量优化 sal > 24000/12 sal*12 > 24000假如 sql 语句包括第一种状况,优化器会简洁地把它转变成sal > 2000。优化器不会简化跨越比较符的表达式,例如其次条语句,鉴于此,应尽量写用常量跟字段比较检索的表达式,而不要将字段置于表达式当中。否则没有方法优化,比如假如sal 上有索引,第一可以使用,其次就难以使用。2. 操作符优化in、not in 和 exists、not existsselect col1,col2,col3 from t1 where col2 not in (a,b,c)sele
13、ct col1,col2,col3 from t1 where not exists (select * from t1 where col2 =a or col2= b or col2 = c)用 in 写出来的sql 的优点是比较简洁写及清楚易懂,这比较适合现代软件开发的风格。但是用in 的sql 性能总是比较低的,not in 操作符是强列不推举使用的, 由于它不能应用表的索引。相应的可用exists 和not exists 代替。union 和 union all假定 tbl1 和 tbl2 没有重复数据select * from tbl1 unionselect * from tbl
14、2 select * from tbl1 union allselect * from tbl2union 在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。当不会产生重复的记录时接受union all 操作符替代union,由于 union all 操作只是简洁的将两个结果合并后就返回。> 及 < 操作符(大于或小于操作符)假定一个表有 100 万记录,一个数值型字段 a,30 万记录的a=0,30 万记录的a=1, 39 万记录的a=2,1 万记录的a=3。a>2 与a>=3 比较由于 a>2 时,会先找出为 2 的记录索引再进行比较,而a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 环境问题与人类健康关系研究
- 2025年度文化教育产业合作合同
- 现代写字楼电梯运行分析与高效调派策略
- 电动车智能充电系统应用与创新能源发展
- 现代艺术与工业设计的交融
- 2025年度回迁房项目土地使用权出让合同范本
- 2025年度脚手架工程承包及高空作业人员培训合同
- 人教版八年级数学上册11.1.1《三角形的边》听评课记录
- 现代企业创新管理模式的研究与实践
- 环保认证与绿色营销的相互促进
- 冲压模具价格估算方法
- Before Sunrise 爱在黎明破晓时
- MotionView-MotionSolve应用技巧与实例分析
- 碳纳米管应用研究
- 投标声明书模板
- 运动技能学习与控制课件第十一章运动技能的练习
- 虫洞书简全套8本
- 幼儿园幼儿园小班社会《兔奶奶生病了》
- 设备管理试题库含答案
- 2023年《反电信网络诈骗法》专题普法宣传
- 小学数学五年级上、下册口算题大全
评论
0/150
提交评论