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

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

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




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



           2    FROM  SYS。DBA_USERS 



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



        5  / 



          该语句是正确的  生成的 SQL 语句将会给所有的用户以 CONNECT  和 DBA 权 



        限 



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



      不对    如果你不关心有多少行被选出时可以把它关闭  它不是你要生成的 SQL 语句 



    的一部分 



    15      从 SQL 中生成 SQL 语句时       必须将输入的结果重新定向到一个列表或 LOG 文件 



       中  对不对 



      不对  你应该重新定向到一个 SQL 文件中或任何你所命名的文件中 



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



                                                                          561 


…………………………………………………………Page 562……………………………………………………………

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



        的表作了很好的备份  对不对                 对   这样最安全 



    17       什么是 ED 命令 



      ED 命令是一个全屏幕的编辑器                所 UNIX  的 VI 或 WINDOWS 下的记事本类似 



    18       SPOLL OFF 命令是做什么的 



      关闭一个假脱机文件 



练习答案 



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



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



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



    SQL》 SET ECHO OFF 



    SQL》 SET FEEDBACK OFF 



    SQL》 SPOOL GRANTS。SQL 



    SQL》 SELECT 'GRANT SELECT ON HISTORY_TBL TO ' || USERNAME || ';' 



                2            FROM  SYS。DBA_USERS 



                3            WHERE  USERNAME  IN  ('JOHN';'KEVIN';'RYAN';'RON';'CHRIS') 



                4            / 



    grant select on history_tbl to JOHN; 



    grant select on history_tbl to KEVIN; 



    grant select on history_tbl to RYAN; 



    grant select on history_tbl to RON; 



    grant select on history_tbl to CHRIS; 



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



          自己做 



警告    除非你已经彻底地明白了本章的概念  否则一定要注意生成 SQL 语句可能会修改数 



     据或数据库的结构 



                                                                                 562 


…………………………………………………………Page 563……………………………………………………………

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



第 18 天      PL/SQL 简介 



问题答案 



    8  如何在数据库中使用触发机制 



     数据库的触发机制可以在指定表中的数据发生变化时进行执行一些特定的操作                               例 



    如  如果你改变了一个表  那么触发机制可以将被改变的数据存入历史记录表中以备 



    后查 



    9  是否可以将相关的过程存储在一起 



     相关的过程可以存储在包中 



    10     可以在 PL/SQL  中使用数据操作语言  对不对              对 



    11     可以在 PL/SQL  中使用数据定义语言  对不对 



     不对  DDL 不能在 PL/SQL  中使用  用自动的方法来改变数据库的结构不是好主意 



    12     在 PL/SQL  的语法中是否支持直接的文本输出 



     它不被 PL/SQL 所直接支持  但是         它可以通过标准的包 DBMS_OUTPUT  来输出 



    13     给出 PL/SQL 语句块的三个主要部分 



     DELCARE 部分  PROCEDURE 部分  EXCEPTION 部分 



    14     请给出与游标控制相关的命令 



     DECLARE    OPEN  FETCH   CLOSE 



练习答案 



    5  请定义一个变量       使它可以接受的最大数值为 99。99 



     DECLARE 



         HourlyPay number(4;2); 



    6  请定义一个指针         它的内容包括 CUSTOMER_TABLE  表中的所有 CITY              为 



      INDIANAPOLIS  的客户 



      DECLARE 

                                          cursor  c1  is 



                                          select  *  from  customer_table 



                                          where  city  =  'INDIANAPOLIS'; 



                                                                      563 


…………………………………………………………Page 564……………………………………………………………

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



    7    定义一个名字为 UnknownCode  的异常 



        DECLARE 



                                            UnknownCode  EXCEPTION; 



    8    请写一个语句        使得在 AMOUNT_TABLE 中的AMT  当 CODE 为 A 时其值为 10 



        当 CODE  为 B  时其值为 20           当 CODE    既不是 A  也不是 B  时激活一个名字叫 



        UnknownCode  的异常  表中的内容只有一行 



  IF ( CODE = 'A' ) THEN 



                                    update  AMOUNT_TABLE 



                                    set  AMT  =  10; 



                        ELSIF  (  CODE  =  'B'  )  THEN 

                                      update  AMOUNT_TABLE 



                                    set  AMT  =  20; 



                        ELSE 



                                    raise  UnknownCode; 



                        END  IF; 



第 19 天         TRANSACT…SQL  简介 



问题答案 



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



    的 SQL 是完全相同的  对不对 



答   不对  这些关键字不受版权的保护                    产品在许多内容上都与 ANSI               标准一致  但不是 



    每样东西都一致 



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



