第19章 Delphi的SQL的程序设计.doc
文本预览下载声明
第19章 Delphi的SQL的程序设计
在Delphi程序设计中,SQL编程是非常强大的一个方面。SQL指的是结构化查询语言。SQL的大部分实现都与该语言的某个特定定义相关。例如,许多数据库的SQL服务器支持ANSI-92 SQL定义。ANSI(美国国家标准局)由许多公司和个人组成,其既定兴趣是进行标准化。您所使用的SQL语言的语法依赖于所用的特定数据库。
这里您可能会问,为什么需要SQL,能否只用Delphi?答案是可能两个都需要。如果建立数据库应用程序,当然需要使用Delphi控件(与Delphi专业版和企业版一同发布),如TTable、TDatabase、或TClientDataSet来管理数据库中的数据,但确实有些操作使用SQL更为容易。对于使用SQL相对简单的情况,您可以使用TQuery等组件将SQL语句发送到数据库服务器。
例如,假定您有一个关于职员的数据库。进一步假定您非常高兴,要给所有的职员都加薪百分之十。您可以编写Delphi代码打开包含薪水的表,并逐个职员增加薪水。或者,您可以编写一个SQL语句来完成该工作。有些数据库服务器(服务器程序),像SQL Server、Oracle、或Interbase Server可以在较为健壮的服务器(硬件服务器)上运行,因此请求可以在硬件服务器上处理。最后结果是:更新操作可以在较为快速、健壮的服务器上运行,而无须用大量的数据阻塞网络。如果网络是内部网、Internet或外部网,两种处理方法的响应速度会有很大的差别。
这意味着,如果您开发数据库应用程序时不使用SQL,那么您和您的程序将处于非常不利的地位。不要担心。本章将示范SQL语言的一般形式,以及如何在Delphi中使用它。本章中的SQL语言与ANSI-92 SQL标准密切相关,可以在大多数SQL服务器上工作。本章中的一些较为高级的特征可能需要根据实际使用的数据库进行微小的改动。另外,本书的CD-ROM中包含了一个基本的SQL Builder工具,您可以使用SQL Builder为程序定义并测试SQL语句。
19.1 结构化查询语言
结构化查询语言包括很多语言,都使用SQL的名字。对于当前的ANSI标准,每个厂商都支持不同的兼容级别。例如,Oracle包括PL/SQL,它支持过程调用和参数传递,而Microsoft也提供了自己的版本,称为T-SQL。另外还有几种基本SQL的派生语言,但所有的语言在本质上都具有相当基本的语法、数目适当的关键字、以及对数据处理的一般性支持。
基本的SQL支持在数据库中选择、插入、更新和删除记录。用得不那么频繁,但同样重要的操作是创建与删除表。有些产品如SQL Server 2000、Access或Oracle提供了可视化的数据库建立工具,方便了数据库的管理。更好的选择是CASE工具,如DataArchitect和ERwin,这些工具提供与数据库之间的双向工程能力(双向工程是指创建数据库并通过检查数据库将数据库结构读回到CASE工具的能力。对于设计和建立数据库程序来说,CASE工具是必不可少的)。
本章示范了SQL语言的基本用法,其中包括最常用的一些命令,工具通常使用这些命令来完成工作。我们就从四个最基本的SQL命令开始。
19.2 SQL编程
数据库管理的最常见的任务包括数据的添加、删除和更新。如同26个字符的英文字母表一样令人迷惑,从这些支持基本任务的命令中可以演化出各种表达力非常强的语句。本节我们从最简单的例子开始,包括SELECT、INSERT、UPDATE和DELETE语句。如果您已经熟悉了基本的SQL语法,可以跳到下一节,其中示范了这些语句的一些高级用法。
当学习这些例子时,请记住,您需要利用工具对命令进行编辑并将其发送到数据库。可以使用与Delphi一同发布的SQL Explorer(或Database Explorer)、Database Desktop或本书CD-ROM上的SQL Builder示例程序。
19.2.1 SELECT语句
SELECT语句用于以行为单位从一个或多个表获取数据。现在,我们把注意力集中到单表的select语句上。基本的select语句的规范形式如下。
注意:按照惯例,SQL的关键字通常是大写的。如果SQL语句比较复杂,看起来可能有些令人生厌。要选定一种风格并坚持之,一致性可以使得代码看起来从容而谨慎。
SELECT fieldslist FROM tablename
语句以关键字SELECT开始。fieldslist可以是逗号分隔的字段名列表,或星号(*),后者意味着任意或所有。FROM子句表示了包含字段的表的名字。
这里引入了一些新的术语。我们将稍停一下来介绍这些术语。单个的表在逻辑上与由行和列组成的电子表格非常相似。在电子表格中行列的交
显示全部