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

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

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






有必要     你可以执行  ALTER  TABLE 命令来长宽表的列宽 



TNS:listener   Could   Not   Resolve   SID   Given   in   Connect 



Descriptor 



输入 



    SQLDBA》 connect rplew/xxxx@database1 



输出 



    ORA…12505: TNS:listener could not resolve SID given in connect descriptor 



    SQLDBA》 disconnect 



    Disconnected。 



    SQLDBA》 



分析 



    在 ORACLE 数据库中这个错误很常见    listener           在请求客户与远程服务通讯时产生了 



错误    这里是你试图连接数据库             不论是数据库名字错误还是 LISTENER              当掉都是有可能 



的  你检查一个数据库的名字              然后再输入一次         如有必要  将这个问题告知数据库管理 



员 



Insufficient Privileges During Grants 



输入 



    SQL》 grant select on people_tbl to ron; 



输出 



    grant select on people_tbl to ron 



                                                                * 



                                                                            486 


…………………………………………………………Page 487……………………………………………………………

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



    ERROR at line 1: 



    ORA…01749: you may not GRANT/REVOKE privileges to/from yourself 



    SQL》 



输入 



    SQL》 grant select on demo。employee to ron; 



输出 



    grant select on demo。employee to ron 



                                              * 



    ERROR at line 1: 



    ORA…01031: insufficient privileges 



    SQL》 



   这个错误出现在当你试图授予其它的用户表权限而你没有这么做的权利时出现  你必 



需有表授权权限才可以  在  Oracle         中你的权限选项是管理员选项  这就是说你有将指定的 



权限授予其它用户的能力  请检查你的解释器以找到特定的授权选项 



Escape Character in Your Statement……Invalid Character 



    当你在调试 SQL  语句时不能使用脱字符              这种情况在你输入了 SQL  语句到缓冲区或 



文件中以后使用退格键时产生              有时退格键会在你的语句中输入不合法的字符                    这要根据 



你的具体的键盘情况而定            尽管你看不到这些字符 



Cannot Create Operating System File 



    这个错误的产生有好几个原因             最常见的原因是磁盘满了或文件系统的许可权不正确 



如果磁盘满了  你必须删除一些不需要的文件  如果是权限不正确                           请正确地设置它们 

这个错误更可能是操作系统的错误  所以你需要征询系统管理员的建议 



mon Logical Mistakes 



    到现在我们已经讨论了全部的在 SQL 语句中的实际上的错误信息                         它们中的大多数很 



明显  也很容易断定         下边的错误更可能是逻辑错误  它们在稍后产生问题 — — 不是马上 



                                                                        487 


…………………………………………………………Page 488……………………………………………………………

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



Using Reserved Words in Your SQL statement 



输入 



    SQL》 select sysdate DATE  from dual; 



输出 



    select sysdate DATE 



                                  * 



    ERROR at line 1: 



    ORA…00923: FROM keyword not found where expected 



分析 



    在这个例子中查询处理器并不会处理 DATE 字 因为它是一个保留字 由于在SYSDATE 



后边没有逗号  所以处理认为下一个子句应该是 FROM 



输入 



    SQL》 select sysdate 〃DATE〃 



        2    from  dual; 



输出 



      DATE 



      15…MAY…97 



分析 



    注意在这里是如何解决保留字问题的— — 用双引号将它括起来                           它可以让你将 DATE 



作为别名字符串处理 



注   你应该检查你的数据库文档中的保留字列表                    因为不同的解释器中的保留字是不同的 



    当对一个列使用别名时你可能使用双引号也可能不使用  在下边的例子中你就不必使 



用双引号      因为 TODAY 不是一个保留字  所以应该检查你的解释器再进行判断 



输入 



    SQL》 select sysdate TODAY 



        2    from  dual; 



输出 



      TODAY 



      15…MAY…97 



                                                                           488 


…………………………………………………………Page 489……………………………………………………………

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



    SQL》 



The Use of DISTINCT When Selecting Multiple Columns 



输入 



    SQL》 select distinct(city); distinct(zip) 



        2    from  address_tbl; 



输出 



    select distinct(city); distinct(zip) 



                                                      * 



    ERROR at line 1: 



    ORA…00936: missing expression 



    SQL》 



分析 



    CITY 可能比州代码更多  作为一个规则                你应该使用 DISTINCT 命令来选择唯一值 



Dropping an Unqualified Table 



    无论何时你删除表时都要使用工程或所有人的名字                         以避免在数据库中表的名字会重 



复  如果你使用了所有者或工程的名字  那么错误就不会发生 



    删除一个表的语法是非常危险的 



语法 



    SQL》 drop table people_tbl; 



    下边的句子会更安全           因为它使用了所有人来限定所要删除的表 



语法 



    SQL》 drop table ron。people_tbl; 



警告  在删除表时进行资格限定是一个好习惯  尽管有时这一步工作可能不是必需的                                       再 



     你没有进行你所连接的数据进行用户验证时千万不要删除表 



                                                                             489 


…………………………………………………………Page 490……………………………………………………………

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



The Use of Public Synonyms in a Multischema Database 



        同义字对于用户来说会更容易  但是                   公共的同义字可能会把你不想让所有的人 



    都看到的表打开  所以在使用公共同义字                     尤其是在多工程情况下使用公共同义字要 



    非常小心 



The Dreaded Cartesian Product 



输入 



    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 



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