数据库的笔试很是重要,基本的笔试题都在这里,因此这里小编整理出来,一方面为了本身复习,一方面也方便你们。html
(关于MySQL的安装,具体见下面博客:http://www.cnblogs.com/wj-1314/p/7573242.html)spring
(关于MySQL的基础知识,具体见下面博客:http://www.cnblogs.com/wj-1314/p/8343101.html)sql
(关于MySQL的索引知识,具体见下面博客:http://www.cnblogs.com/wj-1314/p/8353262.html)数据库
最近整理了一些数据库常见的笔试题,对本身也是个复习,但愿对你们也有所帮助。编程
触发器是一类特殊的存储过程,主要是经过事件来触发而被执行的。它能够强化约束,来维护数据的完整性和一致性,能够跟踪数据库内的操做从而不容许未经许可的更新和变化。能够联级运算。如,某表上的触发器上包含对另外一个表的数据操做,而该操做又会致使该表触发器被触发。安全
存储过程是一个预编译的SQL语句,优势是容许模块化的设计,就是说只须要建立一次,之后在该程序中就能够调用屡次。若是某次操做须要执行屡次SQL,使用存储过程比单纯SQL语句执行要快。能够一个命令对象来调用存储过程。并发
索引就是一种特殊的查询表,数据库的搜索引擎能够利用它加速对数据的检索。它很相似与现实生活中书的目录,不须要查询整本书内容就能够找到想要的数据。索引能够是惟一的,建立索引容许指定单个列或者是多个列。缺点是它减慢了数据录入的速度,同时也增长了数据库的尺寸大小。数据库设计
A.事务一旦提交,对数据库的改变是永久的
B.事务包括的全部操做要么都作,要么不作
C.一个事务内部的操做及使用的数据对并发的其余事务是隔离的
D.事务必须是使数据库从一个致性状态变到另外一个致性状态模块化
解析:事务的持久性(也叫永久性)是指一旦事务提交成功,其对数据修改是持久性的。数据更新的结果已经从内存转存到外部存储器上,此后即便发生了系统故障,已提交事务所作的数据更新也不会丢失。性能
A.进程
B.SQL
C.事务
D.文件
A.EXPLAIN
B.LOAD
C.TOP
D.SUM
explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题能够经过此命令来简单的解决,Explain能够用来查看SQL语句的执行效 果,能够帮助选择更好的索引和优化查询语句,写出更好的优化语句。 explain语法:explain select … from … [where ...] 例如:explain select * from news;
A属性
B二维表
C网状结构
D树状结构
[解析] 关系模型实体间的联系采用二维表来表示,简称表。选项C为网状模型实体间的联系,选项D为层次模型实体间的联系,选项A属性刻画了实体。
A从前日后
B从后往前
C其余什么顺序
A SERIALIZABLE
B READ COMMITTED
C READ UNCOMMITTED
D REPEATABLE READ
C:出现脏读,幻读,不可重复读。
B:出现幻读,不可重复读。
D:出现幻读
A:不出现上述问题。
Read Uncommitted:不隔离数据,对于事务使用的数据,其余事务也能修改删除。
Read Committed:不容许读取没有提交的数据,只有其余事务提交了数据,你才能访问。
Repeatable Read:事务中用到的数据都被锁定,其余事务不能修改和删除。
Snapshot:快照隔离
Serilizable:事务要用到的数据所有锁定,不容许其余事务添加,修改,删除。
A.内部事务回滚会致使外部事务回滚
B,内部事务回滚了,外部事务然然能够提交
C.外部事务回滚了,内部事务页跟着回滚
D.外部事务回滚了,内部事务仍然能够提
A.更新视图
B.查询
C.在视图上定义新的表
D.在视图上定义新的视图
A绑定变量是指在SQL语句中使用变量,改变变量的值来改变SQL语句的执行结果
B使用绑定变量,能够减小SQL语句的解析,能减小数据库引擎消耗在SQL语句解析上的资源
C使用绑定变量,提升了编程效率和可靠性,减小访问数据库的次数
D使用绑定变量,查询优化器会预估的比字面变量更加真实
A锁能够分为独占锁(即排它锁),共享锁和更新锁。
BSQL Server支持的锁粒度能够分为为行、页、键、键范围、索引、表或数据库。
CSQL Server 经过使用SET LOCK_TIMEOUT命令设定锁超时间隔。
D锁的主要做用是提供事务所需的隔离。隔离确保事务之间不会相互干扰。
<分析>:
(1) 概念:
数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的状况。若对并发操做不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。
加锁是实现数据库并发控制的一个很是重要的技术。当事务在对某个数据对象进行操做前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了必定的控制,在该事务释放锁以前,其余的事务不能对此数据对象进行更新操做。
(2) 锁的分类:
共享(S)锁:多个事务可封锁一个共享页;任何事务都不能修改该页; 一般是该页被读取完毕,S锁当即被释放。
排它(X)锁:仅容许一个事务封锁此页;其余任何事务必须等到X锁被释放才能对该页进行访问;X锁一直到事务结束才能被释放。
更新(U)锁:更新锁在修改操做的初始化阶段用来锁定可能要被修改的资源,这样能够避免使用共享锁形成的死锁现象。由于使用共享锁时,修改数据的操做分为两步,首先得到一个共享锁,读取数据,而后将共享锁升级为排它锁,而后再执行修改操做。这样若是同时有两个或多个事务同时对一个事务申请了共享锁,在修改数据的时候,这些事务都要将共享锁升级为排它锁。这时,这些事务都不会释放共享锁而是一直等待对方释放,这样就形成了死锁。若是一个数据在修改前直接申请更新锁,在数据修改的时候再升级为排它锁,就能够避免死锁。
(3) 锁的粒度:
在sql server2000中锁是具备粒度的,便可以对不一样的资源加锁。锁定在较小的粒度的资源(例如行)上能够增长系统的并发量但须要较大的系统开销,从而也会影响系统的性能,由于锁定的粒度较小则操做可能产生的锁的数量会增长;锁定在较大的粒度(例如表)就并发而言是至关昂贵的,由于锁定整个表限制了其它事务对表中任意部分进行访问,但要求的开销较低,由于须要维护的锁较少,因此在这里是一种互相制约的关系。
Sql server2000中锁定的粒度包括 行、页、扩展盘区、表、库等资源。
A程序运行过程
B程序的执行结果
C对数据的更新操做
D对数据的查询操做
记录数据库事务,最大限度地保证数据的一致性与安全性
重作日志文件:含对数据库所作的更改记录,这样万一出现故障能够启用数据恢复,一个数据库至少须要两个重作日志文件
归档日志文件:是重作日志文件的脱机副本,这些副本可能对于从介质失败中进行恢复很必要。
A隔离性
B持久性
C强制性
D一致性
A 表A中的约束依然存在
B 表A被删除了
C 表A中的数据被删除了一半,再次执行时,将删除剩下的一半数据行
D 表A中不符合检查约束要求的数据被删除,而符合检查约束要求的数据依然保留
删除表的语句为:DROP TABLE table_name;
而DELETE和TRUNCATE TABLE都是删除表中的数据的语句,它们的不一样之处在于:
一、TRUNCATE TABLE比DELETE的速度快;
二、TRUNCATE TABLE 是删除表的全部行,而DELETE是删除表的一行或者多行(除非DELETE不带WHERE语句);
三、在删除时若是遇到任何一行违反约束(主要是外键约束),TRUNCATE TABLE仍然删除,只是表的结构及其列、约束、索引等保持不变,但DELETE是直接返回错误;
四、对于被外键约束的表,不能使用TRUNCATE TABLE,而应该使用不带WHERE语句的DELETE语句。
五、若是想保留标识计数值,要用DELETE,由于TRUNCATE TABLE会对新行标志符列搜用的计数值重置为该列的种子。
A 数据库中,数据存在副本的现象,就是数据冗余
B 经过分类存储,能够有效减小数据冗余,可是会增长数据查找的复杂性
C 在数据库设计阶段,必定要尽最大可能避免数据冗余,最好作到无数据冗余。
D 数据冗余一般是因为数据库设计引发的。
A未提交读(Read Uncommitted):容许脏读,也就是可能读取到其余会话中未提交事务修改的数据
B提交读(Read Committed):只能读取到已经提交的数据
C可重复读(Repeated Read):在同一个事务内的查询都是事务开始时刻一致的
D串行读(Serializable):彻底串行化的读,每次读都须要得到表级共享锁,读写相互都会阻塞
在MySQL中有两种方法能够删除数据,一种是MySQL DELETE语句,另外一种是MySQL TRUNCATE TABLE语句。DELETE语句能够经过WHERE对要删除的记录进行选择。而使用TRUNCATE TABLE将删除表中的全部记录。所以,DELETE语句更灵活。
DELETE能够按条件删除表中数据。在没有条件时,DELETE FROM table1 (成功返回条数)或TRUNCATE TABLE table1(成功返回0) 都是清空表。
DELETE FROM table1 WHERE 1;能够保留表中自增值。