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

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

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






         STATUS                            VARCHAR2(8) 



         SERVER                            VARCHAR2(9) 



         SCHEMA#                           NUMBER 



         SCHEMANAME                        VARCHAR2(30) 



         OSUSER                            VARCHAR2(15) 



                                                                  349 


…………………………………………………………Page 350……………………………………………………………

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



          Name               Null?               Type 



          PROCESS                                VARCHAR2(9) 



          MACHINE                                VARCHAR2(64) 



          TERMINAL                               VARCHAR2(10) 



          PROGRAM                                VARCHAR2(48) 



          TYPE                                   VARCHAR2(10) 



          SQL_ADDRESS                            RAW(4) 



          SQL_HASH_VALUE                         NUMBER 



          PREV_SQL_ADDR                          RAW(4) 



          PREV_HASH_VALU                         NUMBER 



          E 



          MODULE                                 VARCHAR2(48) 



          MODULE_HASH                            NUMBER 



          ACTION                                 VARCHAR2(32) 



          ACTION_HASH                            NUMBER 



          CLIENT_INFO                            VARCHAR2(64) 



          FIXED_TABLE_SEQ                        NUMBER 



          UENCE 



          ROW_WAIT_OBJ#                          NUMBER 



          ROW_WAIT_FILE#                         NUMBER 



          ROW_WAIT_BLOC                          NUMBER 



          K# 



          ROW_WAIT_ROW#                          NUMBER 



          LOGON_TIME                             DATE 



          LAST_CALL_ET                           NUMBER 



    如果你想得到关于当前数据库的会话信息                   你可以对 VSESSION     写像下边这样的一 



个查询 



INPUT/OUTPUT 



    SQL》 SELECT USERNAME; MAND; STATUS 



        2    FROM  VSESSION 



        3    WHERE  USERNAME  IS  NOT  NULL 



                 USERNAME        MAND        STATUS 



                 TWILLIAMS       3              ACTIVE 



                 JSMITH          0              INACTIVE 



分析 



    TWILLIAMS   已经登录到了数据库中并且对数据进行了选择  这可以从他执行了命令 



                                                                         350 


…………………………………………………………Page 351……………………………………………………………

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



3 看出来 



   JSMITH  只不过是登录到了数据库中     他的会话不是处于活动状态的        他也没有执行 



任何命令   你可以参考你的数据库文档以发现在数据字典中都有哪些命令的定义  这些命 



令包括 SELECT INSERT UPDATE DELETE CREATE TABLE 和 DROP TABEL 



运行统计 



   也可以对用户的会话进行执行统计  它比今天讨论的其它视图更加依赖于具体的解释 



器 



   执行的统计包括如数据库读写速率  对表的成功命中            系统全局区域的使用     内存缓 



冲的使用  ROLLBACK  的详细信息  事务历史记录的详细信息以及表的锁定和等待情况 



这几乎全是底层知识 



计划表 



   计划表是 ORACLE 的 SQL 语言工具所使用的默认表  EXPLAIN PLAN    见第 15 天 



表是由被称为 UTLXPLAN。SQL  的 ORACLE 脚本所创建的   当软件被安装时拷贝到的服务 



器上  数据是由 EXPLAIN PLAN 工具来产生 



总结 



尽管具体的数据字典在不同的解释器中是不同的            但这些概念适用于所有的关系数据库系 



统  你必须遵守你的数据库管理系统的语法和规则           但是今天的例子将会给你对数据字典 



进行查询使用的信息  which populates the PLAN table with information about the object being 



accessed and the steps in the execution plan of an SQL statement。 



注  对数据字典进行探险是很危险的        你需要进行更有效的学习才行 



问与答 



   问  为什么在数据字典中我应该使用表和视图 



   答  使用视图是在数据字典中找到关于你的数据库的信息的最有效的方法                表可以告 



                                                       351 


