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

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

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






语句中   如果在你的语句中返回了 100 条记录  那么你就会得到 100 条语句          如果你成功 



地从数据库中生成了这些 SQL  代码      那么你还可以对数据库来应用这些 SQL  语句         它们 



将对数据库执行一系列的查询工作 



   今天剩下来的时间我们主要集中于向你讲解如何从一个 SQL  语句中生成其它的 SQL 



语句的例子    你的大多数的信息将来源于数据字典          所以你应该回想一下你昨天所学习的 



内容  见第 16 天  使用视图从数据字典中获得有用的信息 



注  在今天的例子中我们使用 PERSONAL  ORACLE7     与以往一样  你应该将在今天所讲 



   座的内容与你所使用的数据库解释器的语法结合起来 



几个 SQL*PLUS 命令 



在今天的例子中我们要使用几个新的命令           也就是 SQL*PLUS 命令 — — 针对 PERSONAL 



ORACLE 的用以对输出的格式进行控制的命令           见第 20 天的  SQL*PLUS  这些命令 



也是在 SQL》提示符下运行的  它们也可以在文件中使用 



注  尽管这些命令是针对 PERSONAL  ORACLE7  的  但是在其它的数据库解释器中也有类 



   似的命令   例如  在 Transact…SQL  中就有  参见第 19 天  Transact…SQL 简介 



                                                         354 


…………………………………………………………Page 355……………………………………………………………

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



SET ECHO ON/OFF 



    当你 set echo on 时  你会在执行的时候看到你的 SQL 语句           set echo off 的意思就是你 



不想在执行的时候看到 SQL 语句 — — 你只想看到输出的结果 



    SET ECHO ' ON | OFF ' 



SET FEEDBACK ON/OFF 



    FEEDBACK 就是你的查询所输入的行数  例如              如果你运行的 SELECT  语句返回 30 



行数据  那么你的 FEEDBACK 将会是 



    30 rows selected 



    SET  FEEDBACK  ON 会显示对行的计数       SET  FEEDBACK  OFF 则在你的结果输出时 



不会对行进行计数 



    SET FEEDBACK ' ON | OFF ' 



SET HEADING ON/OFF 



    HEADING  就是指你的 SELECT      语句的输出结果的头部            储如 LAST_NAME     或 



CUSTOMER_ID  的就是  SET  HEADING  ON 是默认的       当然  OFF   的时候就是在输出的 



时候不输出列标头 



    SET HEADING ' ON | OFF ' 



SPOOL FILENAME/OFF 



    SPOOL  可以将你的查询结果直接地输入到一个文件中  要想打开 SPOOL  文件  你需 



要输入 



    spool filename 



    如果想关掉 SPOOL 文件  你应该输入 



    spool off 



                                                                     355 


…………………………………………………………Page 356……………………………………………………………

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



START FILENAME 



   大多数的我们所学习的 SQL 命令都是在 SQL》下运行的  另外的一种运行 SQL 语句的 



方法是创建 SQL 执行文件 在 SQL*PLUS  中 运行 SQL 文件的命令是 START FILENAME 



   START FILENAME 



ED FILENAME 



   ED 是 ORACLE  7 的用以打开文件  文件是已经存在的  的命令  当你使用 ED  打开 



一个文件以后 你就进入了一个全屏幕的编辑环境 它的使用要比在 SQL 提示符下输入 SQL 



语句更容易     你可以使用它来修改你的 SPOOL  文件  你将会发现当你在创建 SQL  脚本的 



时候你会非常频繁地使用它          因为你出于定制的目的你不得不经常地修改脚本的内容                  但 



是  你的大多数定制工作是用 SQL*PLUS 来完成的 



ED FILENAME 



计算所有的表中的行数 



   在第一个例子中我们会向你演示如何去除你的 SPOOL  文件中的不正确的行                     这样你 



的 SQL 脚本在运行的时候就不会返回错误了 



注  请注意在本例中我们所使用的编辑技术              因为我们在之后的例子中将不再进行这一步 



   工作的演示  我们假定到目前为止你已经掌握了基本的 SQL  语法                此外   你也可以使 



   用不同的编辑方法来编辑你的 SPOOL 文件 



现在回想一下对一个表中的所有行进行计数的函数  COUNT                 *  你应该已经知道了如何 



对一个表中的所有行进行计数          例如 



INPUT 



   SELECT COUNT(*) FROM TBL1 



