八宝书库 > 文学其他电子书 > SQL 21日自学通(V3.0)(PDF格式) >

第70部分

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

小说: SQL 21日自学通(V3.0)(PDF格式) 字数: 每页4000字

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






时候不输出列标头 



    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 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; 



    现在     我们来执行这个文件 



INPUT/OUTPUT 



     SQL》 SET ECHO ON 



     SQL》 SET HEADING ON 



     SQL》 START CNT。SQL 



     SQL》 SELECT COUNT(*) FROM ACCT_PAY; 



      COUNT(*) 



                    7 



     SQL》 SELECT COUNT(*) FROM ACCT_REC; 



      COUNT(*) 



                    9 



     SQL》 SELECT COUNT(*) FROM CUSTOMERS; 



      COUNT(*) 



                    5 



     SQL》 SELECT COUNT(*) FROM EMPLOYEES; 



      COUNT(*) 



                                                                                     359 


…………………………………………………………Page 360……………………………………………………………

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



              10 



     SQL》 SELECT COUNT(*) FROM HISTORY; 



       COUNT(*) 



              26 



     SQL》 SELECT COUNT(*) FROM INVOICES; 



       COUNT(*) 



                0 



     SQL》 SELECT COUNT(*) FROM ORDERS; 



       COUNT(*) 



                0 



     SQL》 SELECT COUNT(*) FROM PRODUCTS; 



       COUNT(*) 



              10 



     SQL》 SELECT COUNT(*) FROM PROJECTS; 



       COUNT(*) 



              16 



     SQL》 SELECT COUNT(*) FROM VENDORS; 



       COUNT(*) 



              22 



     SQL》 



分析 



     Set  echo  on 可以让你在执行文件的时候看到其中的每一条语句                                   Set  heading  on 则可以 



显示每个 SELECT 语句的列标头 COUNT(*)                        如果你还输入了 set feedback on 的话那么 



     1 row selected 



     将会出现在每个计数结果的后边                        在这个例子中我们使用 SQL*PLUS                     中的 START      命 



令来执行了 SQL 脚本              可是      如果你要处理的表不是 10 个而是 50 个时又会怎能样呢 



注    一定要正确地使用单引号以保证生成的 SQL 脚本的正确                                      你要把你想生成的全部语句 



    都用单引号括起来  在本例中                      你用单引号括起来的 SQL 语句如; 'SELECT COUNT(*) 



    FROM'  和  ';'。不会从表中选择数据 



                                                                                                 360 


…………………………………………………………Page 361……………………………………………………………

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



为多个用户赋予系统权限 



    作为一个数据库管理员或有维护其它用户任务的个体                          你经常会收到一些用户的请求 



然后将不得不将某些权限赋予一些用户以使他们可以进行正常的数据库访问                                      你也会由于 



他们工作的变动而相应地改变他们的权限                     这可以通过今天的方法来生成 GRANT                 语句为 



多个用户赋予系统权限和规则 



INPUT 



    SQL》 SET ECHO OFF 



    SQL》 SET HEADING OFF 



    SQL》 SET FEEDBACK OFF 



    SQL》 SPOOL GRANTS。SQL 



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



        2    FROM  SYS。DBA_USERS 



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



        4    / 



OUTPUT 



    GRANT CONNECT; RESOURCE TO KEVIN; 



    GRANT CONNECT; RESOURCE TO JOHN; 



    GRANT CONNECT; RESOURCE TO JUDITH; 



    GRANT CONNECT; RESOURCE TO STEVE; 



    GRANT CONNECT; RESOURCE TO RON; 



    GRANT CONNECT; RESOURCE TO MARY; 



    GRANT CONNECT; RESOURCE TO DEBRA; 



    GRANT CONNECT; RESOURCE TO CHRIS; 



    GRANT CONNECT; RESOURCE TO CAROL; 



    GRANT CONNECT; RESOURCE TO EDWARD; 



    GRANT CONNECT; RESOURCE TO

返回目录 上一页 下一页 回到顶部 0 0

你可能喜欢的