没有合适的资源?快使用搜索试试~ 我知道了~
Delphi的SQL的程序设计.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 199 浏览量
2022-07-14
00:27:24
上传
评论
收藏 198KB PDF 举报
温馨提示
试读
11页
Delphi的SQL的程序设计.pdf
资源详情
资源评论
资源推荐
第 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
第 19 章 Delphi 的 SQL 的程序设计 487
一同发布的 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 子句表示了包含字段的表的名字。
这里引入了一些新的术语。我们将稍停一下来介绍这些术语。单个的表在逻辑上与由行和列组成的电
子表格非常相似。在电子表格中行列的交称之为表元。在数据库用语中,术语“行”与电子表格中的行意
义大致相同。电子表格中的术语列和表元合并为数据库中的字段。数据库中单个表的定义由其所有字段的
定义组成,包括字段名、字段类型、字段大小等信息。当表中含有数据时,单个记录可称之为行。数据库
由一个或多个表组成。
在任何时候, SELECT 语句都可以用于获取数据库中一个或多个表的某些或全部行。字段列表由数据
源表中的某些字段名组成。这里有几个 SELECT 语句的基本例子。
提示: 这些查询是相对于 \Program Files\Common Files\BorlandShared\Data 目录定义的,
该目录在 Delphi 安装时创建。在本书的 CD-ROM上可以找到存储为文本文件的 SQL语句。
SELECT * FROM BIOLIFE // biolife.sql
SELECT WEIGHT, "SIZE" FROM ANIMALS.DBF // animals.sql
SELECT CustNo As Customer FROM ORDERS // customer.sql
SELECT O.CustNo As Customer FROM ORDERS O // customer2.sql
(忽略 SQL 语句末尾的 Pascal 风格的注释。这些只是用于方便在 CD-ROM 上查找相应的文件。 )第
一个语句读作“选择 Biolife 表中的所有字段” 。该表实际上是 Paradox 表,即 biolife.db 文件,可以在前面
提到过的示例数据库目录下找到。下一个语句只选择了两个字段: weight 和 size。而 size 是关键字。为避
免这个问题, 我们使用引号把 size 括起来, 使得可以将其作为字段处理。 还可以注意到 animals.sql 中的 sql
语句对表名使用了文件扩展名。在 Paradox 和 dBase 数据库中,表存储在单独的文件中。如果表只是整个
数据库文件的一部分, 则不能使用文件扩展名, 例如 Access 中的 .MDB 文件。customer.sql 示范了字段别名。
假定您不需要返回实际的字段名,而只需要具有良好格式的字段名,那么可以使用 As 子句来创建字段的
别名。第四个例子创建了 ORDERS 表的别名 O。当在 SQL 语句中有多个表(这里并未演示)的时候,创
建表的别名是很有用的。
可按照下列步骤,试一试下面的例子。
1.运行 Database Desktop。
2.在 Database Desktop 中,选择 SQL | Select Alias 菜单项,指向 DBDEMOS 别名(如图 19.1 所示)。
图 19.1 选择 DBDEMOS 别名,以指向示例文件
3.选择 File | New | SQL File 菜单项打开一个空白编辑窗口,然后选一个上面所示的 SELECT 语句键
第 19 章 Delphi 的 SQL 的程序设计 488
入。
4.选择 SQL | Run SQL 菜单项(或单击带有闪电符号的工具栏按钮)来运行查询。
如果一切工作正常,可以看到一个 ANSWER.DB 表(见图 19.2),其中包含了 SQL 语句的结果集合。
这里新引入的概念是别名的思想。数据库可能位于其他的物理计算机上、跨越网络、也可能像示例表
那样位于本地。别名是由 Datasource Administrator 或 BDE Administrator 管理的(创建别名的详细信息,可
以参考第 13 章中关于打开数据库连接的有关章节) 。
SELECT 语句可能相当复杂, 可以对结果集进行精确的控制。 在本章稍后关于高级 SQL 编程的部分中,
我们将继续讨论 SELECT 语句。现在我们开始学习 DELETE 语句。
图 19.2 由 customer2.sql 语句所生成的结果集合。可以注意到
字段别名 Customer 位于 ANSWER.DB 表中列的顶部
19.2.2 DELETE
DELETE 语句非常简单。 DELETE FROM tablename 将删除 tablename 表中所有的行。更常见的情况需
要删除数据的特定行。对这种情况,添加 WHERE 子句即可。这里有几个 DELETE 语句。在运行这些语句
之前最好对表进行一下备份,但如果偶然删除了表,总可以从 Delphi 光盘上恢复。
DELETE FROM BIOLIFE // del_biolife.sql
DELETE FROM ANIMALS.DBF // del_animals.sql
提示: 在 Database Desktop 中工作时, DELETE和 INSERT语句会创建 deleted
.db 和 inserted.db 表,可用于恢复所进行的删除和插入。 请记住,每次运行 INSERT或 DELETE
语句时,或者退出 Database Desktop ,临时的 inserted.db 和 deleted.db 总会被覆盖。
前面提到过, SQL 语言的基本语法是非常强大而直接的。还有什么会比删除所有的行更为强大呢?但
上面的 SQL 语句并不删除表,它只删除所有的行。
19.2.3 INSERT
INSERT 语句更为复杂。 它用于向表添加行。 INSERT 语句可用于向所有的字段添加值, 也可以只对某
些字段添加值,这依赖于具体使用的 INSERT 语句。由于这个原因, INSERT 语句需要表名、字段列表以
及与每个字段相匹配的值。
INSERT INTO "ANIMALS.DBF" VALUES("Turtle", 7, 5, "Wetlands", NULL)
INSERT INTO ":DBDEMOS:animals.dbf"
(NAME, ":DBDEMOS:animals.dbf"."SIZE", WEIGHT, AREA)
VALUES('Turtle', 7.0, 5.0, 'Swamps')
提示: 一个好习惯是避免将关键字作为字段名。
剩余10页未读,继续阅读
lxc15005035395
- 粉丝: 0
- 资源: 7万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0