…………………………………………………………Page 352……………………………………………………………

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



    诉你可以访问什么以及你的权限如何      它也可以帮助你监视其它的数据库事件如用 



    户过程和数据库性能等 



   问  数据字典是怎样创建的 



   答 数据字典是在数据库初始化的时候创建的  在创建数据库的时候 ORACLE 提供了 



    许多的脚本来运行  对于特定的数据库系统目录这些脚本会创建必要的表和视图 



   问  数据字典是怎样更新的 



   答  在进行日常操作时数据字典由关系数据库系统在内部进行更新         当我们改变一个 



表的结构的时候   数据字典也将会做出相应的改变      你不要尝试手工去修改数据字典      这 



可能会导致数据库的崩溃 



   问  我如何才能发现谁对数据库做了些什么 



   答 一般来说  在系统目录中的表和视图可以让你对用户的活动进行审核 



校练场 



   1  在 ORACLE 中  你如何才能知道哪些表和视图是为你所有的 



   2  在数据字典中存储有哪些信息 



   3  你如何才能进行性能统计 



   4  数据库对象都有哪些 



练习 



   假设你管理了一个中小型的数据库系统      你的职责是开发和管理数据库     某人向表中 



插入了大量的数据并收到了一个空间不足的错误信息        你必须断定问题产生的原因     是对 



该用户配额的表空间增加还是你需要增加为表空间分配的磁盘空间          要一步一步地列出你 



需要从数据字典中得到的信息— — 不必给出具体的表和视图的名称 



                                                352 


…………………………………………………………Page 353……………………………………………………………

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



第 17 天     使用 SQL 来生成 SQL 语句 



目标 



在今天你将学习从后台生成更多的 SQL 语句的概念  在今天中你将会明白以下的内容 



    l  从查询中生成 SQL 的好处 



    l  如何从其它的 SQL 语句的输出中生成查询 



    l  如何在 SQL 语句方法中使用数据字典和数据库表 



使用 SQL 来生成 SQL 语句的目的 



   从 SQL 中生成 SQL 语句的意思简而言之就是写一个 SQL 语句 它可以其它形式的 SQL 



语句或命令   到目前为止  你所学所用的 SQL 语句     如对表中数据的操作  或产生一行结 



果  或可以生成一些报告  今天     你将学习写一个可以生成其它查询或 SQL 语句的查询 



   为什么我们需要从查询中生成 SQL 语句呢      最初  这样做的目的是为了简单和有效 



你并不一定需要生成 SQL  语句  但是如果你不这样做你可能会忽视 SQL       的最为强大的特 



性  有许多人甚至根本就不知道有这样的功能存在 



   生成 SQL  语句并不是必须的要求    因为你完全可以手工写并运行全部的 SQL  语句 — 



— 尽管对于特定的工作这是单调和乏味的        可是如果你的工作期限很紧迫的话你可以考虑 



生成 SQL  语句 举例来说   如果你的老板批准了 90  个在市场部工作的人可以访问一些新 



的表的话  而你还想回家去吃晚饭       由于在数据库中的一些用户并不是工作在市场部的 



所以你不能简单地将表的访问权限设为可以公共访问           当你有多个组的用户并且他们的访 



问权限不同的时候  你可能会想用强制性的安全规则 — — 这是一种内建的对用户的访问进 



行控制的方法  在这种情况下     你可以创建一个 SQL 语句来对每一个在市场部工作的人生 



成一个 GRANT 语句  也就是说  它对每一个在市场部工作的人赋予了相同的规则 



   你可以在许多的情况下发现从一个 SQL  语句中生成 SQL  语句的优点       例如  你可能 



要执行一组由许多条相似的 SQL  语句组成的语句组或是你想生成针对数据字典的 DDL 



当从一个 SQL  语句中生成其它的 SQL  语句时   你会经常从你的输出或数据字典或在数据 



库中的计划表中来取得数据      下图给出了这个过程 



                                                    353 


…………………………………………………………Page 354……………………………………………………………

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



   如你在下图所见  可以对数据库执行一个 SELECT        语句   它输出的结果或是数据字典 



中的内部或是在数据库中应用表的内容 你的语句可以将这些结果嵌入到一个或更多的 SQL 



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

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