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

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

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




的结果如下 



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



    GRANT CONNECT; RESOURCE TO JACOB; 



INPUT/OUTPUT 



    SQL》 spool off 



                                                                              361 


…………………………………………………………Page 362……………………………………………………………

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



     SQL》 start grants。sql 



     SQL》 GRANT CONNECT; RESOURCE TO KEVIN; 



     Grant succeeded。 



     SQL》 GRANT CONNECT; RESOURCE TO JOHN; 



     Grant succeeded。 



     SQL》 GRANT CONNECT; RESOURCE TO JUDITH; 



     Grant succeeded。 



     SQL》 GRANT CONNECT; RESOURCE TO STEVE; 



     Grant succeeded。 



     SQL》 GRANT CONNECT; RESOURCE TO RON; 



     Grant succeeded。 



     SQL》 GRANT CONNECT; RESOURCE TO MARY; 



     Grant succeeded。 



     SQL》 GRANT CONNECT; RESOURCE TO DEBRA; 



     Grant succeeded。 



     SQL》 GRANT CONNECT; RESOURCE TO CHRIS; 



     Grant succeeded。 



     SQL》 GRANT CONNECT; RESOURCE TO CAROL; 



     Grant succeeded。 



     SQL》 GRANT CONNECT; RESOURCE TO EDWARD; 



     Grant succeeded。 



     SQL》 GRANT CONNECT; RESOURCE TO BRANDON; 



     Grant succeeded。 



     SQL》 GRANT CONNECT; RESOURCE TO JACOB; 



     Grant succeeded。 



分析 



     除非你愿意手工地一条一条地去输入  否则在本例中你通过使用一个 SQL 语句来生成 



多个 GRANT 语句从而避免了大量的枯燥的击键工作 



注    下边的例子将省略掉你编辑输出文件的工作  你可以认为该文件已经编辑处理过了 



                                                                                       362 


…………………………………………………………Page 363……………………………………………………………

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



将你的表的权限赋予其它的用户 



    将一个表的权限赋予其它的用户就像从表中选择一行一样地简单  可是                                 如果你有多 



个表需要对它们赋予访问规则和用户时                   你可以使用 SQL 来为你生成一个脚本— — 除非你 



喜欢打字 



    首先    回顾一下为单个表赋予权限 



INPUT 



    SQL》 GRANT SELECT ON HISTORY TO BRANDON; 



OUTPUT 



    Grant succeeded。 



    你准备好了吗        下边的语句将会创建一组 GRANT  语句来为你的计划中的 10 个表赋予 



权限 



INPUT/OUTPUT 



    SQL》 SET ECHO OFF 



    SQL》 SET FEEDBACK OFF 



    SQL》 SET HEADING OFF 



    SQL》 SPOOL GRANTS。SQL 



    SQL》 SELECT 'GRANT SELECT ON ' || TABLE_NAME || ' TO BRANDON;' 



        2    FROM  CAT 



        3    / 



    GRANT SELECT ON ACCT_PAY TO BRANDON; 



    GRANT SELECT ON ACCT_REC TO BRANDON; 



    GRANT SELECT ON CUSTOMERS TO BRANDON; 



    GRANT SELECT ON EMPLOYEES TO BRANDON; 



    GRANT SELECT ON HISTORY TO BRANDON; 



    GRANT SELECT ON INVOICES TO BRANDON; 



    GRANT SELECT ON ORDERS TO BRANDON; 



    GRANT SELECT ON PRODUCTS TO BRANDON; 



    GRANT SELECT ON PROJECTS TO BRANDON; 



    GRANT SELECT ON VENDORS TO BRANDON; 



                                                                            363 


…………………………………………………………Page 364……………………………………………………………

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



分析 



    GRANT    语句已经自动地为每一个表生成了  BRANDON                      现在可以访问你的每一个表 



了 



    现在我们使用 SPOOL  命令来关闭输出文件                      并假定该文件已经被编辑过了                 该文件 



已经为运行做好了准备 



INPUT/OUTPUT 



    SQL》 SPOOL OFF 



    SQL》 SET ECHO ON 



    SQL》 SET FEEDBACK ON 



    SQL》 START GRANTS。SQL 



    SQL》 GRANT SELECT ON ACCT_PAY TO BRANDON; 



    Grant succeeded。 



    SQL》 GRANT SELECT ON ACCT_REC TO BRANDON; 



    Grant succeeded。 



    SQL》 GRANT SELECT ON CUSTOMERS TO BRANDON; 



    Grant succeeded。 



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