友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
富士康小说网 返回本书目录 加入书签 我的书架 我的书签 TXT全本下载 『收藏到我的浏览器』

SQL 21日自学通(V3.0)(PDF格式)-第7部分

快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!





再重要    编程人员只需存储下一个文件的指针就可以实现对下一个文件的访问                        而且数据 



的添加和删除操作也变得非常容易  可是不同组的信息想要联合为一个新组就变得困难了 



这是因为在这种方式下数据在磁盘上的存储格式不能在数据库建立以后再强制性地改变 



如果需要这样做那就必须重新建立一个数据库结构 



   Codd's 的关系型数据库思想借用的逻辑代数的思想               使得数据的子集与父级之间具有 



平等的地位 



    由于信息可以很自然地组织在不同的表格中  Dr。  Codd           也以这种方式来组织他所提出 



的数据库  在关系模式下  数据被存入类似于表格的结构中                   这种表格由独立的数据元组 



  被称为列或字段       所组合而成     一组数据信息被存储为一行  举例来说             创建一个包括 



雇员内容的关系型数据库  我们可以很容易地从雇员表开始                    而像这样的表在很容易得到 



的  该表中包含有如下信息  姓名           年龄   职业   这三项数据用作雇员表的字段  整个表 



如下图所示 



              姓名               年龄     职业 



              Will    Williams 25     Electrical    Engineer 



              Dave    Davidson 34     Museum    Curator 



              Jan    Janis     42     Chef 



              Bill    Jackson  19     Student 



              Don      DeMarco 32     Game    programmer 



EMAIL wyhsillypig@163。                                         21 


…………………………………………………………Page 22……………………………………………………………

SQL 21  日自学通(V1。0)                                         翻译人   笨猪 



              Becky      Boudreaux 25 Model 



   在这个表中有六行记录          为了从中找到特定的记录          举例来说  Dave    Davidson 用 



户可以望知数据库管理系统在数据库中检索满足条件  姓名=  Dave    Davidson               的记录 



如果数据库管理系统已经检索过了全部的数据  那么                 它将会把满足条件的的姓名          年龄 



职业三项的记录返回给用户          SQL  会通知 DBMS   找什么样的数据       这一检索过程的 SQL 



例句如下 



    SELECT    *    FROM    EMPLOYEE 



   在这里不要刻意去记它的语句           我们在明天将会对它进行更为详细的讨论 



    由于通过明显的关系可以特不同的数据项归结在一起                    比如雇员的姓名和雇员的年 



龄   所以关系性数据库管理系统对如何来描述数据之间的关系给出了相当大的弹性                          通过 



精确的的连接和联合运算  关系型数据库管理系统可以非常迅速地从不同的表中将所需要 



的数据联合     见联合运算图  然后返回给用户或程序              这种联合的特性允许数据库的设计 



者将数据信息存储在不同的表中以减少数据的冗余度 



   右图则反映了相交运算  相交运算地意思就是取出两个或多个库所共有的部分 



     表 A           表 B             表A        表B 

                                       相交运算 

          联合运算 



   这里有一个简单的例子来显示数据是如何进行逻辑处理的  表 1…2  是一个被称为                       报 



告   的表  它的里边有两个字段         姓名和工作 



               Name            Duties 



          Becky Boudreaux Smile 



          Becky Boudreaux Walk 



          Bill Jackson    Study 



          Bill Jackson    Interview for jobs 



   在雇员数据库中的年龄和职业字段在每一个记录中均出现重复是不合适的                          而且随着 



时间的进行     这些冗余的数据将会占用大量的磁盘空间且使得数据库管理系统在检索数据 



EMAIL wyhsillypig@163。                                         22 


…………………………………………………………Page 23……………………………………………………………

SQL 21  日自学通(V1。0)                                翻译人  笨猪 



所耗用的时间增多     可是   如果你将姓名和工作另存到一个名字叫         报告   的库中以后 



