《 SQLServer2005数据库管理与应用指南》
飞狼 李春萌 杨涵 编著
人民邮电出版社
Charger 8 数据库的管理
1. Master数据库以及系统表在系统中的作用(8.4)
Master数据库以及其系统表是整个SQLServer实例的入口。SQLServer实例在启动的时候,要先读取 master数据库中的系统表或者系统视图来识别其他的数据库以及SQLServer实例的系统配置等。其作用相当于Windows操作系统中的注册表。
Master数据库中的sysdatabases表中的信息,存储着整个SQLServer实例的数据库信息,由这个表识别其他数据库,再由用户数据库中类似于sys.filegroups以及sys.database_file的表来识别用户自定义数据库中的内容。就这样一级一级地识别出数据库中的所有对象。
2. 理解Sysobjects系统视图(8.4)
表中的真实数据是存储在数据文件中的,表的定义则存储在主文件组中(表的名称->sys.sysobjects,表的列定义->sys.columns)。故要定义自己的组和文件存放自己定义的表。
Charger 10 实现数据的完整性
1. 使用级联CASCADE (10.7)
级联的语法:
Foreign key
(column[,….n])
References referenced_table_name[(ref_column[ ,….. n])]
[on delete cascade]
[on update cascade]
确保主键和外键一致。
Charger 11 视图
1. 什么是视图(11.2)
视图是虚表,存储时只存储视图的定义,而没有存储对应的数据。视图只在刚打开的瞬间,通过定义从基表中搜集数据,并展示给用户。(可见视图并不能提高查询速度??)
2. 索引视图(11.7)
具有惟一的聚集为索引视图。在视图上创建惟一的聚集索引后,结果集随即被具体化,并保存在数据库的物理存储中,在执行时节省了操作开销。
Charger 12 存储过程
1. 什么是存储过程 (12.2)
存储过程是一套预先编译好的Transact-SQL代码,是SQL语句和可选控制语句的集合及一个独立的数据对象。
动态SQL语句
Charger 15 触发器
1. 什么是触发器(15.2)
触发器是一种特殊的存储过程(预先编译好的SQL语句),可看作表定义的一部分,当用户修改表时,触发器会自动执行,但不能被直接调用。
2. DML触发器
针对insert,update,delete设置的触发器。如果执行触发器过程发生了错误,整个事物会回滚。可分为after和instead of 触发器。
3. DDL触发器
针对create,alter,drop等DDL语言设置的触发器。只有after触发器。
Charger 16 SQL语句
1. 游标
???(看不懂)
Charger 17 索引
索引包含由表或视图中的一列或多列生成的键。这些键存储在B树中,使SQLServer可以快速查找与键值关联的行。
1. 聚簇索引(17.3)
在聚簇索引中,索引树的叶级页包含实际的数据:记录的索引顺序与物理顺序相同。索引的叶节点就是数据节点。每个表只能有一个聚簇索引,因为一个表中的记录只能以一种物理顺序存放。如果表没有聚簇索引,则其数据行存储在一个无序堆中。从建立了聚簇索引的表中取出数据要比建立了非聚簇索引的表快。聚集索引表记录的排列顺序与索引的排列顺序一致,优点是查询速度快,因为一旦具有第一个索引值的纪录被找到,具有连续索引值的记录也一定物理的紧跟其后。聚集索引的缺点是对表进行修改速度较慢,这是为了保持表中的记录的物理顺序与索引的顺序一致,而把记录插入到数据页的相应位置,必须在数据页中进行数据重排,降低了执行速度。
2. 非聚簇索引
在非聚簇索引中,叶级页指向表中的记录:记录的物理顺序与逻辑顺序没有必然的联系。非聚簇索引的叶节点仍然是索引节点,只不过有一个指针指向对应的数据块。非聚簇索引需要大量的硬盘空间和内存。非聚簇索引可以提高从表中 取数据的速度,它也会降低向表中插入和更新数据的速度。
3. 主键索引
在表定义了主键后,相应的会创建一个主键索引。
4. 全文索引
全文索引是基于要索引文本中的各个标记创建倒排、堆积且压缩的索引结构。
注意:不要在一张表上创建大量的索引,索引是一个比较大的对象,会降低查询速度。创建索引时避免包含重复的列。尽量在数值型的列上创建索引,数值的比较、查询速度高于字符串。要经常对索引进行重建。
详见:http://hi.baidu.com/guobeilei/blog/item/51f55afbda311e116c22eb0e.html
Charger 18 锁
实现同步和并发