OUTPUT 



   COUNT(*) 



               29 



   实现的方法很容易 可是如果你想对你的工程中所有属于你的表的行数进行计数时呢 



例如   属于你的表如下表所列 



                                                               356 


…………………………………………………………Page 357……………………………………………………………

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



INPUT/OUTPUT 



    SELECT * FROM CAT; 



                 TABLE_NAME                 TABLE_TYPE 



                 ACCT_PAY                   TABLE 



                 ACCT_REC                   TABLE 



                 CUSTOMERS                  TABLE 



                 EMPLOYEES                  TABLE 



                 HISTORY                    TABLE 



                 INVOICES                   TABLE 



                 ORDERS                     TABLE 



                 PRODUCTS                   TABLE 



                 PROJECTS                   TABLE 



                 VENDORS                    TABLE 



    10 rows selected。 



分析 



    如果你想知道你的表有几行  你可能会对每一个表使用 COUNT                            * 函数 FEEDBACK 



的结果如下 



    10 rows selected 



    下边的 SELECT 语句将会生成更多的 SELECT 语句来得到上表中的每一个表的行数 



INPUT/OUTPUT 



    SQL》 SET ECHO OFF 



    SQL》 SET FEEDBACK OFF 



    SQL》 SET HEADING OFF 



    SQL》 SPOOL CNT。SQL 



    SQL》 SELECT 'SELECT COUNT(*) FROM ' || TABLE_NAME || ';' 



        2    FROM  CAT 



        3    / 



      SELECT COUNT(*) FROM ACCT_PAY; 



      SELECT COUNT(*) FROM ACCT_REC; 



      SELECT COUNT(*) FROM CUSTOMERS; 



      SELECT COUNT(*) FROM EMPLOYEES; 



      SELECT COUNT(*) FROM HISTORY; 



      SELECT COUNT(*) FROM INVOICES; 



                                                                               357 


…………………………………………………………Page 358……………………………………………………………

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



      SELECT COUNT(*) FROM ORDERS; 



      SELECT COUNT(*) FROM PRODUCTS; 



      SELECT COUNT(*) FROM PROJECTS; 



      select count(*) FROM VENDORS; 



分析 



    在上例中的第一个动作使用了 SQL*PLUS              中的命令  设置 echo  off    feedback  off 和 



heading off 是将实际的输出结果加以简化  然后使用 SPOOL 命令来把输出的结果重定位到 



一个叫 CNT。SQL    的文件中  最后的工作是执行这个 SELECT              语句    它将会生成其它形式 



的 SQL  语句    注意在需要生成的 SELECT         语句上要使用单引号          成对的单引号和联接符 



可以让你把实际的数据和字符串结合在一起成为一个新的 SQL 语句                          本例中从数据字典中 



选择了数据      命令 SPOOL OFF 则关闭了输出文件 



技巧  在你创建了文件并把你的文件提交运行之前一定把编辑它以使它的语法更加符合你 



     的要求 



INPUT 



    SQL》 SPOOL OFF 



    SQL》 ED CNT。SQL 



OUTPUT 



    SQL》 SELECT 'SELECT COUNT(*) FROM '||TABLE_NAME||';' FROM CAT; 



    SELECT COUNT(*) FROM ACCT_PAY; 



    SELECT COUNT(*) FROM ACCT_REC; 



    SELECT COUNT(*) FROM CUSTOMERS; 



    SELECT COUNT(*) FROM EMPLOYEES; 



    SELECT COUNT(*) FROM HISTORY; 



    SELECT COUNT(*) FROM INVOICES; 



    SELECT COUNT(*) FROM ORDERS; 



    SELECT COUNT(*) FROM PRODUCTS; 



    SELECT COUNT(*) FROM PROJECTS; 



    SELECT COUNT(*) FROM VENDORS; 



    SQL》 SPOOL OFF 



分析 



                                                                        358 


…………………………………………………………Page 359……………………………………………………………

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



     SPOOL  OFF 命令关闭了输出的文件                然后我们使用 ED 来编辑这个文件                  这时你就会 



进行你所创建的文件的内部了                  你应该从这个文件中去掉不必要的行  例如已经知道了结 



果的 SELECT 语句以及在文件末尾的 SPOOL OFF 命令 



    你的文件在编辑完之后应该如下所示  注意  其中的每一行都是一个完整的 SQL 语句 



     SELECT COUNT(*) FROM ACCT_PAY; 



     SELECT COUNT(*) FROM ACCT_REC; 



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