SQL 21日自学通(V3.0)(PDF格式)-第11部分
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
的执行
流行的 SQL 开发工具
这一部分将介绍一些大众化的 SQL 开发工具 每一种工具都有它的优点和缺点 一些
工具是基于 PC 用户的 强调易用性 而另一些则是为超大型数据库提供的 本部分将向
您介绍选择这些工具的关键所在
注 为了 SQL 在实际中的使用 本书中举出了一些 SQL 在实际开发环境中的应用例
子 SQL 只有出现在你的代码中 为你真正地解决了问题才说明它是有用的
Microsoft Access
在一些应用实例中我们将会举一些 Microsoft Access 的例子 Microsoft Access 是一个
非常容易使用的基于 PC 机的数据库管理系统 在它的下边你既可以手工输入 SQL 语句也
可以使用图形用户界面工具来生成 SQL 语句
Personal Oracle7
我们使用 Personal Oracle7 来向大家演示 SQL 对大型数据库上的命令行使用方法 当
用户对一个数据库或一个操作系统有充分的了解以后 需要在一个孤立的电脑上进行设计
时这种方法是非常重要的 在命令行下 用户可以在 SQL PLUS 工具中输入不同的单的 SQL
语句 该工具可以把数据返回给用户 或是对数据库进行适当的操作
大多数例子是针对初用 SQL 进行程序设计的程序员的 我们从最简单的 SQL 语句开
始并进阶到事务处理阶段 为程序设计做好准备 Oracle 的发行版提供一整套的开发工具
它包括 C++和 Visual Basic 函数库(Oracle Objects for OLE) 通过它可以将应用程序与
ORACLE 个人数据库链接在一起 它也可以为数据库 用户或管理员提供图形工具 同
SQL*Loader 一样 它也经常用于从 Oracle 数据库中导出或引入数据
EMAIL wyhsillypig@163。 26
…………………………………………………………Page 27……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
注 Personal Oracle7 是 Oracle7 server 的不完整版 它只允许单用户操作 就如同它的名字
一样 但它在 SQL 的语法使用与大型 更昂贵的 Oracle 版本是相同的 此外 在 Personal
Oracle7 中所使用的工具也适用于 Oracle 的其他版本
我们选择 Personal7 基于以下原因
l 它几乎用到了本书中将要讨论的所有工具
l 它是可以在几乎全部的平台运行的 风靡世界的关系型数据库管理系统
l 可以从 Oracle 公司的服务器上下载一个它的 90 天限时版。
上图显示了 SQL…PLUS 的一个画面
技巧 注意在本书中所给出的所有 SQL 代码都适用于其它的数据库管理系统 防止在其它
的系统中语法出现大的差别 在本书的例子中指出了它在其它系统中的不同之处
Microsoft Query
Microsoft Query 是 Microsoft 公司的 Visual C++和 Visual Basic 开发工具包中所附带的
一个非常有用的查询工具 它可应用在基于 ODBC 标准下的数据库 该查询工具在将查询
语句提交给数据库之前会将基保留在驱动器上
EMAIL wyhsillypig@163。 27
…………………………………………………………Page 28……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
开放型数据库联接 ODBC
ODBC 是为应用程序接口 API 提供的访问下层数据库所
用的函数库 它通过数据库引擎与数据库交流 就像在 Windows
通过打印驱动程序与打印机通信那样 为了访问数据库 可能还
会需要网络驱动程序与异地数据库通信 ODBC 的结构如右图所
示
ODBC 的特色在于它不是针对任何一种数据库的 举例来说
你可以用相同的代码来在 Microsoft Access 表中或 Informix
database 上运行查询 而无需修改代码或只需做很小的改动 再
提醒您一次 第三方数据库供应商可能会在 SQL 的标准之上对其
进行扩充 比如 Microsof 和 Sybase 的 Transact…SQL 以及 Oracle
的 PL/SQL
当您用一种新型的数据库工作时您应该认真阅读一下它的文档 ODBC 是许多数据库
所支持的一种标准 包括 Visual Basic Visual C++ FoxPro Borland Delphi 和 PowerBuilder
基于 ODBC 所开发的应用程序有着明显的优势 因为它允许你在编写代码的时候不必考虑
是为哪一个数据库所写的 当然 它的运行速度要弱于特定的数据库代码 也就是说在使
用 ODBC 的时候其灵活性更强但比起使用 Oracle7 或 Sybase 的函数库时要慢
EMAIL wyhsillypig@163。 28
…………………………………………………………Page 29……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
SQL 在编程中的应用
SQL 的最初标准是 ANSI…1986 而在 ANSI…1989 中定义的 SQL 在应用程序中的三种
接口类型
l 模块语句 — — 在程序中使用过程 该过程可以通过主调参数向主调函数返回值
l 内嵌 SQL — — 可以在编写程序的过程中内嵌 SQL 语句 该方式在经常需要对 SQL
语句进行预编译处理时所需要 在 Pascal FORTRAN COBOL PL/1 中均定义
了这样的子句
l 直接调用— — 由程序直接实现
在动态 SQL 发展以前 内嵌 SQL 在编程中应用最为流行 这种方法在今天也仍然在
使用 由于静态的 SQL — — 它的意思就是 SQL 语句已经被编译在了应用程序之中 不能在
运行的过程中改变 这与编译程序同解释程序的区别类似 也就是说这种类型的 SQL 速度
很快 但是灵活性很差 这在今天的商业应用领域是不适宜的 动态 SQL 这里就不多说了
ANSI…92 标准将 SQL 语言标准扩展为一种国际化的标准 它定义了 SQL 的三种编译
级别 登录调用 内嵌子句和完全编译 主要的新特性如下
l 联接到数据库
l 移动游标
l 动态 SQL
l 外连接
本书除了这些扩展以外还包括了第三方数据库供应商所提供的扩展 动态 SQL 允许你
在运行时修改 SQL 语句 但是它的速度要比内嵌型 SQL 慢 它在调用级接口上为应用程
序开发人员提供了相当大的灵活性 ODBC 或 Sybase 的 DB…Library 就是动态 SQL 的例子
调用级接口对于编程人员来说不是一个新概念 当您在使用 ODBC 时 举例来说 你
需要在 SQL 语句提交给数据库时修改子句中的变量参数而使用该功能 在设计阶段可以通
过使用其它的函数调用接收错误信息或结果 结果是以数据包的形式返回的
摘要
在第一天介绍了 SQL 的历史 由于 SQL 与关系型数据库是紧密结合的 所以第一天也简
要地介绍了关系型数据库的历史和它的功能 明天我们将讲述 SQL 中最为常用的功能— —
查询
EMAIL wyhsillypig@163。 29
…………………………………………………………Page 30……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
问与答
问 为什么我要了解 SQL
答 到现在为止 如果你不知道如何利用大型数据库来进行工作 如果你要使用客户机/ 服
务器型应用程序开发平台 如 Visual Basic Visual C++ ODBC Delphi 和
PowerBuilder 以及一些已经移植到 PC 平台上的大型数据库系统 如 Oracle 和
Sybase 来进行开发工作 那么你只有学习 SQL 的知识 在今天大多数的商用程序开
发都需要你了解 SQL
问 在学习 SQL 时我为什么要了解关系型数据库系统
答 SQL 在为关系型数据库系统开发的 不知道点关系型数据库系统的知识你就无法有效
地使用 SQL
问 在 GUI 图形用户界面工具下我只需按按钮就可以写出 SQL 语句 为什么我还需要学
习手工写 SQL
答 GUI 有 GUI 的方法 手工有手工的方法 一般说来手工写出来的 SQL 比 GUI 写出来
的更有效率 GUI 的 SQL 语句没有手工写出的易读 而且如果你知道如何用手工来写
SQL 的话那么你在使用 GUI 时就会有更高的效率
问 既然 SQL 是一种标准化语言 那是不是说我可以用它在任何数据库下进行编程
答 不是 你只能将它用于支持 SQL 的关系型数据库系统 如 MS…Access Oracle Sybase
和 Informix 尽管不同的系统在执行时有所差别 但是你只需要对你的 SQL 语句进行
很小的调整
校练场
在校练场里我们提出了一些问题以帮助你巩固自己所学 这些练习可以提高你在学习中
的经验 请试着回答和练习附录五 问答与练习 中的内容
1 为什么说 SQL 是一种非过程型语言
2 我如何知道一种数据库系统是不艺机是关系型数据库系统
3 我可以用 SQL 来做什么
4 把数据清楚地分成一个个唯一集的过程叫什么名字
EMAIL wyhsillypig@163。 30
…………………………………………………………Page 31……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
练习
确认一下你所使用的数据库系统是否是一个关系型数据库系统
EMAIL wyhsillypig@163。 31
…………………………………………………………Page 32……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
第二天 查询 — — SELECT 语句的使用
目标
欢迎来到第二天 在今天你将学习到以下内容
l 如何写 SQL 的查询
l 将表中所有的行选择和列出
l 选择和列出表中的选定列
l 选择和列出多个表中的选定列
背景
在第一天中我们简要地介绍了关系型数据库系统所具有的强大功能 在对 SQL 进行了
简要的介绍中我们知道了如何同它进行交流 最终 我们将会与计算机用一种非常清楚
果断的话说 给我看一下所有在本公司中工作十年以上 左撇子 蓝眼睛的外国人 如
果你能够这样做 与计算机交流 而不是查他们的档案 每一个人都可以用他自己的方法
来达到目的 但是你却是用 SQL 的一种重要功能— — 查询来达到目的
在第一天中我们说过 查询一词用在 SQL 中并不是很恰当 在 SQL 中查询除了向数
据库提出问题之外还可以实现下面的功能
l 建立或删除一个表
l 插入 修改 或删除一个行或列
l 用一个特定的命令从几个表中查找所需要的信息并返回
l 改变信息的安全性
SQL 的查询当然也能进行一般的查询工作 在学会使用这个有用的工具之前 我们来
学习如何写 SQL 的查询语句
一般的语法规则
正如你所看到的那样 SQL 有很高的灵活性 尽管在任何程序中都有一定的规则限制
EMAIL wyhsillypig@163。 32
…………………………………………………………Page 33……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
下而有一个 SQL 中 SELECT 语句使用的简单例子 请注意 在每个 SQL 语句的关键字都
是大写的 并且用空格将他们划分出来
SELECT NAME STARTTERM ENDTERM
FROM PRESIDENTS
WHERE NAME LINCOLN
在这个例子中每一个字母都是大写的 但是这不是必需的 上边的查询语句完全可以
写成这样
select