建立索引的目的有以下几点

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

建立索引的目的有以下几点:

(1)加速数据检索

(2)加速连接、ORDER BY和GROUP BY等操作

(3)查询优化器依赖于索引起作用

(4)强制实行的惟一性

在哪些列上建索引主键

通常,检索、存取表是通过主键来进行的。因此,应该考虑在主键上建立索引。

连接中频繁使用的列

用于连接的列若按顺序存放,系统可以很快地执行连接。如外键,除用于实现参照完整性外,还经常用于进行表的连接。

在某一范围内频繁搜索的列和按排序顺序频繁检索的列

根据数据库的功能,在SQL Server 2000中可创建3种类型的索引,

物理位置分:聚集索引,非聚集索引

特殊性分:一般索引、惟一性索引、主键索引。

1.惟一性索引

在表中建立惟一性索引时,组成该索引的字段或字段组合在表中具有惟一值,也就是说,对于表中的任何两行记录来说,索引键的值都是各不相同。

2.主键索引

表中通常有一个字段或一些字段组的合,其值用来惟一标识表中的每一行记录,该字段或字段组合称为表的主键。

3.聚集索引

在聚集索引中,表中各记录的物理顺序与键值的逻辑(索引)顺序相同。只有在表中建立了一个聚集索引后,数据才会按照索引键值指定的顺序存储到表中。由于一个表中的数据只能按照一种顺序来存储,所以在一个表中只能建立一个聚集索引。

视图的作用

视图通常用来集中、简化和自定义每个用户对数据库的不同认识。视图可用作安全机制,方法是允许用户通过视图访问数据,而不授予用户直接访问视图基础表的权限。

(1)简化操作

(2)定制数据

(3)导出数据

(4)安全性

通过视图添加表数据

语法格式:

INSERT INTO 视图名V ALUES(列值1,列值2,列值3,…,列值n)

例7-9 在goods表中建立一个视图,利用视图插入一行数据。

CREATE VIEW goods_view

AS SELECT goods_id, goods_name, classification_id, unit_price, stock_quantity

FROM goods WHERE (classification_id = 'P001')

INSERT INTO goods_view

V ALUES ('G0008','SONY DVD','P002', 400,10)

将视图goods_view中商品号为’G00002’的商品名改为“IBM R61”。

UPDATE goods_view

SET goods_name= ' IBM R61'

WHERE goods_id = ‘G00002’;

若视图定义包含了计算列,该视图的计算列是不可更新的.

尽管视图不一定包含基础表的所有列,但可以通过视图删除基础表的数据行。

例7-10:

delete from goods_view

Where goods_name=‘IBM R51’

若通过视图要删除的数据行不包含在视图定义中,该数据行不能成功删除。例7-10-1 delete from goods_view

Where goods_id='G00004'

若删除语句的条件中指定的列是视图中未包含的列,则无法通过视图删除基表数据行7-10-2 delete from goods_view

Where order_quantity=5

实体完整性,域完整性,参照完整性,用户定义的完整性是怎么实现的

创建雇佣日期规则hire_date_rule。

CREATE RULE hire_date_rule

AS @hire_date>='1980-01-01' and @hire_date<=getdate()

将例8-1创建的规则hire_date_rule绑定到employee表的hire_date列上。

EXEC sp_bindrule hire_date_rule, 'employee.hire_date'

解除例8-6和例8-7绑定在employee表的hire_date列和用户定义数据类型pat_char上的规则。

EXEC sp_unbindrule 'employee.hire_date

EXEC sp_unbindrule ‘pat_char’, 'futureonly‘

删除例8-1和8-2中创建的规则。

DROP RULE sex_rule,hire_date_rule

创建当前日期默认值today_defa。

CREATE DEFAULT today_defa

AS getdate()

查看默认值today_defa。

EXEC sp_helptext today_defa

例8-14 绑定默认值today_defa 到employee表的hire_date列上。

EXEC sp_bindefault today_defa, 'employee.hire_date'

解除默认值today_defa与表employee 的hire_date 列的绑定。

EXEC sp_unbindefault 'employee.hire_date'

删除生日默认值birthday_defa。

DROP DEFAULT birthday_defa

根据商品销售的时间和商品类别来确定销售的商品的数量。

CREATE TABLE g_order

( good_type int,

order_time datetime,

order_num int,

CONSTRAINT g_o_key PRIMARY KEY (good_type, order_time)

ALTER TABLE g_order drop constraint g_o_key

创建一个订货表sell_order1,与例8-18创建的产品表goods1相关联。

CREATE TABLE sell_order1

相关文档
最新文档