最近整理了一些数据库常见的面试题,对自己也是个复习,希望对大家也有所帮助。

1.触发器的作用?

触发器是一类特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。

2,什么是存储过程? 用什么来调用?

存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需要创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。可以一个命令对象来调用存储过程。

3,索引的作用?它的优点缺点是什么?

索引就是一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列或者是多个列。缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。

4,.事务的持续性是指?A

A.事务一旦提交,对数据库的改变是永久的 
B.事务包括的所有操作要么都做,要么不做
C.一个事务内部的操作及使用的数据对并发的其他事务是隔离的
D.事务必须是使数据库从一个致性状态变到另一个致性状态

解析:事务的持久性(也叫永久性)是指一旦事务提交成功,其对数据修改是持久性的。数据更新的结果已经从内存转存到外部存储器上,此后即使发生了系统故障,已提交事务所做的数据更新也不会丢失。

5,以下哪个选项时DBMS的基本单位,是构成单一逻辑工作单元的操作集合  C
A.进程 
B.SQL 
C.事务 
D.文件

6,SQL语句性能分析的关键字是什么?A
A.EXPLAIN 
B.LOAD 
C.TOP 
D.SUM

explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优化语句。 explain语法:explain select … from … [where ...] 例如:explain select * from news;

7,在关系数据库中,用来表示实体间联系的是?B
A属性 
B二维表
C网状结构
D树状结构

[解析] 关系模型实体间的联系采用二维表来表示,简称表。选项C为网状模型实体间的联系,选项D为层次模型实体间的联系,选项A属性刻画了实体。

8,sql where条件的执行顺序是什么? A
A从前往后
B从后往前
C其他什么顺序

9,数据库中事务隔离分为4个级别,其中允许“不可重复读”的有?(求解释) BC
A SERIALIZABLE 
B READ COMMITTED 
C READ UNCOMMITTED 
D REPEATABLE READ

C:出现脏读,幻读,不可重复读。 
B:出现幻读,不可重复读。 
D:出现幻读 
A:不出现上述问题。 
Read Uncommitted:不隔离数据,对于事务使用的数据,其他事务也能修改删除。 
Read Committed:不允许读取没有提交的数据,只有其他事务提交了数据,你才能访问。 
Repeatable Read:事务中用到的数据都被锁定,其他事务不能修改和删除。 
Snapshot:快照隔离 
Serilizable:事务要用到的数据全部锁定,不允许其他事务添加,修改,删除。

10,spring的PROPAGATION_REQUIRES_NEW事务,下面哪些说法是正确的? B
A.内部事务回滚会导致外部事务回滚 
B,内部事务回滚了,外部事务然然可以提交 
C.外部事务回滚了,内部事务页跟着回滚 
D.外部事务回滚了,内部事务仍然可以提

11,在视图上不能万恒的操作是C
A.更新视图 
B.查询 
C.在视图上定义新的表 
D.在视图上定义新的视图

12,下面有关sql绑定变量的描述,说法错误的是? C
A绑定变量是指在SQL语句中使用变量,改变变量的值来改变SQL语句的执行结果
B使用绑定变量,可以减少SQL语句的解析,能减少数据库引擎消耗在SQL语句解析上的资源
C使用绑定变量,提高了编程效率和可靠性,减少访问数据库的次数
D使用绑定变量,查询优化器会预估的比字面变量更加真实

13,下面有关SQL Server锁的描述,正确的有 
A锁可以分为独占锁(即排它锁),共享锁和更新锁。
BSQL Server支持的锁粒度可以分为为行、页、键、键范围、索引、表或数据库。
CSQL Server 通过使用SET LOCK_TIMEOUT命令设定锁超时间隔。
D锁的主要作用是提供事务所需的隔离。隔离确保事务之间不会相互干扰。

<分析>: 
(1) 概念: 
数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。 
加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。 
(2) 锁的分类: 
共享(S)锁:多个事务可封锁一个共享页;任何事务都不能修改该页; 通常是该页被读取完毕,S锁立即被释放。 
排它(X)锁:仅允许一个事务封锁此页;其他任何事务必须等到X锁被释放才能对该页进行访问;X锁一直到事务结束才能被释放。 
更新(U)锁:更新锁在修改操作的初始化阶段用来锁定可能要被修改的资源,这样可以避免使用共享锁造成的死锁现象。因为使用共享锁时,修改数据的操作分为两步,首先获得一个共享锁,读取数据,然后将共享锁升级为排它锁,然后再执行修改操作。这样如果同时有两个或多个事务同时对一个事务申请了共享锁,在修改数据的时候,这些事务都要将共享锁升级为排它锁。这时,这些事务都不会释放共享锁而是一直等待对方释放,这样就造成了死锁。如果一个数据在修改前直接申请更新锁,在数据修改的时候再升级为排它锁,就可以避免死锁。 
(3) 锁的粒度: 
在sql server2000中锁是具有粒度的,即可以对不同的资源加锁。锁定在较小的粒度的资源(例如行)上可以增加系统的并发量但需要较大的系统开销,从而也会影响系统的性能,因为锁定的粒度较小则操作可能产生的锁的数量会增加;锁定在较大的粒度(例如表)就并发而言是相当昂贵的,因为锁定整个表限制了其它事务对表中任意部分进行访问,但要求的开销较低,因为需要维护的锁较少,所以在这里是一种互相制约的关系。 
Sql server2000中锁定的粒度包括 行、页、扩展盘区、表、库等资源。

