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

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

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




输入 



    SQL》 select a。ssn; p。last_n 



        2    from  address_tbl  a; 



        3              people_tbl  p; 



输出 



        SSN              LAST_NAME 



        303785523        SMITH 



        313507927        SMITH 



        490552223        SMITH 



        312667771        SMITH 



        420001690        SMITH 



        303785523        JONES 



        313507927        JONES 



        490552223        JONES 



        312667771        JONES 



        420001690        JONES 



        303785523        OSBORN 



        313507927        OSBORN 



        490552223        OSBORN 



        312667771        OSBORN 



        420001690        OSBORN 



        303785523        JONES 



        313507927        JONES 



        490552223        JONES 



        312667771        JONES 



        420001690        JONES 



    这个错误会在你没有在 WHERE              子句连接表的时候产生  注意选择了多少行  在前边 



                                                                               490 


…………………………………………………………Page 491……………………………………………………………

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



的表是 4  行  所以你可能想要返回的是 4  行而不是 16 行                      由于没有在 WHERE  中使用联 



接   所以第一个表的中每一行都会分别与第二个表中的每一行相匹配                                  结果就是 4  乘 4  行 



了  不幸的是你的许多表可能不只是 4                  行  而是成千上万行            在这种情况下;  在这种情况 



下不会返回数以亿计的结果                而是你的查询看起来像是停止了反应  Failure to  坚 



坚持标准的输入 



    坚持使用标准的输入方法是一个公认的好习惯                         没有输入员对数据的经常检查                 你将 



会使数据库在非常危险的情况下运行                    一个好的办法就是对使用 SQL 创建的 QA 报表的质 



量进行控制        让它们在一定的时间内运行  在数据提交之前尽可能地更正错误 



Failure to Enforce File System Structure Conventions 



    在非标准的文件系统下工作会浪费你大量的时间                          你应该检查你的解释器              看一看它 



向你推荐的文件系统 



Allowing Large Tables to Take Default Storage Parameters 



    存储参数的定义随解释器的不同而不同                      但是它们通常是比较小的               当在默认的存储 



空间中生成大的动态表时  常会导致碎片的产生  这使数据库的性能受到了很大的影响 



在表设计时进行较好的计划可以避免这一问题  下边的例子使用的是 ORACLE                                     的存储参 



数 



    INPUT: 



    SQL》 create table test_tbl 



        2    (ssn      number(9)  not  null; 



        3    name    varchar2(30)  not  null) 



        4    storage 



        5    (initial  extent  100M 



        6      next  extent          20M 



        7      minextents  1 



        8      maxextents  121 



        9      pctincrease  0}; 



                                                                                 491 


…………………………………………………………Page 492……………………………………………………………

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



Placing Objects in the System Tablespace 



     下边的例子给出了一个在系统表空间中创建的表                                      尽管语句并没有返回任何错误                        但 



是它将会在以后导致问题 



输入 



     SQL》 create table test_tbl 



         2    (ssn      number(9)  not  null; 



         3    name    varchar2(30)  not  null) 



         4    tablespace  SYSTEM 



         5    storage 



         6    (initial  extent  100M 



         7    next  extent          20M 



         8    minextents  1 



         9    maxextents  121 



         10  pctincrease  0}; 



     下边的例子更正了这个所谓的错误 



输入 



     SQL》 create table test_tbl 



         2    (ssn      number(9)  not  null; 



         3    name    varchar2(30)  not  null) 



         4    tablespace  linda_ts 



         5    (initial  extent  100M 



         6      next  extent          20M 



         7    minextents  1 



         8    maxextents  121 



         9    pctincrease  0}; 



分析 



       在 Oracle    中  系统表空间是由系统对象如数据字典所使用的                                      如果你在这个空间中 



放置了动态表             由于它们会增大  你的运行将是危险的                              至少它要占用自由空间  这会可 



能导致你的数据库崩溃                   这时数据库可能是无法恢复的                         所以你应该将应用程序和用户表 



                                                                                                    492 


…………………………………………………………Page 493……………………………………………………………

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



保存在指定的表空间中 



Failure to press Large Backup Files 



   如果你导出文件很大且没有压缩的话  你需要存储的文件可能会超过磁盘空间的大小 



   一定要压缩导出文件     如果你是在磁盘上存有历史记录文件而不是在磁带上  这些文 



   件可以被压缩以节省磁盘空间 



Failure to Budget System Resources 



   你应该在创建你的数据库时对你的系统进行预先估测           没有进行估测的结果将会使你 



   的数据库性能极差    你应该知道数据库是使用事务       数据仓库还是只有查询  数据库 



   的功能对 ROLLBACK 的大小有直接的影响  而数据库的用户数则对 USERS 和 TEMP 



   表空间的大小有影响     你是否有足够的空间来存贮你的大型表呢  表和索引应该被存 



   储在不同的磁盘上以减少磁盘访问冲突        你也应该将数据表空间和历史记录文件分布 



   于不同的设备以减少磁盘访问量  这都是在估测系统资源时要考虑的内容 



