SQL 21日自学通(V3.0)(PDF格式)-第58部分
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
早些时候 静态的 SQL 只是一些伪指令 请参阅在你的产品中的关于静态 SQL 的真正语
法
使用 SQL 来编程
到目前为止 我们已经讨论了两种在编程中使用的 SQL 第一种方法来写查询和更新
数据已经在本书的第 12 天中进行了详细的讨论 第二种特点可以在第 3 代或第 4 代编程语
言中使用 显然 如果你想知道该语言和一般的数据库编程知识那么你可以使用第一种语
言 我们已经讨论过了静态 SQL 与动态 SQL 相比的优点和缺点 在第 18 天 PL/SQL 简
介 和第 19 天的 Transcat…SQL 简介 将会包括两种扩充的 SQL 来取代嵌入型 SQL 来完
成在这一部分讨论的相同类型的工作
281
…………………………………………………………Page 282……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
总结
在通用的编程环境如 VISUAL BASIC DELPHI 和 POWERBUILDER 中为数据库编
程人员提供了许多的工具来对数据库进行查询和更新数据库的工作 但是 随着你对数据
库的日益深入 你将会发现在今天讨论的主题中和使用这些工具的优点 不幸的是 有关
于游标 触发机制和存贮过程等概念是在最近的数据库系统中提出的 它们的标准化程序
还不高 但是 基本的使用的理论在几乎所有的数据库系统中都提供了
临时表是一种存在于用户会话过程中的表 这种表是存在于一个特殊的数据库之中 在
SQL SERVER 中称之为 TEMPDB FETCH 语句用以从游标中获得指定的记录或使游标移
向下一个记录 它经常将日期和时间作为其名称的唯一标识 临时表可以存贮查询的结果
以供以后的查询使用 如果多用户在同时在同时创建和使用了临时表 由于在 TEMPDB
中有大量的活动从而会导致系统性能的下降
存贮过程是一种可以将多个 SQL 语句结合在一起作为一个函数的数据库对象 存贮过
程可以接受和返回参数值并且可以被其它的存贮过程调用 该过程是运行于数据库服务器
中并且是经过编译的 使用存贮过程与直接使用 SQL 语句相比可以提高系统的性能
内嵌型SQL 可以将 SQL 代码用于实际编程中 内嵌型SQL 可分为静态 SQL 与动态SQL
两类 静态 SQL 不能是运行时进行修改 而动态 SQL 可以允许一定程序的修改
问与答
问 如果我创建了一个临时表 是否其它的用户可以使用我的表
答 不能 临时表只能由它的创建者使用
问 为什么我必须关闭和释放游标
答 内存仍为游标所占用 既使它的名字不存在了也依然是这样
校练场
1 MICIRSOFT VISUAL C++可以让程序员直接调用 ODBC 的 API 函数 对不对
2 ODBC 的 API 函数只能由 C 语言直接调用 对不对
3 动态 SQL 需要进行预编译 对不对
4 临时表中的#提示符是干什么用的
282
…………………………………………………………Page 283……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
5 在将游标从内存中关闭后必须做什么
6 能不能是 SELECT 语句中使用触发机制
7 如果你在表中创建了触发机制然后你把表删除了 那么触发机制还存在吗
练习
1 创建一个示例数据库应用程序 在今天我们使用了音乐收藏数据库作为示例 并对
应用程序进行合理的数据分组
2 列出你想要在数据库中完成的查询
3 列出你要在维护数据库中需要的各种规则
4 为你在第一步创建的数据库逻辑给创建不同的数据库计划
5 将第二步中的查询转变为存贮过程
6 将第三步中的规则转变为触发机制
7 将第 4 步与第 5 步结合起来 与第 6 步一起生成一个脚本 其中包括所有的与该数
据库相关联的过程
8 插入一些示例数据 这一步可以作为第 7 步生成脚本的一部分
9 执行你所创建的这些过程并检证它的功能
283
…………………………………………………………Page 284……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
第 14 天 动态使用 SQL
目标
今天这一课的目的是把我们到现在为止所学习的付诸于应用 在今天的内容中我们将
学习如何在实际编程中使用 SQL 我们主要讨论在 WINDOWS 下的编程环境 但是编程
的原理也适用于其它的软件平台 在今天之中我们将学习
l 不同的商业产品 — — Personal Oracle 7 开放数据库联接 ODBC InterBase
ISQL MicroSoft Visual C++ 和 BORLAND DELPHI 中 SQL 的差别
l 如何正确的为使用 SQL 来设置你的环境
l 如何使用 ORACLE 7 MicroSoft Query 和 InterBase ISQL 来创建数据库
l 如何在 VISUAL C++和 DELPHI 中使用 SQL
快速入门
这一部分将主要介绍一些在 WINDOWS 操作系统下的商业产品以及它们是如何与 SQL
产生联系的 所涉及的基本原理如果在产品中没有进行特别的说明那么也可以在其它的软
件平台中使用
ODBC
ODBC 是 WINDOWS 操作系统的一种底层技术 它可以让基本 WINDOWS 的程序通
过驱动程序来访问数据库 与每种数据库系统所提供的用户界面不同 你可以用它来将你
所要完成的工作完成的非常好 你可以通过你所选择的驱动来联接进行数据库 ODBC 的
概念与 WINDOWS 的打印机驱动的概念非常相似— — 它可以让你写的程序与具体的打印机
无关 与此相对应的是在 DOS 下你不得不自己来考虑和编写相关的打印机驱动程序 所以
你可以将你更多的精力来投入到你的程序上 而不是写打印驱动
ODBC 将这一思想应用到了数据库上 你可以在 WINDOWS 3。1 3。11 和 95 的控制面
板中找到它 在 WINDOWS NT 中它有着自己的程序组
284
…………………………………………………………Page 285……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
我们将在今天创建数据库的时候讨论更多的关于 ODBC 的细节
Personal Oracle 7
Personal Oracle 7 是近来在 PC 数据库市场上最流行的数据库系统 不必安装 Personal
Oracle 7 的全部程序 我们在前几天中所使用的例子只是用了 ORACLE DATABASE
MANGER 和 SQL*PLUS 3。3 SQL*PLUS 的如下图所示
InterBase SQL ISQL
一些其它的例子所使用的工具是 Borland’s ISQL 它在本质上与 ORACLE7 是相同的
只不过 ORACLE 7 是字符型界面而 ISQL 则更具有 WINDOWS 的风格
在下图中给出了 ISQL 的界面 你可以在上边的编辑框中输入 SQL 语句 结果将会出
现在下边的编辑框中 按向上和向下按钮则可以翻阅你在一次会话中的所有查询
285
…………………………………………………………Page 286……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
Visual C++
关于 Visual C++ 的书有几十本 在本书的例子中我们使用的是它的 1。52 版 我们所使
用的过程可以应用于它的 32 位版的 C++ 2。0 在这里使用它是应用它有一个 ODBC 的简单
界面 它不但具有编译联接到数据库的能力 而且如果你想使用其它的编译器的话 那么
这里将会是一个非常好的出发点
Visual C++提供了不少的工具 我们这里只使用其中的两个 编译器和原代码编辑器
Delphi
我们最后要说的工具是 Borland’s Delphi 它是许多新书中讨论的主题 它为不同的数
据库提供了一个可以升级的界面
我们使用它的两个程序 InterBase Server 和 Windows ISQL WISQL
设置
在进行的足够的介绍以后我们来开始工作 在你安装完你的 SQL 引擎或 ODBC 兼容
的编译器以后 在演员开始使用材料进行工作之前你必须指定舞台 无论是 Oracle 7 还是
InterBase 你都需要进行登录并为你自己设立一个帐号 这一过程在本质上来说是相同的
最困难的工作是为默认的口令分配硬拷贝和在线文档 这两种系统都有默认的系统管理员
账号 见下图
在登录和创建了用户账号以后 我们就可以创建数据库了
286
…………………………………………………………Page 287……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
创建数据库
从这一步开始 我们对 SQL 所学习的将开始得到回报 首先 你需要启动一个你想要
使用的数据库 下图表明 Oracle 7 默认是停止状态的
当你看到绿灯以后 你就可以启动如下图所示的 SQL*PLUS 了
在这里你可以使用 CREATE 和 INSERT 命令来创建表和输入你想使用的数据了 另一
种常用的方法是用脚本来创建表和输入数据 脚本通常是一个包含适当的 SQL 命令集合的
文本文件 请看下边这个用于 Oracle 7 的脚本文件
……………………………………………………………………………………………………………………………………………………………
…Script to build seed database for Personal Oracle
………………………………………………………………………………………………………………………………………………………
…NTES
Called from buildall。sql
…MODIFICATIONS
287
…………………………………………………………Page 288……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
… rs 12/04/94 ment; clean up; resize; for production
……………………………………………………………………………………………………………………………………………………………
startup nomount pfile=%rdbms71%init。ora
… Create database for Windows RDBMS
create database oracle
controlfile reuse
logfile '%oracle_home%dbswdblog1。ora' size 400K reuse;
'%oracle_home%dbswdblog2。ora' size 400K reuse
datafile '%oracle_home%dbswdbsys。ora' size 10M reuse
character set WE8ISO8859P1;
实际的 SQL 语法随着你所使用的数据库的不同而有一些差别 所以你应该看一下你的
随机文档 并在你的 SQL 引擎中选择 文件 〃E 打开 来装入脚本文件
Borland's InterBase 使用相同的方法来装入数据 下边是从一个文件中摘出的插入数据
的片断
/* Add countries。 */
INSERT INTO country (country; currency) VALUES ('USA'; 'Dollar');
INSERT INTO country (country; currency) VALUES ('England'; 'Pound');
INSERT INTO country (country; currency) VALUES ('Canada'; 'CdnDlr');