1.数据库应用程序概述
(1)数据库应用程序:建立在DBMS之上,实现对数据库处理的计算机应用程序
(2)数据库应用软件层次结构:表示层【用户交互界面】-->业务逻辑层【功能逻辑组件】-->数据访问层【数据访问组件】-->数据存储层【存储过程、触发器】
2.数据库连接技术
应用程序在访问数据库时,需要与DBMS建立通信连接。由于不同厂商的DBMS提供了不同的数据库访问应用程序接口API。因此,在软件开发过程中,需要使用统一的数据库通信方式来屏蔽不同厂家DBMS的API差异性。
(1)ODBC技术:(OPEN DATABASE CONNECTIVITY 开放数据库互连)微软公司提出的一组对数据库访问的标准API。
(2)JDBC技术:JAVA数据库连接(JAVA DATABASE CONNECTIVITY, JDBC)是一种实现JAVA应用程序与数据接口的行业标准。
3.WEB数据库系统技术
WEB数据库系统是指基于WEB模式的DBMS信息服务,充分发挥DBMS高效的数据存储和管理能力,以WEB浏览器/服务器方式,为用户提供使用简便的数据库应用服务。
(1)ASP.NET数据库技术:与直接由WEB服务器提供的静态HTML不同的是,ASP.NET页面实际上是在服务器上执行以后再产生输出结果。
(2)JSP技术:所有的程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,大大降低了对客户浏览器的要求。
4.游标编程
游标是DBMS系统为应用程序提供的一个数据缓冲区机制,它用于存放SQL语句检索的结果数据集。每个游标区都有一个名字,应用程序语句可从游标区中逐一获取记录,并赋给主变量,交由主语言进一步处理。
游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标总是与一条SQL SELECT语句执行结果相关联。
(1)游标定义
DECLARE 游标名 [INSENSITITV][SCROLL]CURSOR
FOR SELECT语句
[FOR{READ ONLY|UPDATE [OF 列名[,...N]]}]
INSENSITITV:基本表中数据修改对游标不可见
SCROLL:游标可前后移动指针
FOR READ ONLY:指出游标的结果集是只读的,不能修改。
FOR UPDATE[OF 列名[,...N]] :指出游标的结果集是可以被修改的。如果指定OF 列名[,...N]参数,则只允许修改所列出的列。如果在UPDATE中未指定列的列表,则可以更新所有列。
(2)游标基本编程步骤: 1)定义游标 2)打开游标 3)从游标中操作数据 4)关闭游标 5)删除游标
DECLARE 游标名 CURSOR FOR SELECT * FROM 表名;
OPEN 游标名;
FETCH NEXT FROM 游标名 INTO 列名;
CLOSE 游标名;
DEALLOCATE 游标名;
5.存储过程编程
存储过程是一种类似函数/过程的程序,存储在数据库中,由应用程序调用执行。
(1)为什么需要存储过程:
1)加快数据库处理程序的执行
2)减少网络的数据流量
3)提供一种安全机制
4)允许模块化程序设计
5)提高编程的灵活性
(2)存储过程类型:
1)系统存储过程:用来进行系统的各项设定、取得信息和相关管理工作。
2)本地存储过程:用户创建的存储过程是由用户创建并完成某一特定功能的存储过程
3)临时存储过程:分为本地临时存储过程【#只有创建它的用户才能执行它】和全局临时存储过程【##连接到服务器的任何用户都可以执行它,而且不需要特定权限】
4)远程存储过程:位于远程服务器上的存储过程
5)扩展存储过程:用户可以使用外部程序语言编写的存储过程
(3)存储过程定义语句格式
CRREATE PROCEDURE [:NUMBER]
[{@PARAMETER DATA_TYPE}
[ VARYING ] [ =DEFAULT ] [ OUTPUT ]
][,***N]
[WITH
{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION} ]
[ FOR REPLICATION ]
AS < SQL语句块 >[ ...N ]
6.触发器编程
(1)触发器的作用:1)实现复杂的业务规则处理。2)提供更强大的数据完整性、一致性处理机制
(2)触发器类型:BERORE AFTER、INSTEAD OF 分别用于INSERT、UPDATE、DELETE事件。
(3)触发器定义语句格式
CRREATE TRIGGER 触发器名
ON[表|视图]
[ WITH ENCRYPTION]
{ FOR | AFTER | INSTEAD OF }
{ [ INSERT ] [ , ] [ UPDATE ] [,] [DELETE] }
[ WITH APPEND ]
[NOT FOR REPLICATION]
AS
{ <SQL语句块> }