Sqlserver数据库面试题(一)部分搬运

一、什么是触发器?

  我的理解是触发器是一种用来保障参照完整性的特殊的存储过程,当对指定的表进行操作时触发器会调用储存过程。其大致分为两类,一种是instead另一种是after正如他们的中文翻译的意思,intstead即存储过程代替原有的操作,原先的操作无效;after即在操作完成后再执行存储过程,原先的操作有效。

二、什么是存储过程?

  存储过程是事先编译好并存储在数据库中的一段sql语句,他可以极大的简化开发人员的很多工作。它有这么几个特点,一次编译即可多次使用,如果语句复杂的话相对于普通的sql数据是有明显的优势的。但是它也有缺点,当业务逻辑需要修改时,存储过程是不能够进行修改的所以需要重新编写储存过程;存储过程相对于简单的sql语句来说没有什么优势,还会增加开发的难度;如果使用了储存过程,数据库损坏的话整个应用程序都会崩溃,需要重新的写存储过程。

三、什么是索引?

  索引是一种特殊的查询表,创建索引可以提高查询的效率。可以将索引类比成新华字典的目录,我们通过索引可以定位字的位置,而不需要遍历整个字典。
优点:

  • 通过创建唯一索引我们可以保证数据库每一行数据的唯一性
  • 大大的提高了查询的效率,普通的查询是需要全表扫描的,而索引是通过实现排好序,从而查询是可以用用二分查找等高效率的算法。
  • 加快表与表之间的连接,在实现数据的的参照完整性的方面特别有意义

缺点:

  • 索引的创建和维护需要时间,这个时间随着数据量而增加
  • 索引是需要占用物理空间的
  • 当对表中的数据修改、新增、或者删除时,索引也是需要动态维护的,所耗费的时间也会更长
    综上所述,建立索引的时候是需要详细的去考虑的,因为索引是建立在列上的,要考虑哪些列是适合建立索引的,同时索引会使增删改的时间变长,索引如果表需要频繁的数据维护时,是不适合建立索引的

四、什么是事务

  事务是数据库操作的最小单元,作为一个逻辑工作单元的SQL语句组这些操作作为一个整体向系统提交,要么都执行,要么都不执行。如果任何一个操作出了问题,都会回滚到之间的操作。

事务的四大特性
  • 原子性
    事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做
  • 一致性
    事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统 运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是 不一致的状态。
  • 隔离性
    一个事务的执行不能其它事务干扰。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。
  • 持续性
    也称永久性,指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。接下来的其它操作或故障不应该对其执行结果有任何影响。

五、什么是锁?

锁(LOCKING)是最常用的并发控制机构。是防止其他事务访问指定的资源控制、实现并发控制的一种主要手段。锁是事务对某个数据库中的资源(如表和记 录)存取前,先向系统提出请求,封锁该资源,事务获得锁后,即取得对数据的控制权,在事务释放它的锁之前,其他事务不能更新此数据。当事务撤消后,释放被 锁定的资源。
当一个用户锁住数据库中的某个对象时,其他用户就不能再访问该对象
两种锁

  • 排他锁:当数据对象被加上排它锁时,其他的事务不能对它读取和修改。
  • 共享锁:加了共享锁的数据对象可以被其他事务读取,但不能修改。

你可能感兴趣的:(Sqlserver数据库面试题(一)部分搬运)