你就可以通过联合操作将 报告 与 雇员 通过姓名字段进行联合操作 也就是通知 RDBMS 



将  报告  与  雇员   库中姓名与 Becky  Boudreaux 相同的记录显示出来  其结果将如下 



所示 



           Name            Age Occupation   Duties 



           Becky Boudreaux 25  Model    Smile 



           Becky Boudreaux 25  Model      Walk 



   关于联合运算的详细讲述将在第 6 天的  库的联合         中讲述 



设计数据库的结构 



   在数据库的设计师已经决定了系统的硬件平台和 RDBMS          系统以后  余下事情中最为 



重要的就是如何来设计数据库的结构了          数据库的结构将会影响到是后运行于该库上的应 



用程序的性能  这个决定数据库的分配情况及联合运算的过程称之为标准化 



数据库的前景 



   电脑技术将对今天世办上的商业产生深远的影响            鼠标只要点一下就可以将数据入库 



或对其进行访问  制造商的国外订货单可以立即接受并执行            尽管在 20  年以前信息的交换 



还需要大型机的支持      而办公领域处理事务也仍在采用批处理的方式          要完成某一个查询 



用户需要将需求提交给服务器上的信息管理系统  MIS           给果将会以最快的速度返回给用 



户  尽管经常不是足够快 



   此外  随着关系型数据库模型的发展  有两种技术被引用到了在今天被称为服务器/ 客 



户机的数据库系统当中  第一项技术就是个人电脑           廉价而又易用的应用程序如 Lotus1…2



3 和 WordPerfect  允许员工  或家庭用户  可以建立文档来快速而准确地处理数据      用户也 



会经常升级他们的系统以使其速度更快         巧的是这时的系统的价格却在迅速下跌 



   第二项技术则是局域网的发展        它导致的世界范围内的办公交叉 — — 虽然用户习惯于 



采用终端同主机相连      在今天   一个字处理文档可以存储在本地而被任何连接到网络上的 



电脑访问  然后苹果的 Macintosh 电脑为大家提供了一个友好易用的图形用户界面  使得 



电脑变得物美价廉  此外  他们可以访问远程站点          并从服务器上下传大量的数据 



   在这个飞速发展的时期  一种新型的叫作服务器/客户机的系统诞生了              这种系统的处 



EMAIL wyhsillypig@163。                               23 


…………………………………………………………Page 24……………………………………………………………

SQL 21  日自学通(V1。0)                              翻译人 笨猪 



理过程被分解上了客户机和数据服务器上         新型的应用程序取代了基于主机的应用程序 



这一体系有着相当多的优点 



   l  降低了维护费用 



   l  减轻的网路负荷    处理过程在服务器上和客户机上均有 



   l  多个操作系统可以基于相同了网络协议来共同工作 



   l  本地化的数据操作提高了数据的完整性 



对于什么是客户机/服务器型电脑系统  Bernard H。 Boar  的定义如下 



    客房机/服务器系统就是把单一的任务分解到多个处理器上进行协同处理; 就像在单个 



    处理器上运行时一样  一个完备的客户机/服务器系统可以将多个处理器捆绑在一起 



    以提供一个单一系统虚拟环境  共享的资源可以被位于远端的客户机通过特殊的服 



    务来访问   这种结构可以逐级递归     所以一级服务器可以在最后转变为客户机进需 



    要求其他的服务器提供服务      就这样一直下去 



   这种类型的应用程序在设计时需要全新的程序设计技巧  今天的用户界面都是图形用 



户界面   不论是微软的 WINDOWS  苹果的 MACINTOSH IBM  的 OS/2 还是 UNIX  的 X



windows 系统均是如此  用过使用 SQL  和网络  应用程序就可以访问位于远端服务器上的 



数据库  个人电脑处理能力的提高可以对存放在一系统相关的服务器的数据库作出评定 



