触发器/视图/游标/索引
1、索引:
a.惟一索引:
create [unique] index idxname on tabname(col….)
特点:
(1)惟一索引可以确保索引列不包含重复的值.
(2)可以用多个列,但是索引可以确保索引列中每个值组合都是唯一的
b.聚集索引:
create clustered index [IX_user_id] on [YH_USER] ([user_id] asc)
特点:
(1)聚集索引的叶节点就是实际的数据页
(2)聚集索引中的排序顺序仅仅表示数据页链在逻辑上是有序的。而不是按照顺序物理的存储在磁盘上
(3)行的物理位置和行在索引中的位置是相同的
(4)每个表只能有一个聚集索引
(5)聚集索引的平均大小大约为表大小的5%左右
c.非聚集索引
create nonclustered index [IX_user_id] on [YH_USER]([user_id] asc)
特点:
(1)非聚集索引的页,不是数据,而是指向数据页的页。
(2)若未指定索引类型,则默认为非聚集索引
(3)叶节点页的次序和表的物理存储次序不同
(4)每个表最多可以有249个非聚集索引
注:索引是不可更改的,想更改必须删除重新建。
2、视图
创建视图:create view viewname as select statement
删除视图:drop view viewname
特点:
视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。
3.触发器
是特定事件出现的时候,自动执行的代码块。类似于存储过程,但是用户不能直接调用他们。
create trigger T_insert_YH_STUDENT on YH_STUDENT for insert as
begin transaction
update STUDENT set stu_num=新学号 where stu_id (select stu_num from inserted)
commit transaction
功能:
1、 允许/限制对表的修改
2、 自动生成派生列,比如自增字段
3、 强制数据一致性
4、 提供审计和日志记录
5、 防止无效的事务处理
6、 启用复杂的业务逻辑
4.游标
是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。
--申明游标
delare CustomerCursor cursor for select acct_no,name,balance FROM customer where province="北京";
--提取数据
open CustomerCursor;
lb_continue=True
ll_total=0
do while lb_continue fetch CustomerCur-sor into:ls_acct_no, :ls_name, :ll_balance;
if sqlca.sqlcode=0 then ll_total+=ll_balance
else lb_continue=false
end if
loop
close CustomerCursor;