文档介绍:该【数据库常见面试题 】是由【游园会】上传分享,文档一共【7】页,该文档可以免费在线阅读,需要了解更多关于【数据库常见面试题 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。数据库常见面试题
数据库常见面试题一
,使用哪一个关键字能够除去重复列值?
答案:使用distinct关键字
?它的作用是什么?
答案:快照Snapshot是一个文件系统在特定时间里的镜像,对于在线实时数据备份特别有用。快照对于拥有不能停顿的应用或具有常翻开文件的文件系统的备份特别重要。对于只能供应一个特别短的备份时间而言,快照能保证系统的完整性。
答案:
存储过程是一组Transact-SQL语句,在一次编译后可以执行屡次。由于不必重新编译Transact-SQL语句,所以执行存储过程可以提高性能。
触发器是一种特别类型的存储过程,不由用户直接调用。创立触发器时会对其进展定义,以便在对特定表或列作特定类型的数据修改时执行。
,有什么好处?
答案:支持动态行级锁定
SQLServer2023动态地将查询所引用的每一个表的锁定粒度调整到适宜的级别。当查询所引用的少数几行分散在一个大型表中时,优化数据并行访问的最正确方法是使用粒度锁,如行锁。但是,假如查询引用的是一个表中的大多数行或全部行,优化数据并行访问的最正确方法可以是锁定整个表,以尽量削减锁定开销并尽快完成查询。
SQLServe2023通过为每个查询中的每个表选择适当的锁定级别,在总体上优化了数据并发访问。对于一个查询,假如只引用一个大型表中的几行,则数据库引擎可以使用行级锁定;假如引用一个大型表的几页中的多行,则使用页级锁定;假如引用一个小型表中的全部行,则使用表级锁定。
,数据库日志满的时候再查询数据库时会消失什么状况。
答案:每个数据库都有事务日志,用以记录全部事务和每个事务对数据库所做的修改。
?
答案:存储过程是用户定义的一系列SQL语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表
数据库常见面试题二
?
答案:事务是作为一个规律单元执行的一系列操作,一个规律工作单元必需有四个属性,称为ACID(原子性、全都性、隔离性和长久性)属性,只有这样才能成为一个事务:
(1)原子性
事务必需是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。
(2)全都性
事务在完成时,必需使全部的数据都保持全都状态。在相关数据库中,全部规章都必需应用于事务的修改,以保持全部数据的完整性。事务完毕时,全部的内部数据构造(如B树索引或双向链表)都必需是正确的。
(3)隔离性
由并发事务所作的修改必需与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,由于它能够重新装载起始数据,并且重播一系列事务,以使数据完毕时的状态与原始事务执行的状态一样。
(4)长久性
事务完成之后,它对于系统的影响是永久性的。该修改即使消失系统故障也将始终保持。
?如何知道游标已经到了最终?
答案:游标用于定位结果集的行,通过推断全局变量@***@FETCH_STATUS可以推断是否到了最终,通常此变量不等于0表示出错或到了最终。
,这两种触发有何区分?语句级触发和行级触发有何区分?
答案:
事前触发器运行于触发大事发生之前,而事后触发器运行于触发大事发生之后。通常事前触发器可以猎取大事之前和新的字段值。
语句级触发器可以在语句执行前或后执行,而行级触发在触发器所影响的每一行触发一次。
?
答案:
解决手段一:SQLServer自动检测和消退死锁
解决手段二:设置死锁优先级
解决手段三:设置锁定超时
解决手段四:使用更新锁避开死锁
数据库常见面试题三
?
答案:在给定的系统硬件和系统软件条件下,提高数据库系统的运行效率的方法是:
(1)在数据库物理设计时,降低范式,增加冗余,少用触发器,多用存储过程。
(2)当计算特别简单、而且记录条数特别巨大时(例如一千万条),简单计算要先在数据库外面,以文件系统方式用C++语言计算处理完成之后,最终才入库追加到表中去。这是电信计费系统设计的阅历。
(3)发觉某个表的记录太多,例如超过一千万条,则要对该表进展水平分割。水平分割的做法是,以该表主键PK的某个值为界限,将该表的记录水平分割为两个表。若发觉某个表的字段太多,例如超过八十个,则垂直分割该表,将原来的一个表分解为两个表。
(4)对数据库治理系统DBMS进展系统优化,即优化各种系统参数,如缓冲区个数。
(5)在使用面对数据的SQL语言进展程序设计时,尽量实行优化算法。总之,要提高数据库的运行效率,必需从数据库系统级优化、数据库设计级优化、程序实现级优化,这三个层次上同时下功夫。
答案:通俗地理解三个范式,对于数据库设计大有好处。在数据库设计中,为了更好地应用三个范式,就必需通俗地理解三个范式(通俗地理解是够用的理解,并不是最科学最精确的理解):
第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不行再分解;
其次范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;
第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。没有冗余的数据库设计可以做到。但是,没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必需降低范式标准,适当保存冗余数据。详细做法是:在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,允许冗余。
优点:
:存储过程只在制造时进展编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度;
,供应更好的解决方案:当对数据库进展简单操作时(如对多个表进展Update、Insert、Query和Delete时),可将此简单操作用存储过程封装起来与数据库供应的事务处理结合一起使用;
:存储过程可以重复使用,可削减数据库开发人员的工作量;:可设定只有某此用户才具有对指定存储过程的使用权。
缺点:
,或者要更改由其返回的数据,则您仍需要更新程序集中的代码以添加参数、更新GetValue()调用,等等,这时候估量比拟繁琐了。
,因此使用存储过程封装业务规律将限制应用程序的可移植性。假如应用程序的可移植性在您的环境中特别重要,则将业务规律封装在不特定于RDBMS的中间层中可能是一个更佳的选择。