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

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

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




    View Created。 



    View Created。 



    View Created。 



    View Created。 



分析 



    在上边的 SQL  语句中生成了一个叫 VIEW。SQL               的文件  输出文件变成了一个 SQL  文 



件   其中包括着对指定的表所创建的视图                   在运行这个文件之后            我们可以看到视图已经 



创建了 



在一个计划中清除其所有的表的内容 



    清除表是在开发环境中出现的工作                  为了有效地开发测试数据载入和 SQL  的性能  数 



据是经常需要重新载入的              这一过程可以确定和清除 BUG              经常测试后的应用程序才会转 



入生产环境中 



    下边的例子将清除一个工作中的所有的表的内容 



INPUT 



    SQL》 SET ECHO OFF 



                                                                              371 


…………………………………………………………Page 372……………………………………………………………

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



     SQL》 SET FEEDBACK OFF 



     SQL》 SET HEADING OFF 



     SQL》 SPOOL TRUNC。SQL 



     SQL》 SELECT 'TRUNCATE TABLE ' || TABLE_NAME || ';' 



         2    FROM  ALL_TABLES 



         3    WHERE  OWNER  =  'RYAN' 



         4    / 



OUTPUT 



     TRUNCATE TABLE ACCT_PAY; 



     TRUNCATE TABLE ACCT_REC; 



     TRUNCATE TABLE CUSTOMERS; 



     TRUNCATE TABLE EMPLOYEES; 



     TRUNCATE TABLE HISTORY; 



     TRUNCATE TABLE INVOICES; 



     TRUNCATE TABLE ORDERS; 



     TRUNCATE TABLE PRODUCTS; 



     TRUNCATE TABLE PROJECTS; 



     TRUNCATE TABLE VENDORS; 



     如果你敢的话你就运行一下这个脚本 



INPUT/OUTPUT 



     SQL》 SPOOL OFF 



     SQL》 SET FEEDBACK ON 



     SQL》 START TRUNC。SQL 



     Table Truncated。 



     Table Truncated。 



     Table Truncated。 



     Table Truncated。 



     Table Truncated。 



     Table Truncated。 



     Table Truncated。 



                                                                                         372 


…………………………………………………………Page 373……………………………………………………………

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



    Table Truncated。 



    Table Truncated。 



    Table Truncated。 



分析 



    你已经把所有的为 RYAN  所属的表的内容清除了                 这很容易      如果你准备重新构建你 



的表数据时你可以使用这项技术 



技巧    当在一个计划中运行储如清除表之类的操作时                    你必须对你将要清理的表做一个很 



     好的备份      即便你肯定你再也不需要它的时候也要这样做                    是后也许会有人坚持要 



     求你恢复原来的数据 



使用 SQL 来生成 SHELL 脚本 



    你也可以使用 SQL  来生成其它形式的脚本                 比如说 SHELL  脚本      例如   ORACLE 



RDBMS  服务可能会运行于 UNIX 环境下            这是比 PC 环境更大的代表          所以  UNIX  需要 



对文件进行更为有效的管理             通过创建脚本你可以很容易地管理数据库的文件 



    下边的工作是删除在一个数据库中的表空间  尽管可以使用 SQL 来删除表空间  但是 



与表空间相关的事实的的数据文件却必须在操作系统中才能删除 



    下一步是生成一个 SQL 脚本来删除表空间 



INPUT 



    SQL》 SET ECHO OFF 



    SQL》 SET FEEDBACK OFF 



    SQL》 SET HEADING OFF 



    SQL》 SPOOL DROP_TS。SQL 



    SQL》   SELECT   'DROP   TABLESPACE   '   ||   TABLESPACE_NAME   ||   '   INCLUDING 



CONTENTS;' 



        2    FROM  SYS。DBA_TABLESPACES 



        3    / 



OUTPUT 



    DROP TABLESPACE SYSTEM INCLUDING CONTENTS; 



    DROP TABLESPACE RBS INCLUDING CONTENTS; 



                                                                        373 


