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

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

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





问  静态的 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  行  现 



在我们再看一下语句清单              看看语句是否真的删除了 



输入 



    SQL》 DEL4 



    SQL》 l 



输出 



    1    select  * 



                                                                                 435 


…………………………………………………………Page 436……………………………………………………………

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



     2    from  products 



     3* where unit_cost 《 25 



     加入一行或多行语句的另一种方法是使用 INPUT  命令                              就像你在上边的例子中所看到 



的那样  当前行现在为 3               输入 INPUT     后按回车  然后你就可以输入文本了                       这时你每按 



一次回车就会增加一行                如果你按下两次回车               你就又回到了 SQL》 提示符下                 这时如果 



你看一下语句的列表              就像下边的例子一样  你可以看到第 4 行已经被加入了 



输入 



     SQL》 input 



         4i      and  product_id  =  'P01' 



         5i 



     SQL》 l 



输出 



         1    select  * 



         2    from  products 



         3    where  unit_cost  《  25 



         4        and  product_id  =  'P01' 



       5* order by unit_cost 



     如果你想向当前行中追加文本  你可以在 APPEND 命令的后边写上文本  将输出与上 



一个例子做一下比较  在下边的例子中当前行是第 5 行 



输入 



     SQL》  append    desc 



输出 



       5* order by unit_cost desc 



     现在使用 LIST 命令来看一下完整的语句 



输入 



     SQL》 l 



输出 



         1    select  * 



         2    from  products 



         3    where  unit_cost  《  25 



                                                                                          436 


…………………………………………………………Page 437……………………………………………………………

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



        4        and  product_id  =  'P01' 



      5* order by unit_cost desc 



    你也可以使用 CLEAR  BUFFER  来清除缓冲区            就像你在稍后所见到的那样  你可以 



使用 CLEAR 命令来清除指定的缓冲区的内容 



输入 



    SQL》 clear buffer 



输出 



    buffer cleared 



输入 



    SQL》 l 



输出 



    No lines in SQL buffer。 



分析 



    很明显  你不能从空的缓冲区中得到任何信息的                   尽管你不是管理人员          但是你却有 



足够灵活的办法来管理缓冲区中的命令 



DESCRIBE 命令 



    这个命令可以让你不用访问数据字典就可以非常方便地看到表的结构 



语法 



    DESC'RIBE' table_name 



    现在来看一下我们将要在今天所使用的表的结构 



输入 



    SQL》 describe orders 



输出 



       Name                Null?          Type 



       ORDER_NUM           NOT NULL       NUMBER(2) 



       CUSTOMER            NOT NULL       VARCHAR2(30) 



       PRODUCT_ID          NOT NULL       CHAR(3) 



       PRODUCT_QTY         NOT NULL       NUMBER(5) 



       DELIVERY_DATE                      DATE 



                                                                       437 


…………………………………………………………Page 438……………………………………………………………

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



    下边的语句将使用 DESC 来代替 DESCRIBE 



输入 



    SQL》 desc products 



输出 



      Name                Null?         Type 



      PRODUCT_ID          NOT NULL      VARCHAR2(3) 



      PRODUCT_NAME        NOT NULL      VARCHAR2(30) 



      UNIT_COST           NOT NULL      NUMBER(8;2) 



分析 



    DESC  给出了每个列的名字           列中是否必需有数据  NULL  或 NOT  NULL              以及每个 



列的数据类型  如果你写了多个查询  你会发现你很少有不用这个命令的时候                                    在相当长 



的时间中该命令可以帮助你节省许多的编程时间  没有 DESCRIBE  命令                            你将不得不从数 



据库文档甚至是数据库的操作手册中搜索相应的数据字典来找到你所需要的信息 



SHOW  命令 



    SHOW  命令显示了当前会话的设置情况                 从命令的格式到你是谁的信息都有                  SHOW 



ALL 则会显示所有的设置  在这一部分将会讨论最常见的设置 



