友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
喜书网 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

SQL 21日自学通(V3.0)(PDF格式)-第102章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






   语句的优化以提高性能 



总结 



   今天所讨论的主题增加了你对使用 SQL  编程的一些知识           关于基本的 SQL   内容你已 



经在前些天学习过了      它为你进行数据库编程打下了一个良好的基础  但是             这些内容只 



是基本的东西     SQL  过程语言的概念已经在昨天解释过了         今天你又学习了一种基本的 



SQL 这对于你—  — 数据库程序员 — — 在访问数据库时提供了强大的功能 



   在 SYBASE 和 MICROSOFT  的 SQL  SERVER 中的 TRANSACT…SQL 提供了许多你可 



以在第三代编程语言和第四代编程语言中可以找到的编程结构  这包括 IF               条件与 WHILE 



循环以及局部和全局变量的定义能力 



   需要明白的是今天所介绍的内容只是 TRANSACT…SQL        的基本特性和技术  并对所有 



你可用的工具有了一个感性的认识  对于它的更详细的内容你需要参见 MICROSOFT  SQL 



SERVER 的 TRANSACT…SQL 文档 



问与答 



问  在 SQL 中是否提供了 FOR 循环 



答  像 FOR 循环  WHILE 循环以及 CASE 分支等都是对 ANSI 标准的 SQL  的扩展  所以 



   对于不同的数据库系统它们的使用方法有很大的不同 例如 在 ORACLE 中提供了 FOR 



   循环  而在 TRANSACT…SQL  中就没有提供  当然  可以在 WHILE 循环都使用一个变 



   量来模拟 FOR 循环 



                                                         430 


…………………………………………………………Page 431……………………………………………………………

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



问  如果我写一个 GUI   风格的 WINDOWS  或 MACINTOSH  应用程序   其中有对话框 



   之类的元素  这时我是否可以使用 PRINT 语句来向用户输出信息 



答  SQL 与平台是完全独立的  所以 PRINT 语句不能将信息输出至对话框中          如果你想输 



   出信息给用户  你的 SQL  过程将会返回一个预定义的值来表示成功或失败            而用户则 



   可以从查询的状态中得到通知        PRINT 命令在调试时最有用     因为在存储过程中的 



  PRINT 命令将不会总是向屏幕输出 



校练场 



问  在 ORACLE 的 PL/SQL  中与在 TRANSACT…SQL  中 SQL  字的使用方法与 ANSI  标准 



   的 SQL 是完全相同的  对不对 



问  静态的 SQL 比动态的 SQL 灵活性差  尽管它的性能要比动态的好  对不对 



练习 



1  如果你没有使用 SYBASE 或 MICROSOFT  的 SQL  SERVER 那么请你比较一个你的产 



  品对 SQL 的扩展与今天所讲的有何不同 



2  写一组 SQL 语句  它可以对一些已知的条件进行检测        如果条件为真  执行一些操作 



  否则的话执行另一些操作 



                                                       431 


…………………………………………………………Page 432……………………………………………………………

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



第 20 天     SQL*PLUS 



目标 



   今天你将会学习 SQL*PLUS   这种 SQL 是针对 ORACLE  的 RDBMS 的  在今天的结 



束  你将会明白 SQL*PLUS  的下述内容 



   l  如何使用 SQL*PLUS  的缓存 



   l  如何格式化报表 



   l  如何操作日期 



   l  如何创建交互式查询 



   l  如何构建高级报表 



   l  如何使用强大的 DECODE 函数 



简介 



   我们介绍 SQL*PLUS 的原因是由于 ORACLE  数据库在关系数据库市场中所处的优势 



地位以及 SQL*PLUS  为用户提供的强大功能及灵活性          SQL*PLUS 在许多方面与 



TRANSACT…SQL 类似 见第 19 天  TRANSACT…SQL  简介 它们都实现了 ANSI  标准 



的 SQL 它仍是所有 SQL 解释器的骨架     的大部能力 



   SQL*PLUS 命令可以增强 SQL 会话能力并对从数据库返回的查询的结果进行格式上的 



增强  它也可以像一个专业化的报表生成器对报表进行格式化            SQL*PLUS 对 ANSI 标准 



的 SQL 和 PL/SQL 进行了补充以帮助关系型数据库程序员们取得满意的数据格式 



SQL*PLUS 缓存 



   SQL*PLUS 缓存是为你特定的 SQL 会话所指定的命令存储区域       这些命令包括大多数 