…………………………………………………………Page 374……………………………………………………………

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



    DROP TABLESPACE TEMP INCLUDING CONTENTS; 



    DROP TABLESPACE TOOLS INCLUDING CONTENTS; 



    DROP TABLESPACE USERS INCLUDING CONTENTS; 



    然后你需要生成一个脚本文件以在表空间删除后在操作系统中删除数据库文件 



INPUT/OUTPUT 



    SQL》 SPOOL OFF 



    SQL》 SPOOL RM_FILES。SH 



    SQL》 SELECT 'RM …F ' || FILE_NAME 



        2    FROM  SYS。DBA_DATA_FILES 



        3    / 



    rm …f /disk01/orasys/db01/system0。dbf 



    rm …f /disk02/orasys/db01/rbs0。dbf 



    rm …f /disk03/orasys/db01/temp0。dbf 



    rm …f /disk04/orasys/db01/tools0。dbf 



    rm …f /disk05/orasys/db01/users0。dbf 



    SQL》 spool off 



    SQL》 



分析 



    现在你已经生成了两个脚本              你可以运行脚本来删除表空间                然后在操作系统中运行 



SHELL 脚本来删除相关的数据文件               你会发现有很多种方法来用 SQL  生成和管理非 SQL 



的脚本 



再建表和索引 



    尽管有许多工具可以帮助你再建表和索引                    然而对于这目的你可以直接使用 SQL 来完 



成  你可以从数据字典中获得所有的你需要重建的表和索引的信息                               但是要有效地完成这 



个工作没有过程语言           如 PL/SQL 或 SHELL 脚本      的支持是不行的 



    我们可以在一个 SHELL  脚本中使用内嵌的 SQL                  过程语言函数中需要插入适当的语 



法成份     比如逗号  脚本必须足够地聪明以知道哪里是最后一个逗号                            因为在最后一个逗 



号的后边就没有逗号了            脚本也必须知道在哪些地方需要放置括号                     在用数据字典重新生 



                                                                            374 


…………………………………………………………Page 375……………………………………………………………

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



成对象的时候 SEEK 工具是很有用的     不管你是使用 C     Perl shell  scripts COBOL 还是 



PL/SQL 



总结 



   直接地从数据库中生成语句可以避免许多单调乏味的输入 SQL 语句的工作           不管你做 



什么工作   使用 SQL 生成技术都可以在你的某个工作阶段减少你的工作量 



   如果你已经学习了今天的基本内容— — 尽管这些例子是使用 ORACLE 来完成的         你可 



以在其它的关系数据库系统中应用这一概念  请检查你的数据库解释器和数据字典的结构 



以找出它们与本书中例子的不同之外  如果你开明的话  你会发现许多生成 SQL 脚本的方 



法  从简单的语句到高度复杂的系统管理中都有 



问与答 



   问  我如何才能决定是手工写 SQL 还是来生成它 



   答  问你自己下边的问题 



      你解决问题时使用该语句的频繁程度如何 



      在写母语句是否比写子语句耗用更多的时间 



   问  生成 SQL 语句时我有哪些表可供选择 



   答  你可以选择任何一个你可以访问的表        这不管这些表是否为你所有或它是否在数 



据字典中   你可以选择所有在你数据库中的有效对象        比如视图或快捷方式 



   问  我在生成 SQL 语句是是否有限制 



   答  对于大多数的语句你既可以手工写出也可以生成          请检查你的解释器看一下看它 



是否有输出到文件选项以及输出格式是否是你所需要的           切记  在生成输出文件后你应该 



手工修改一下文件的内容 



校练场 



   1  你生成 SQL 的来源有哪两个 



   2  下边的 SQL 语句是否可以工作   它会输出什么 



      SQL》 SET ECHO OFF 



                                                    375 