Preventing Problems with Your Data 



   你的数据处理中心应该有系统备份功能         如果你的数据库是中小型的       你可以使用 



   EXPORT 命令来将数据预先导出并确保数据备份  你应该将导出的备份文件存储于另 



   一个安全的地点    由于这些文件很大  所以它可能要占用较多的磁盘空间 



Searching for Duplicate Records in Your Database 



   如果你的数据库进行了很好的预先规划        那就不会出现冗余记录问题      你应该通过使 



   用约束  外部关键字和唯一值索引来避免冗余记录 



总结 



   错误的类型很多 — — 可能有几百个 — — 会出现你的工作道路上和你的数据中  幸运的 



   是大多数错误和过失不会造成灾难而且容易处理  但是         其中一些可能是非常严重的 



                                                    493 


…………………………………………………………Page 494……………………………………………………………

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



   所以你认真对待它      如果你不深究它可能会复杂化        如果你犯了错误  你应该明确的 



   采用你所学习的经验 



   技巧   我们更喜欢从数据库的文档中找错误信息           尤其是对于偶然发现的一些不常见 



   的错误。   错误文件和故障排查的价值是不可估量的 



   注  今天我们给出了在 PERSONAL  ORACLE  7  中的一些常见的错误及解决方案  对 



   于更详细的内容你要参阅你的数据库相关文档 



   问与答 



   问  如果我每个错误都可以处理  那我还担心什么呢 



   答  对  大多数错误很容易处理       但是如果你删除了一个在使用环境中的表呢            你也 



   许需要几个小时或几天才能恢复它  这段时间数据库不能工作               为了修复它你耽搁了 



   许多人的时间     你的老板会高兴吗 



   问  有什么建议可以避免错误 



   答  只要是人  你就不可能避免所有的错误  但是          你通过练习并汲取经验你可以避 



   免它们中的大多数  从而使你的工作更轻松 



校练场 



   1。  一个用户打电话说  “ 我不能登录数据库了       昨天还能呢     你能帮帮我吗    你该如 



     何做 



   2。  为什么表在存储子句中有表空间项 



练习 



   1。  如果你以 SYSTEM 身份登录了数据库 你想删除你的计划中的一个名字叫HISTORY 



     的表  如果你的用户 ID 是 JSMITH   那么正确的语法是怎样的 



   2。  更正下边语句的错误 



      INPUT: 



         SQL》 select sysdate DATE 



             2    from  dual; 



                                                         494 


…………………………………………………………Page 495……………………………………………………………

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



           OUTPUT: 



                 select sysdate DATE 



                                               * 



                 ERROR at line 1: 



                      ORA…00923: FROM keyword not found where expected 



                                                                                                           495 


…………………………………………………………Page 496……………………………………………………………

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



第三周回顾 



   这是多产的一周  在这一周中你看到了 SQL  的灵活性  并向你讲解了如何在现实世界 



中应用这些特点  并对一些流行的 SQL 进行了介绍       你应该知道了如何使用解释器中提供 



了工具来让你的代码更加易读  在现在为止        你已经知道了所有的 SQL 解释器的一些共有 



概念  尽管在语法上它们可能会不同 



   你也对数据字典有了一个清楚的认识        知道了在它之中存储了些什么       以及如何从它 



们中获得有用的数据     如果你知道了如何从 SQL  语句中生成 SQL  语句    那么你的应用能 



力将会飞跃到一个新的高度 



   什么是错误   你不可能避免语法和逻辑上的错误  但是通过在 SQL  中的实际试验  你 



将学习到如何避免大多数的错误       而且错误也是一个非常好的学习机会 



                                                     496 


…………………………………………………………Page 497……………………………………………………………

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



附件 A         在 SQL  中的常见术语 



ALTER DATABASE 



ALTER DATABASE database_name; 



    ALTER  DATABASE  命令可以改变数据库的设计尺寸               它的语法根据数据库系统的不 



同差别很大 



ALTER USER 



ALTER USER user 



ALTER USER 可以改变像密码之类的用户的系统设置 



BEGIN TRANSACTION 



1》 BEGIN TRANSACTION transaction_name 



2》 transaction type 



3》 if exists 



4》 begin 



    BEGIN TRANSACTION   语句表明要开始一个用户事务              事务在遇到 MITTED 命 



令   参见MIT TRANSACTION       或 CANCLED    参见 ROLLBACK  TRANSACTION 



时终止  一个事务是一个逻辑上的工作单位  ion is a logical unit of work。 



CLOSE CURSOR 



close cursor_name 



    CLOSE cursor_name   语法将关闭游标并清除掉它们中的数据               要想彻底地删除游标 



需要使用 DEALLOCATE CURSOR   语句 



                                                                         497 


…………………………………………………………Page 498……………………………………………………………

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



MIT TRANSACTION 



SQL》 MIT; 



    MIT TRANSACTION  语句将保存所有的从一个事务开始以后 也就是自从BEGIN 



TRANSACACTION语句运行以后               所做的工作 



CREATE DATABASE 



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