现在的位置: 首页 > 综合 > 正文

数据库札记(一)

2014年02月14日 ⁄ 综合 ⁄ 共 1663字 ⁄ 字号 评论关闭

索引和约束可以约束表中能放入什么数据。

表上面的索引提供一种快速查找个别记录的方法。在建立表索引时,可以选择要索引哪个或哪些字段。

索引可以是惟一性的或非惟一性的。惟一性索引用来约束表中能放入什么数据。

索引也可以是群集的或非群集的。这个术语标示数据库表的物理存储顺序。尽管一个表可以有多个索引,但它只能有一个群集索引。

SQL

Server提供了另一种类型的所有,称为“全文所有”。与普通所有不同的是,全文索引存储在一个叫做"编目"的特殊对象中,而普通索引与它们所索引的表
则存储在一起。全文索引并不自动更新,用户需要做一些事情才能使它们发生更新。例如,在服务器上运行一个特殊的所有作业就可以更新它们,也可以将它们配置
成当表发生改变时自动更新。然而,全文索引提供特殊类型的搜索,但这些搜索类型不如普通索引所支持的那些搜索类型那么精确。在普通索引查找记录时,必须精
确地提供索引中已包含的值。在使用全文索引时,可以用一种比较自然的方式进行搜索。

约束(constraint)指的是应用于表数据的规则。


 

允许多个用户修改数据的数据库必须有某种机制来保证那些修改维持一致性。大多数数据库使用锁机制来达到这一目的。

锁定的基本概念:用户有时需要独占地访问一个表,因此服务器为该用户锁定那个表。当用户使用完那个表时,锁被释放,因而重新使那个表中的数据对其他用户是可用的。


定通常分为保守式锁定和开放式锁定。如果使用保守式锁定,当用户一开始修改数据时,锁立即被加上;当用户完全修改完数据时,锁才被释放。这就保证了在第一
个用户修改数据的时候,别的用户都无法修改该数据。另一方面,如果使用开放式锁定,只有当那些修改已全部完成并且数据库准备将其写入到表中时,锁才被加
上。开放式的锁定时间通常比保护式锁的锁定时间短的多。


开放式锁定有可能会引起写入冲突。但大多数数据库能检测到,并允许用户或应用程序开发人员决定他们的修改是否应该覆盖其他用户所做的那些修改。


存储过程可以接受输入值,也可以简单地按名调用(如果它们不需要任何输入值)。存储过程可以不返回信息,返回单个值,或者在输出参数中返回多个值。存储过程甚至可以返回整个虚拟表,从而使之更像视图。事实上,可以编写存储过程来执行以前用于视图的任意一条SQL语句。

SQL

Server在保存存储过程时执行存储过程的语法分析,并用一种最优化的形式保存存储过程。因此,存储过程可以提供一种更有效的执行SQL代码的方法(跟
执行从客户发送来的SQL代码相比)。此外,存储过程还可以按名调用,从而避免了客户必须将所有相关SQL语句都发送到服务器的需要。

存储过程用T-SQL CREATE PROCEDURE语句来创建。存储过程比视图更灵活,可以按一种特定的顺序显示记录,返回多个记录集,甚至执行与记录完全无关的数据库操作(比如启动备份)。


触发器是存储过程的一种特殊类型。它们不是由用户执行,而是在表上发生某些操作时由数据库服务器执行:

每当新记录被插入到表中时,插入触发器运行;

每当现有记录从表中被删除时,删除触发器运行;

每当表中的现有记录被修改时,更新触发器运行。

触发器可以让数据库自动响应用户操作。还可以用做一种更复杂、更灵活的约束形式。约束只限于单个表中的信息,而触发器可以访问整个数据库。SQL Server2005已经超出了传统触发器的范围,并将它们扩充为包含其他操作,比如对数据库或数据库服务器架构的修改。


事件通知是SQL Server2005中的一个新增特性,它们类似于触发器,但实际的通知不执行任何代码。取而代之的是,关于事件的信息被发送给SQL Server Service Broker(BBS)服务,并被放置在另一个进程能够从中读取它的消息队列上。



务可被理解为数据库中一个不可分割的修改单元,每个事务都必须要么被整个完成,要么被整个放弃,不能被部分地完成。事务是通过两个叫做提交与回退的机制来
支持的。SQL Server还支持分布式事务。分布式事务的不同操作在不同的数据库服务器上完成,但这些失去仍必须作为一个单元提交或回退。

抱歉!评论已关闭.