14,事务日志用于保存  C
A程序运行过程
B程序的执行结果
C对数据的更新操作
D对数据的查询操作

记录数据库事务,最大限度地保证数据的一致性与安全性 
重做日志文件:含对数据库所做的更改记录,这样万一出现故障可以启用数据恢复,一个数据库至少需要两个重做日志文件 
归档日志文件:是重做日志文件的脱机副本,这些副本可能对于从介质失败中进行恢复很必要。

15,数据库事务正确执行的四个基本要素不包括?C
A隔离性
B持久性
C强制性
D一致性

16,要删除表A中数据,使用TRUNCATE TABLE A。运行结果是?A
A 表A中的约束依然存在
B 表A被删除了
C 表A中的数据被删除了一半,再次执行时,将删除剩下的一半数据行
D 表A中不符合检查约束要求的数据被删除,而符合检查约束要求的数据依然保留

删除表的语句为:DROP TABLE table_name; 
而DELETE和TRUNCATE TABLE都是删除表中的数据的语句,它们的不同之处在于: 
1、TRUNCATE TABLE比DELETE的速度快; 
2、TRUNCATE TABLE 是删除表的所有行,而DELETE是删除表的一行或者多行(除非DELETE不带WHERE语句); 
3、在删除时如果遇到任何一行违反约束(主要是外键约束),TRUNCATE TABLE仍然删除,只是表的结构及其列、约束、索引等保持不变,但DELETE是直接返回错误; 
4、对于被外键约束的表,不能使用TRUNCATE TABLE,而应该使用不带WHERE语句的DELETE语句。

5、如果想保留标识计数值,要用DELETE,因为TRUNCATE TABLE会对新行标志符列搜用的计数值重置为该列的种子。

17,有关数据冗余说法错误的是 () C
A 数据库中,数据存在副本的现象,就是数据冗余 
B 通过分类存储,可以有效减少数据冗余,但是会增加数据查找的复杂性 
C 在数据库设计阶段,一定要尽最大可能避免数据冗余,最好做到无数据冗余。 
D 数据冗余通常是由于数据库设计引起的。

18,下面有关事务隔离级别说法正确的是? ABCD
A未提交读(Read Uncommitted):允许脏读,也就是可能读取到其他会话中未提交事务修改的数据 
B提交读(Read Committed):只能读取到已经提交的数据 
C可重复读(Repeated Read):在同一个事务内的查询都是事务开始时刻一致的 
D串行读(Serializable):完全串行化的读,每次读都需要获得表级共享锁,读写相互都会阻塞

最新文章

  1. 带你实现开发者头条APP(四)---首页优化(加入design包)
  2. 安装vim的ycm
  3. groovy-输入输出
  4. LOAD TABLE tbl_name FROM MASTER语法 SQL
  5. POJ 2411 Mondriaan&#39;sDream(状压DP)
  6. Swift-CALayer十则示例
  7. busybox filesystem add ldd function
  8. 隐藏input边框(ie6、ie7)
  9. js jsp 时间 日期 控件 插件 简单 实用
  10. Qt下HBoxLayout里的按钮有重叠
  11. Java集合之HashMap源码实现分析
  12. IIS访问PHP文件时,弹出用户名和密码提示框的解决方法
  13. Intelligent idea高效实用总结
  14. 将展示内容(div、iframe)放在Expand控件中
  15. Eclipse无法正常启动,弹出对话框内容为 A Java Runtime...
  16. Netty 服务端启动过程
  17. MyBatis源码解析(六)——DataSource数据源模块之池型数据源
  18. MybatisGenerator生成的mapper 少了识别主键的方法 byPrimaryKey()
  19. vue中强制刷新的bug处理
  20. Shiro学习笔记 三(认证授权)

热门文章

  1. 矩阵 matrix
  2. sql server中的日期函数
  3. git 放弃本地修改操作
  4. JS设计模式——9.组合模式
  5. 引发类型为“System.OutOfMemoryException”的异常
  6. Android Framebuffer介绍及使用【转】
  7. java系统的优化
  8. java 判断上传文件大小
  9. React-Native 之 FlexBox介绍和使用
  10. 二十一、springboot之定制URL匹配规则(项目中遇到的问题:get方式传参,带有小数点,被忽略)