答  对     静态的 SQL 需要进行预编译  而不是动态编译  所以它的灵活性不如动态 SQL 



    但是由于查询已经被处理过                 所以它的性能要更好些 



练习答案 



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



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



  由于今天所讲的几乎全是 TRANSACT…SQL                     我们并没有对 ANSI          标准的其它扩展进行 



                                                                                     564 


…………………………………………………………Page 565……………………………………………………………

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



探讨   大多数的数据库随机文档都标明了它所提供了对 SQL  的有效的扩展  这些扩展在其 



它数据库中使用是不同的 



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



  否则的话执行另一些操作 



  该操作需要使用 IF 语句    具有的逻辑结构今天已经讨论过了 



第 20 天    SQL*PLUS 



问题答案 



7  哪些命令可以改变你的 SQL 会话的性能 



  SET 命令可以改变你的会话设置 



8  你可以在 SQL 的脚本中提示用户输入参数并根据输入的参数运行吗 



  可以  你的脚本能从用户输入接受参数并把它赋给变量 



9  如果你对 CUSTOMERS  表创建了一个汇总报表       你如何在你的报表中对你的数据进行 



  分组 



  你可能会依据客户进行分组        因为你的数据是从客户表中选择的 



10    你在使用 LOGIN。SQL 文件时有哪些限制 



  它的限制就是你输入到其中的内容必须是 SQL 或 SQL*PLUS  的有效命令 



11    DECODE 函数与过程语言中的 LOOP 功能是等价的  对不对 



  不对  它与 IF   THEN 类似 



12    如果你将查询重新定向到一个已经存在的文件中  你的输出将追加到这个文件  对不 



  对 



  不对  新文件将会覆盖原文件的内容 



练习答案 



4  利用在今天开始时的 PRODUCTS    表   写一个查询选择其中的所有数据并对记录的个数 



  进行汇总    要生成报表并且不得使用 SET FEEDBACK ON 命令 



pute sum of count(*) on report 



                        break  on  report 



                                                           565 


…………………………………………………………Page 566……………………………………………………………

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



                        select  product_id;  product_name;  unit_cost;  count(*) 



                        from  products 

                        group  by  product_id;  product_name;  unit_cost; 



5    假如今天是 1998 年 5 月 12 日星期一  写一个查询产生下边的输出 



     Today is Monday; May 12 1998 

答 



           set heading off 



           select to_char(sysdate;' 〃Today is 〃Day; Month dd yyyy') 



           from dual; 



6    试一下下边的语句 



               1    select  * 



               2    from  orders 



               3    where  customer_id  =  '001' 



             4* order by customer_id; 



     不需要在缓冲区中重新输入这些语句  将 FROM 子句中的表改为 CUSTOMERS 



在 ORDER BY 子句中加入 DESC 



           l2 



           c/orders/customer 

           现在你 DESC 加入到 ODRER BY 子句中 



           l4 



           append DESC 



第 21 天             常见的 SQL 错误及解决方法 



 问题答案 



1。  A  user  calls  and  says;  〃I  can't  sign  on  to  the  database。  But  everything  was  working  fine 



yesterday。 The error says invalid user/password。 Can you help me?〃 What steps should you take? 



At first you would think to yourself; yeah sure; you just forgot your password。 But this error can 

be returned if a front…end application cannot connect to the database。 However; if you know the 



database is up and functional; just change the password by using the ALTER USER mand and 



tell the user what the new password is。 



2。 Why should tables have storage clauses and a tablespace destination? 

In order for tables not to take the default settings for storage; you must include the storage clause。 



Otherwise medium to large tables will fill up and take extents; causing slower performance。 They 



also may run out of space; causing a halt to your work until the DBA can fix the space problem。 



Exercise Answers 



                                                                                                     566 


…………………………………………………………Page 567……………………………………………………………

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



1。  Suppose  you  are  logged  on  to  the  database  as  SYSTEM;  and  you  wish  to  drop  a  table  called 



HISTORY in your schema。 Your regular user ID is JSMITH。 What is the correct syntax to drop 

this table? 



Because you are signed on as SYSTEM; be sure to qualify the table by including the table owner。 



If you do not specify the table owner; you could accidentally drop a table called HISTORY in the 



SYSTEM schema; if it exists。 

SQL》 DROP TABLE JSMITH。HISTORY; 



2。 Correct the following error: 



INPUT: 



SQL》 select sysdate DATE 



            2            from  dual; 

OUTPUT: 



select sysdate DATE 



                                                                                      * 



ERROR at line 1: 



ORA…00923: FROM keyword not found where expected 

DATE is a reserved word in Oracle SQL。 If you want to name a column heading DATE; then you 


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