最近执行过的命令以及你用于定制 SQL 会话的如格式化命令和变量赋值之类的命令               缓存 



就像随机存储器一样  这里给出了一些对缓存的最常用的命令 



   l  LIST line_number — — 可以列出缓存中的命令并可以通过行号将它指定为当前行 



                                                      432 


…………………………………………………………Page 433……………………………………………………………

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



    l   CHANGE/old_value/new_value — — 将缓存当前行的旧数值改为新数值 



    l   APPEND text — — 向缓存所在的当前行中追加文本 



    l   DEL — — 将缓存中的当前行删除 



    l   SAVE newfile — — 将缓存中的 SQL 语句保存到文件中 



    l   GET filename — — 将某文件中的内容送到缓存中 



    l   / — — 运行缓存中的语句 



    让我们用一个简单的 SQL 语句来开始 



输入 



    SQL》 select * from products where unit_cost 》 25; 



输出 



      PRO         PRODUCT_NAME                       UNIT_COST 



      P01        MICKEY MOUSE LAMP                   29。95 



      P06        SQL MAND REFERENCE               29。99 



      P07         BLACK  LEATHER  BRIEFCASE          99。99 



    LIST 命令可以列出在缓存中最近执行过的命令                     输出是非常简单的 



    SQL》 list 



        1    select  * 



        2    from  products 



      3* where unit_cost 》 25 



分析 



    注意  在每一行的前边都有一个数字                   这个数字对于缓存来说非常重要                 它就像一个 



指针一样可以让你通过 SQL*PLUS 来对指定行进行修改                       SQL*Plus  buffer 不是全屏幕编辑 



的  当你按下回车后  你不能使用游标来回到上一行                         如下例所示 



输入 



    SQL》 select * 



        2    from  products 



        3    where  unit_cost  》  25 



      4   / 



注   与 SQL 命令一样        你在 SQL*PLUS  中既可以用大写字符也可以用小写字符 



                                                                               433 


…………………………………………………………Page 434……………………………………………………………

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



技巧    SQL*PLUS  中的大部分命令都可以缩写  例如 LIST 可以缩写为 L 



你可以在 L 后边加上一个数字来跳转到缓存中的指定行 



输入 



    SQL》 l3 



      3* where unit_cost 》 25 



分析 



    注意 3  后边有一个星号        星号表明了当前的行号  在今天的例子中你应该注意星号 



如果一行被标为*号  那么你就可以对它进行编辑 



    由于你知道了当前的行是第 3 行  你可以对它进行随意的改变  CHANGE 的语法格式 



如下 



语法 



    CHANGE/old_value/new_value    或 C/old_value/new_value 



输入 



    SQL》 c/》/《 



输出 



     3* where unit_cost 《 25 



输入    : 



    SQL》 l 



输出 



        1    select  * 



        2    from  products 



      3* where unit_cost 《 25 



分析 



    在第 3  行中的小于号已经被改成大于号了               注意在改变以后的新行会被显示             如果你 



使用 LIST 命令或 L     你就可以看到完整的语句           现在我们来运行一下语句 



输入 



    SQL》 / 



输出 



      PRO      PRODUCT_NAME                UNIT_COST 



                                                                      434 


…………………………………………………………Page 435……………………………………………………………

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



      P02       NO 2 PENCILS 20 PACK           1。99 



      P03        COFFEE  MUG                     6。95 



      P04       FAR SIDE CALENDAR                10。5 



      P05        NATURE  CALENDAR                12。99 



分析 



    在 SQL》后边的正斜线的意思就是运行处于缓冲区中的任何语句 



输入 



    SQL》L 



输出 



    1    select  * 



    2    from  products 



    3* where unit_cost 《 25 



    现在  你可以通常在 SQL》后边输入行号和相应的文字来增加对应行中的内容                                       当你 



增加完以后        你就得到了一个完整的语句组                如下例 



输入 



    SQL》 4 order by unit_cost 



    SQL》 1 



输出 



        1    select  * 



        2    from  products 



        3    where  unit_cost  《  25 



      4* order by unit_cost 



分析 



    如果想删除一行比增加一行还容易  例如你输入 del4  就删除了缓冲区中的第 4  行  现 



在我们再看一下语句清单              看看语句是否真的删除�
返回目录 上一页 下一页 回到顶部 赞(0) 踩(0)
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!