什么是数据库程序
数据库是长期存储在计算机中的有组织的、可共享的数据集。数据库程序是管理数据库并对数据进行操作的程序。数据库程序一般可以分为库函数和自定义程序。
数据库是长期存储在计算机中的有组织的、可共享的数据集。数据库中的数据按照一定的数据模型进行组织、描述和存储,冗余较少,数据独立性和可扩展性较高,可以被各种用户共享。数据库程序是管理数据库并对数据进行操作的程序。数据库程序一般可以分为库函数和自定义程序。
介绍
数据库程序是管理数据库并对数据进行操作的程序。数据库程序的设计方向一般与数据库的研究领域有关,不同的领域对实现数据库程序的功能有不同的侧重。数据库编程的步骤和编程类似:(1)确定要解决的问题。根据问题提出的要求,先找出要输入输出的信息。(2)算法设计。选择解决问题的算法,即考虑对数据进行哪些基本操作,以及处理这些操作的合适顺序。(3)框图设计或模块设计。(4)编程。根据选定的算法,用某种语言编写一个完整的程序来实现这个算法。(5)检查调试,这个过程要反复进行,直到程序完全正确为止。(6)编写程序的使用说明书。
范围
目前,数据库研究的范围有以下三个方面。
数据库管理系统软件的开发
数据库管理系统是数据库系统的基础。DBMS的开发包括DBMS本身的开发和一套以DBMS为核心的相关软件系统的开发。开发的目标是扩展功能,提高性能,增加用户的生产力。
数据库设计
数据库设计的主要任务是在DBMS的支持下,为某个部门或组织设计一个结构合理、使用方便、效率高的数据库及其应用系统。主要研究方向包括数据库设计方法、设计工具和设计理论、数据模型和数据建模、计算机辅助数据库设计方法和软件系统、数据库设计规范和标准。
数据库理论
数据库理论的研究主要集中在关系规范化理论、关系数据理论等方面。近年来,随着人工智能与数据库理论的结合和并行计算机的发展,数据库逻辑推理、知识推理和并行算法的理论研究,以及演绎数据库系统、知识库系统和数据仓库的发展,成为新的研究方向。
内置功能
库函数是将一个函数放入库中供他人使用的一种方式。方法是编译一些常用的函数,放在一个文件里,供不同的人调用。使用# include
AVG返回指定组的平均值,忽略空的值。
例如:按prd _ NO2从销售组中选择prd _ no,avg(数量)。count返回指定组中的项目数。
示例:从sales3.max中选择count (prd _ no)返回指定数据的最大值。例如:按prd _ no4从销售组中选择prd _ no,max(数量),min返回指定数据的最小值。
例如:按prd _ no5从销售组中选择prd _ no,min(数量)。sum返回指定数据的总和,只能用于数值列,忽略空的值。例如:按prd _ no6从销售组中选择prd _ no,sum(数量)。COUNT _ big返回指定组中的项目数。与COUNT函数不同,COUNT_BIG返回bigint值,而COUNT返回int值。
例如:从sales7中选择count _ big (prd _ no)。分组会生成一个附加列。当使用CUBE或UPLOG运算符添加行时,输出值为1。当添加的行不是由CUBE或ROLLUP生成时,输出值为0。
例如:从销售组中选择prd _ no,sum(数量),group(prd _ no),按prd _ no滚动8。binary _ checksum返回为表中的行或表达式列表计算的二进制检查值,用于检测表中行的变化。
例如:按prd _ no9从销售组中选择prd _ no,binary _ checksum(数量)。checksum _ agg返回指定数据的校验值,忽略空的值。
例如:按prd _ no10从销售组中选择prd _ no,checksum _ agg(二进制_ checksum (*))。checksum返回在表行或表达式列表上计算的校验值,用于生成哈希索引。
STDEV返回给定表达式中所有值的统计标准差。
示例:从sales12中选择stdev (prd _ no),stdevp返回给定表达式中所有值的填充统计标准偏差。
示例:从sales13中选择stdevp (prd _ no),var返回给定表达式中所有值的统计方差。
示例:从sales14中选择var (prd _ no),varp返回给定表达式中所有值的填充统计方差。
示例:从销售中选择varp(prd_no)。有时,上述聚合函数不能满足我们的数据处理要求。我们还可以定制聚合函数来获得期望的结果。
设计总结
开发一个成功的数据库应用程序,无论大小,都需要几个步骤。需要仔细考虑应用程序的结构,尤其是以下几点:
如何将应用程序数据(通常是面向对象的)映射到关系数据库
如何巧妙处理错误
如何提高性能和可扩展性
一般的数据库应用需要很多不同的SQL语句。因为SQL语句在应用中采用相同的执行模式,所以可以简化许多语句的管理。图1显示了当与关系数据库系统交互时,数据库应用程序是如何准备、执行然后处理SQL语句的。状态图分为11步,其中4步是可选的。
以下是图1所示的每个步骤的详细描述:
1.建立连接:每一个成功的数据库应用的第一步都是建立连接。在这一步中,客户端(即数据库应用程序)实际上连接到数据库,将SQL语句传输到数据库,并将结果返回给客户端。与客户端的物理连接可以通过局域网和广域网建立,即使数据库应用程序和服务器运行在同一台机器上,也可以通过简单的逻辑连接返回给客户端。有关连接建立的更多信息,请参见本章后面的“打开数据库连接”。
2.启动事务(可选):事务启动,以便在更改失败时回滚数据库,或者在更改成功时提交数据库。对于数据库编程接口的事务控制,请参见本章后面的“管理事务”。
3.建立语句对象:大多数高级数据库编程API都采用面向对象的风格,用对象表达SQL语句。通常,应用程序中执行的每条语句都有一个语句对象。语句对象包含执行所需的状态信息,如SQL语句本身和输入参数。
4.将SQL与语句对象相关联:创建语句对象后,需要将SQL语句分配给对象。完成后,可以执行语句对象。
5.绑定输入参数(可选):虽然SQL语句中将参数绑定到占位符的功能不属于ANSI SQL标准,但是本书包含的所有平台都有这个功能。如果SQL语句包含输入参数的占位符,那么语句对象需要与每个输入参数相关的程序变量。如果SQL语句不包含输入参数,您可以跳过这一步。当同一条SQL语句重复执行几次时,输入参数可以提高性能,因为服务器只需要在第一次执行之前解析该语句。使用参数的另一个原因是在SQL语句中嵌入二进制数据,如BLOB数据,如INSERT和UPDATE语句。
6.执行语句对象:用SQL语句成功创建并初始化语句对象后,即可执行该对象。此步骤在数据库服务器上执行SQL语句。
7.处理结果(可选):在数据库服务器返回结果集后,应用程序可以处理结果。此步骤是可选的,因为插入或更新数据的语句通常不需要此步骤。
8.重新执行:如果由于执行失败或输入参数中的数据值不同而需要重复执行同一条语句,应用程序将返回到步骤6。如果应用程序不需要重复执行相同的语句,请继续执行步骤9。
9.执行另一条SQL语句:如果应用程序需要执行不同的SQL语句并重用语句对象,应用程序可以返回步骤4;如果没有,请继续步骤10。
10.结束事务(可选):假设事务在步骤2中开始,现在是提交或回滚事务的时候了。如果事务回滚,语句对象对数据库所做的所有更改都将从数据库中删除。
11.释放资源:在成功执行语句和处理结果之后,需要释放客户机和服务器上的资源供其他应用程序使用。
0条评论