赞
踩
表中各行的物理顺序与键值的逻辑顺序相同
非聚集索引指定表的逻辑顺序
CREATE [UNIQUE][CLUSTERED][NONCLUSTERED] INDEX 索引名称 ON 表名称
FILLFACTOR填充因子:指定一个1-100之间的值,表示索引页填充的百分比
DROP INDEX 表名称,索引名
删除表时,该表的所有索引同时会被删除
创建唯一性索引,保证数据库表中每一行数据的唯一性。
大大加快数据的检索速度,这也是创建索引的最主要原因。
加速表与表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
在使用分组和排序子句进行数据检索时,同样可以减少查询中分组和排序的时间。
5.通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能
创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚集索引,那么需 要的空间就会更大。
3.当对表中的数据进行增加、删除和修改的时候,索引也要动态地维护,降低了数据的维护速度
触发器是一种特殊类型的存储过程,当指定表中的数据发生变化时触发器自动生效。它与表紧密相连,可以看做是表定义的 一部分。触发器不能通过名称被直接调用,更不允许设置参数。在SQL Server中一张表可以有多个触发器。用户可以使用INSERT、UPDATE或DELETE语句对触发器进行设置,也可以对一张表上的特定操作设置多个触发器。触发器可以包含复杂的Transact-SQL语句。不论触发器所进行的操作有多复杂,触发器都只作为一个独立的单元被执行,被看作是一个事务。如果在执行触发器的过程中发生了错误,则整个事务将会自动回滚。
触发器的优点表现在以下几个方面:
触发器自动执行,对表中的数据进行修改后,触发器立即被激活。
为了实现复杂的数据库更新操作,触发器可以调用一个或多个存储过程,甚至可以通过调用外部过程(不是数据库管理 系统本身)完成相应的操作
触发器能够实现比CHECK约束更为复杂的数据完整性约束。在数据库中,为了实现数据完整性约束,可以使用CHECK约 束或触发器。CHECK约束不允许引用其他表中的列来完成检查工作,而触发器可以引用其他表中的列。它更适合在大型数据库管理系统中用来约束数据的完整性
触发器可以检测数据库内的操作,从而取消了数据库未经许可的更新操作,使数据库修改、更新操作更安全,数据库的 运行也更稳定
触发器能够对数据库中的相关表实现级联更改。触发器是基于一个表创建的,但是可以针对多个表进行操作,实现数据 库中相关表的级联更改
6.一个表中可以同时存在3个不同操作的触发器(INSERT、UPDATE和DELETE)
触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂参照完整性和数据的一致性,它能够对数据库中的相关表进行级联修改,提高比CHECK约束更复杂的的数据完整性,并自定义错误消息。触发器的主要作用主要有以下接个方面:
SqlServer包括三种常规类型的触发器:DML触发器、DDL触发器和登录触发器。
1.DML(数据操作语言,Data Manipulation Language)触发器
DML触发器是一些附加在特定表或视图上的操作代码,当数据库服务器中发生数据操作语言事件时执行这些操作。SqlServer中的DML触发器有三种:
当遇到下列情形时,应考虑使用DML触发器:
2.DDL(数据定义语言,Data Definition Language)触发器
DDL触发器是当服务器或者数据库中发生数据定义语言(主要是以create,drop,alter开头的语句)事件时被激活使用,使用DDL触发器可以防止对数据架构进行的某些更改或记录数据中的更改或事件操作。
3.登录触发器
登录触发器将为响应 LOGIN 事件而激发存储过程。与 SQL Server 实例建立用户会话时将引发此事件。登录触发器将在登录的身份验证阶段完成之后且用户会话实际建立之前激发。因此,来自触发器内部且通常将到达用户的所有消息(例如错误消息和来自 PRINT 语句的消息)会传送到 SQL Server 错误日志。如果身份验证失败,将不激发登录触发器。
触发器触发时:
inserted表:
deleted表:
inserted表和deleted表对照:
修改操作记录 | inserted表 | deleted表 |
---|---|---|
增加(insert)记录 | 存放新增的记录 | … |
删除(deleted)记录 | … | 存放被删除的记录 |
修改(update)记录 | 存放更新后的记录 | 存放更新前的记录 |
如果用户要通过数据操作语言(DML)事件编辑数据,则执行DML触发器。DML事件是针对表或视图的INSERT、UPDATE 或DELETE语句
CREATE TRIGGER Cou_Trig
ON Course AFTER INSERT AS
INSERT INTO Teacher VALUES('08','zhangsan')
这个触发器的含义是当Course表在进行INSERT改变时,则自动激活该触发器,自动执行AS之后的语句块
CREATE TRIGGER Cou_TrigDele ON Course
AFTER DELETE AS
DELETE Teacher WHERE Tname='zhangsan'
1.DML触发器是一些附加在特定表或视图上的操作代码,当数据库服务器中发生数据操作语言事件时执行这些操作。
SqlServer中的DML触发器有三种:
insert触发器:向表中插入数据时被触发;
delete触发器:从表中删除数据时被触发;
update触发器:修改表中数据时被触发。
2. DDL(数据定义语言 Language)触发器
DDL触发器是当服务器或者数据库中发生数据定义语言(主要是以create,drop,alter开头的语句)事件时被激活使用,使 用DDL触发器可以防止对数据架构进行的某些更改或记录数据中的更改或事件操作。
3. 登录触发器
登录触发器将为响应 LOGIN 事件而激发存储过程。与 SQL Server 实例建立用户会话时将引发此事件。登录触发器将在登录的身份验证阶段完成之后且用户会话实际建立之前激发。因此,来自触发器内部且通常将到达用户的所有消息(例如错误消息和来自 PRINT 语句的消息)会传送到 SQL Server 错误日志。如果身份验证失败,将不激发登录触发器
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。