关于索引的那些事

来源:互联网 发布:python socket 多连接 编辑:程序博客网 时间:2024/05/21 11:01

学习数据库,必不可少的要熟知索引,这里,将各种索引总结比较一下。

(1)主索引:可确保字段中输入值的唯一性并决定了处理记录的顺序。可以为数据库中的每一个表建立一个主索引。如果某个表已经有了一个主索引,可以继续添加候选索引 .
(2)候选索引:像主索引一样要求字段值的唯一性并决定了处理记录的顺序。在数据库表和自由表中均可为每个表建立多个候选索引 .
(3)普通索引:也可以决定记录的处理顺序,但是允许字段中出现重复值。在一个表中可以加入多个普通索引. 
(4)唯一索引:为了保持同早期版本的兼容性,还可以建立一个唯一索引,以指定字段的首次出现值为基础,选定一组记录,并对记录进行排序;如果想用这种方法选定字段,也许建立一个查询或视图会更好些 .


SELECT * FROM 表名

INSERT INTO表名(字段, 字段, …)

UpDATE表名SET (字段=值, 字段=值, …) WHERE (条件)

DELETE FROM 表名 WHERE (条件)

2、试解释COMMIT操作和ROLLBACK操作的语义。

COMMIT语句表示事务执行成功地结束(提交),此时告诉系统,数据库要进入一个新的正确状态,该事务对数据库的所有更新都已交付实施(写入磁盘)。

ROLLBACK语句表示事务执行不成功地结束(应该“回退”),此时告诉系统,已发生错误,数据库可能处在不正确的状态,该事务对数据库的所有更新必须被撤销,数据库应恢复该事务到初始状态。

3、如何估计一张表的大小(假设该表中有1万条数据)?

表的大小 = 所有属性的字节数之和 × 10000

 1. 存储过程和函数的区别

  存储过程是用户定义的一系列sql语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。

  2. 事务是什么?

  事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务:

  原子性 事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。

  一致性事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。

  隔离性 由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。

  持久性 事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。

  3. 游标的作用?如何知道游标已经到了最后?

  游标用于定位结果集的行,通过判断全局变量@@FETCH_STATUS可以判断是否到了最后,通常此变量不等于0表示出错或到了最后。

  4. 触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。

  事前触发器运行于触发事件发生之前,而事后触发器运行于触发事件发生之后。通常事前触发器可以获取事件之前和新的字段值。

  语句级触发器可以在语句执行前或后执行,而行级触发在触发器所影响的每一行触发一次。


0 0
原创粉丝点击