按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
用 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 name startterm endterm
from presidents
where name LINCOLN
注意 LINCOLN 在这里仍然是大写的 尽管 SQL 语句对大小写并不敏感 但在数据
库中的数据却是大小写敏感的 举例来说 许多公司在储存数据时用大写字母 在这种情
况下 所有的字段名也将是大写字母 那么在检索条件为 name='Lincoln' 的数据时将不会得
到任何结果 这种情况在每个实例应用中都会遇到
注意 在 SQL 语句中大小写是不敏感的
现在我们来看另一个例子 在这个例子中的空格有问题吗 不是 这个语句完全可以
正常执行
Select name startterm endterm from presidents where name='LINCOLN'
但是 如果你注意在你的语句中使用空格和大写字母会增强语句的可读性 当它变成
你的工程 编程 的一部分时会更便于维护
另一个重要的特性是分号 当在 SQL 语句中出现分号就意味着本条语句已经结束
为什么在格式中大小写是不重要的 原因何在 答案是 — — 关键字 关键字是 SQL 语
法中的保留字 在 SQL 语句中 关键字是可选择的 但其内容有强制性 在本例中的关键
字有
SELECT
FORM
WHERE
看一下目录 你会找到需要在其它几天中学习的关键字
EMAIL wyhsillypig@163。 33
…………………………………………………………Page 34……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
数据报的形成 — — SELECT 和 FROM
随着对 SQL 的了解 你会发现你键入的 SELCT 和 FROM 在远远多于其它的关键字
它不像 CREATE 那样迷人或像 DROP 那样残忍 但是如果你在同计算机会话并需要计算机
返回结果时它们却是必不可少的 这与最初选择何种数据库没有关系
我们先从 SELECT 开始讨论 因为 SELECT 是在 SQL 中使用最为频繁的语句
语法
SELECT
没有其它的语句可以比 SELECT 语句更简单了 但是 SELECT 语句不从独立工作 如
果你只是键入了 SELECT 语句