…………………………………………………………Page 376……………………………………………………………

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



         SQL》 SET FEEDBACK OFF 



         SQL》 SPOOL CNT。SQL 



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



         2    FROM  CAT 



         3    / 



    3   下边的 SQL 语句是否可以工作              它会输出什么 



            SQL》 SET ECHO OFF 



            SQL》 SET FEEDBACK OFF 



            SQL》 SPOOL GRANT。SQL 



            SQL》 SELECT 'GRANT CONNECT DBA TO ' || USERNAME || ';' 



            2    FROM  SYS。DBA_USERS 



            3  WHERE USERNAME NOT IN ('SYS';'SYSTEM';'SCOTT') 



            4    / 



    4   下边的 SQL 语句是否可以工作              它会输出什么 



            SQL》 SET ECHO OFF 



            SQL》 SET FEEDBACK OFF 



            SQL》 SELECT 'GRANT CONNECT; DBA TO ' || USERNAME || ';' 



            2    FROM  SYS。DBA_USERS 



            3  WHERE USERNAME NOT IN ('SYS';'SYSTEM';'SCOTT) 



            4    / 



    5   在运行生成的 SQL 时最为将 FEEDBACK 设置为 ON                    对不对 



    6   从 SQL 中生成 SQL 语句时          必须将输入的结果重新定向到一个文件中  对不对 



    7   在生成 SQL  语句用以对表的内容进行删减时                     你必须先确认自己已经对所要删减 



        的表作了很好的备份  对不对 



    8   什么是 ED 命令 



    9   SPOLL OFF 命令是做什么的 



练习 



    1   使用 SYS。DBA_USERS 视图         在 PERSONAL ORACLE 7 中  写一个语句来生成一 



                                                                                  376 


…………………………………………………………Page 377……………………………………………………………

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



       系列 GRANT 语句为下边的五个用户  John              Kevin  Ryan  Ron  和 Chris  授权 使 



       他们可以访问 History_tbl 表      在写语句时对应的用户名用 USERNAME 来代替 



    2   用本章给出的例子作指引  写一些 SQL 来创建一些可以生成你能使用的 SQL 语句 



                                                                           377 


…………………………………………………………Page 378……………………………………………………………

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



第 18 天     PL/SQL 简介 



目标 



   PL/SQL 是一项 ORACLE 的技术  它可以让 SQL 像过程型语言一样工作     到今天的结 



束  你将 



   l  对 PL/SQL 有一个基本的了解 



   l  明白 PL/SQL  的特点以及它与标准的 SQL 的区别 



   l  知道 PL/SQL 编写程序的基本原理 



   l  可以写简单的 PL/SQL 程序 



   l  知道如何处理在 PL/SQL 编程中的错误 



   l  知道如何在真实的世界中使用 PL/SQL 



入门 



   从对标准的 SQL 进行介绍是一种入门 PL/SQL    或 SQL 的方法  SQL 是一种可以让 



关系数据库用户以一种直接的方式来访问数据库的方法  你可以使用 SQL 来对数据库进行 



查询和修改其中的表  在你写 SQL 语句的时候       你可以告诉数据库你要做什么       而不是如 



何去做  优化器会自己决定采用一种最有效的方法来执行你的语句              如果你向数据库中发 



送了一系列标准的 SQL 语句    服务将会按语句的先后次序来执行它们 



   PL/SQL 是 ORACLE 的过程型语言  它由标准的 SQL 语句和一系列可以让你在不同的 



情况下对 SQL  语句的执行进行控制的命令组成  PL/SQL     也可以在运行时捕获错误  储如 



LOOP 和 IF  THEN  ELSE  语句让 PL/SQL 具有了第三代编程语言的能力  PL/SQL 



也可以以交互方式写出      用户友好型界面会把数值赋给它的变量         你可以使用许多种预定 



义的包  它们可以将信息显示给用户 



   今天的内容主要包括 PL/SQL  的以下特性 



   l  程序员可以定义在语句中使用的变量 



   l  程序员可以使用错误控制例程来访止程序的意外中断和退出 



   l  程序员可以写交互式程序来接受来自用户的输入 



                                                      378 


…………………………………………………………Page 379……………………………………………………………

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