输入 



    SQL》 show all 



输出 



    appinfo is ON and set to 〃SQL*Plus〃       cmdsep OFF 



    arraysize 15                              patibility version NATIVE 



    automit OFF                            concat 〃。〃 (hex 2e) 



    autoprint OFF                             copymit 0 



    autotrace OFF                             copytypecheck is ON 



    blockterminator 〃。〃 (hex 2e)              crt 〃〃 



    btitle  OFF  and  is  the  1st  few  characters define 〃&〃 (hex 26) 



of the next SELECT statement                  echo OFF 



    closecursor OFF                           editfile 〃afiedt。buf〃 



    colsep 〃 〃                                embedded OFF 



                                                                             438 


…………………………………………………………Page 439……………………………………………………………

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



     escape OFF                                        serveroutput OFF 



     feedback ON for 6 or more rows                    showmode OFF 



     flagger OFF                                       spool OFF 



     flush ON                                          sqlcase MIXED 



     heading ON                                        sqlcode 1007 



     headsep 〃|〃 (hex 7c)                              sqlcontinue 〃》 〃 



     linesize 100                                      sqlnumber ON 



     lno 6                                             sqlprefix 〃#〃 (hex 23) 



     long 80                                           sqlprompt 〃SQL》 〃 



     longchunksize 80                                  sqlterminator 〃;〃 (hex 3b) 



     maxdata 60000                                     suffix 〃SQL〃 



     newpage 1                                         tab ON 



     null 〃〃                                           termout ON 



     numformat 〃〃                                      time OFF 



     numwidth 9                                        timing OFF 



     pagesize 24                                       trimout ON 



     pause is OFF                                      trimspool OFF 



     pno 1                                             ttitle OFF and is the 1st few characters of 



     recsep WRAP                                  the next SELECT statement 



     recsepchar 〃 〃 (hex 20)                           underline 〃…〃 (hex 2d) 



     release 703020200                                 user is 〃RYAN〃 



     repheader OFF and is NULL                         verify ON 



     repfooter OFF and is NULL                         wrap : lines will be wrapped 



     SHOW  命令显示了与登录用户有关的详细的设置                              如果你是多用户数据库的用户                     而 



你想知道你是如何登录的  那么你可以使用下边的命令 



输入 



     SQL》 show user 



输出 



     user is 〃RYAN〃 



     如果你想知道当前 LINE 的大小  你可以输入 



                                                                                             439 


…………………………………………………………Page 440……………………………………………………………

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



输入 



    SQL》 show linesize 



输入 



    linesize 100 



文件命令 



    在 SQL*PLUS   中有许多命令可以帮助你来操作文件  这些命令包括创建文件                            使用全 



屏幕编辑软件来编辑文件以及将输出重定向到一个文件等等                              你也会知道在创建了一个 



SQL*PLUS 文件如何去运行它 



SAVE       GET      EDIT 命令 



    SAVE 命令可以将 SQL 缓冲区的内容保存到你所指定名字的文件中  例如 



输入 



    SQL》 select * 



        2    from  products 



        3    where  unit_cost  《  25 



    SQL》 save query1。sql 



输出 



    Created file query1。sql 



分析 



    当文件被保存以后  你可以使用 GET  命令来查看文件                     GET  命令与 LIST  命令非常相 



似 但是 GET 是处理被保存到文件中的 SQL 语句的 而 LIST 则是处理处于缓冲区中的 SQL 



语句的 



输入 



    SQL》 get query1 



输出 



        1    select  * 



        2    from  products 



      3* where unit_cost 《 25 



                                                                            440 


…………………………………………………………Page 441……………………………………………………………

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



   你可以使用 EDIT    命令来创建一个文件或编辑一个已经存在的文件                当运行这个命令 



以后  你将进入一个全屏幕的编辑环境  它与 WIND
返回目录 上一页 下一页 回到顶部 9 9
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!