而这此服务器是可以更换的      而应用程序则只需做出较少的改动甚至无需改动 



交互式语言 



   本书在许多场合下可以借用 BASIC 的概念 举例来说 Microsoft Access 是基于windows 



的单用房应用程序而 SQL  SEVER 则可以允许 100 个用户同时工作    SQL  的最大优越性在 



于它是一种真正的跨平台的交互式语言        由于它可以被程序员在第四代的编程语言中调用 



第四代编程语言可以做用少量的代码做大量的工作 



易于实现 



   ORACLE 公司是第一个发行基本于 SQL 的关系型数据库管理系统  RDBMS      的公司 



虽然它是为 VAX/VMS 系统开发的  ORACLE  公司也是 DOS 下的关系型数据库的供应商 



之一  ORACLE 现在可以运行在近 70 种平台之上    在八十年代中期     Sybase 公司发行了 



EMAIL wyhsillypig@163。                            24 


…………………………………………………………Page 25……………………………………………………………

SQL 21  日自学通(V1。0)                               翻译人 笨猪 



他们的 RDBMS — — SQL  Sever 具有客户端数据库访问功能并支持过程存储  将在第 14 天 



的动态应用 SQL  中提到  和多平台交互工作能力      SQL  Sever  作为一个成功的产品 其客 



户机/服务器工作能力是其最为突出的优势所在  这个强大的数据库系统具有极高的平台适 



应性  用 C 语言写成的运行于 PC 机的 ORACLE 其实是运行于 VAX 系统上的 ORACLE 的 



复制 



SQL 与客户机/ 服务器应用程序开发环境 



   在使用客户机/服务器电脑来开发客户机/服务器应用程序时 SQL  和关系型数据库的思 



想遍及始终  在单用户系统中使用这种技术也可以使您的程序更适应未来的发展 



SQL 总览 



   SQL  是操作和检索关系型数据库的事实上的标准语言  它允许程序员和数据库管理员 



做如下的工作 



   l  更改数据库的结构 



   l  更改系统的安全设置 



   l  增加用户对数据库或表的许可权限 



   l  在数据库中检索需要的信息 



   l  对数据库的信息进行更新 



注  对于 SQL 大家可能还不明白    S  即 Structured 结构 L  即 Language 语言 这是显 



   而易见的  但是 Q  的意思容易让人误解  Q    的意思当然是 Query  查询  — — 如果你 



   直译的话   可是这只限于你对数据库提问  但是 SQL 能干的不只是查询  通过它你可 



   以建立一个库  添加和删除数据      对数据作联合    当数据库改变时触发动作  并把你 



   的查询存储在程序或数据库中 



   不幸得很   这对于查询来说似乎是一个缺点  显然        库结构的增加    删除  修改  联 



合  存储  触发以及查询语言在多用户协同工作时有点烦琐  我们将会在工作中一直与 SQL 



打交道   不过现在你应该知道它的功能不只是限于它的名字所指的内容了 



   SELECT  语句是 SQL  中应用最多的语句  见第二章  查询— — SELECT  语句的使用 



它会从数据库中检索需要的数据并把结果返回给用户           上边的雇员表的举例便是一个典型 



EMAIL wyhsillypig@163。                             25 


…………………………………………………………Page 26……………………………………………………………

SQL 21  日自学通(V1。0)                                  翻译人  笨猪 



的 SELECT 语句的使用例子  除了 SELECT 语句之外  SQL 还提供了用以建立新的数据库 



表格   字段和索引的语句以及记录的插入和删除语句            你将会发现    ANSI  SQL 还提供了 



对核心数据操作的功能       许多数据库管理系统还提供了确保数据完整性和强制安全性的工 



具  见第 11  天的传输控制    它允许程序员在当前环境不符合的时候强制性地终止语句组 



的执行 



流行的 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  语言标准
返回目录 上一页 下一页 回到顶部 9 9
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!