会员登录 - 用户注册 - 网站地图 Office中国(office-cn.net),专业Office论坛
当前位置:主页 > 技巧 > Access技巧 > DAO/ADO/ADP > 正文

SQL SERVER基本概念学习印象

时间:2004-01-01 21:31 来源:Access爱好者 作者:李寻欢『… 阅读:

没学SQL SERVER之前,我曾想过把自已以前做的一些管理程序升级成ADP,但一看到什么存储过程、视图、触发器之类的东西就头大,然后一直使用的查询也不知道怎么建,实在是很头痛。其实这些东西并没想象中的难以接受及难学,下面我就把自已对于存储过程、视图、触发器还有游标的理解整理一下写出来,就当是温习功课吧,因为过几天要考试了,由于初学,有不对的地方,请各位批评指正。

 视图:视图就是MDB中的查询,你在mdb中做的查询,在adp中转成视图就行了,用法是一样的,就是把它当成表来用。

 ★视图是由查询定义的虚表。
 ★视图在物理上并不存在,它只是数据库中数据值的存储集合。
 ★视图与表十分相似,包含若干列和行。可以进行选择、更新和删除操作。但对视图修改有限制。
 ★使用视图的好处在于,可以控制用户可查看的数据,从而提供了数据的安全性。

 存储过程:单独的SQL语句相信大家都用过,过程相信大家也都用过,比如一个按钮的单击事件,事件里的语句就是一个过程,可以在过程里声明变量,以及用流程控制语句改变程序语句的执行顺序。如果单独的SQL语句及普通的过程大家都会用,那存储过程也就没问题了,因为存储过程是单条或多条SQL语句的组合,并可声明变量,可接收、传出变量(参数),也可用流程控制语句改变SQL语句的执行顺序。

 ★存储过程提供了比个别SQL语句更多的优点:
 ★更快速地执行:第一次执行时编译,以后可以直接执行。
 ★本地和远程执行。
 ★模块化编程方式(重复使用)。
 ★把大的程序分成小的可以独立运作的存储过程,以后可以在需要的地方调用
 ★增强的可靠性:可以利用return返回值来检查执行的情况
 ★一致性。把复杂的操作写成存储过程,在需要时调用,可以避免用户不小心的操作错误。多次使用都一样
 ★安全性。只要可以执行存储过程,则可以通过存储过程访问无权限访问的数据。

          触发器:触发器可以说是表的事件,它对表的某类操作(插入、更新或删除操作)做出反应。

触发器是相当有用的东西,我举一个应用的例子。
仓库管理系统中的两个表:入库明细表、物料表,每当入库明细表新增一条记录,物料表中的“当前库存”字段也要加上相应的数量,这个时候就可用触发器来完成,每当插入记录时,就触发一个过程来完成更改“当前库存”字段的任务。
 ★触发器是在对表执行插入、更新或删除操作时,作为响应而执行的过程。
 ★当执行上述任何一项操作时,就会自动启动触发器。
 ★触发器通常用于强制执行业务规则。从而保证数据的完整性和一致性。
 ★应使触发器和表的INSERT、UPDATE或DELETE操作相关联。当完成操作语句时,自动执行触发器。
 ★更改数据时可调用触发器,根据触发器的类型决定:
 允许或禁止更改数据
 调用业务规则(保证数据有效的规则)
 在整个数据库内级联更新和级联删除

游标:

DAO或ADO的记录集大家都用过吧,重温一下使用记录集的步骤:
1、声明记录集,并从记录源中获取记录集
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String
Set cn = CurrentProject.Connection
sql = "select * from 表1"

2、打开记录集
rs.Open sql, cn, adOpenKeyset, adLockPessimistic, 1

3、在记录集中读取记录
Do While Not rs.EOF
Debug.Print rs.Fields(1)
rs.MoveNext
Loop

4、关闭记录集及连接
rs.Close
cn.Close

5、释放连接
Set cn = Nothing

下面是游标的使用示例:
1、声明游标,并获取游标所需记录集
declare OrderQty cursor static
for select orderno,sum(Qty) from OrderDetails group by orderNO
declare @v_qty smallint,@v_orderno varchar(10)

2、打开游标
open OrderQty

3、在游标中读取记录
fetch next from OrderQty into @v_orderno,@v_qty
while (@@fetch_status=0)
 begin
    if @v_qty<25
        print 'Order number'+@v_orderno+' has a low order quantity'
    else
        print 'Order number'+@v_orderno+' has a low order quantity'
        fetch next from OrderQty into @v_orderno,@v_qty
 end

4、关闭游标
close OrderQty

5、释放游标所点用资源
deallocate OrderQty

看了上面的对比之后是不是觉得游标很象DAO或ADO中的记录集呢,只是某些语法不太一样而已,如果你会使用记录集,只需最多半天时间就可学会使用游标。

 ★游标(Cursor)可以看成是一个用来保存“记录集”的对象,记录可以逐条从游标中读取。
 ★SQL Server支持在服务器上定义和存储游标,这些游标称为服务器端游标。
 ★服务器维护着构成游标的整个记录集。游标通常从存储过程或触发器中调用。
 ★游标两种特性:处理特性和功能特性。
 


 

(责任编辑:admin)

顶一下
(1)
100%
踩一下
(0)
0%
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价: