数据库理论【复习】
1.存储过程(Stored Procedure)与触发器:
是在大型数据库系统中,一组为了完成特定功能的SQL 语句(和流程控制语句)集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。 存储过程在运算时生成执行方式,所以,以后对其再运行时其执行速度很快。
触发器是一种特殊类型的存储过程,它不同于我们前面介绍过的存储过程。触发器的描述主要包括:事件、条件、动作。触发器主要是通过事件进行触发而被执行的(插入、删除、更新语句),而存储过程可以通过存储过程名字而被直接调用。
2.数据库事务(database transaction):
事务是指作为单个逻辑工作单元执行的一系列操作。具有Atomic(原子性)Consistent(一致性)Isolation(隔离性)Duration(持久性)以保证并发访问和系统故障时对数据的维护,保证事务的物理完整性。事务在DBMS看来是一个操作队列。
事务并发执行:可串行化;交叉执行的异常:WR冲突(脏读,读取未提交的数据),RW冲突(不可重复的读),WW冲突(盲写,重写未提交的数据);中止事务调度。
3.游标(Cursor):
游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。每个游标区都有一个名字。用户可以用SQL语句逐一从游标中获取记录。
游标是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次以行或者多行前进或向后浏览数据的能力。我们可以把游标当作一个指针,它可以指定结果中的任何位置,然后允许用户对指定位置的数据进行处理。
游标包含两个部分:一个是游标结果集(定义该游标得SELECT语句返回的行的集合)、一个是游标位置(指向这个结果集某一行的当前指针)。
4.sql查询分页:(参考http://www.phpweblog.net/peiyinjin/archive/2008/04/15/3199.html)
mysql指定返回记录: SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset
mysql> SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15 //为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1: mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last. //如果只给定一个参数,它表示返回最大的记录行数目: mysql> SELECT * FROM table LIMIT 5; //检索前 5 个记录行 //换句话说,LIMIT n 等价于 LIMIT 0,n。
5.索引:
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
索引分为聚簇索引和非聚簇索引两种,聚簇索引 是按照数据存放的物理位置为顺序的;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。
为表设置索引要付出代价的:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)。
大多数DB厂商实现索引都是基于一种数据结构——B树。因为B树的特点就是适合在磁盘等直接存储设备上组织动态查找表。
索引与like查询: <like %keyword> 和 <like %keyword%>无效 ;
<like keyword%> 有效
我相信,会有一个公正而深刻的认识来为我们总结的:那时,我们这一代独有的奋斗、思索、烙印和选择才会显露其意义。 ——《北方的河》