《SQL 21日自学通(V3.0)(PDF格式)》第147章


分组 
4 你在使用 LOGIN。SQL 文件时有哪些限制 
5 DECODE 函数与过程语言中的 LOOP 功能是等价的 对不对 
6 如果你将查询重新定向到一个已经存在的文件中 你的输出将追加到这个文件 对不对 
471 
…………………………………………………………Page 472……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
练习 
1 利用在今天开始时的 PRODUCTS 表 写一个查询选择其中的所有数据并对记录的个数 
进行汇总 要生成报表并且不得使用 SET FEEDBACK ON 命令 
2 假如今天是 1998 年 5 月 12 日星期一 写一个查询产生下边的输出 
Today is Monday; May 12 1998 
3 试一下下边的语句 
1 select * 
2 from orders 
3 where customer_id = "001" 
4* order by customer_id; 
不需要在缓冲区中重新输入这些语句 将 FROM 子句中的表改为 CUSTOMERS 
在 ORDER BY 子句中加入 DESC 
472 
…………………………………………………………Page 473……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
第 21 天 常见的 SQL 错误及解决方法 
目标 
欢迎来到第 21 天 在今天你将学习下边的内容 
l 几种典型的错误及它们的解决方案 
l SQL 用户常犯的逻辑错误 
l 防止再犯日常错误的办法 
介绍 
今天你将会看到一些人们 不论是菜鸟还是老鸟 在使用 SQL 常犯的错误 你也不可 
避免地要犯这些错误 但是对这些错误熟悉了以后会帮助你在尽可以短的时间内解决它们 
注意 我们使用 PERSONAL ORACLE 7 来进行我们的例子 在你的解释器中也会有与之 
类似的错误 只是错误的代码和名字可能会不相同 我们在 SQL*PLUS 中运行这些 
语句并将 ECHO 和 FEEDBACK 设置为 ON 以看到这些语句 
要知道一些错误确实可以产生的错误信息 然而逻辑语法的不充分可以会在运行时导 
致更大的错误 通过仔细的校审 你会避免大多数的错误 尽管你会经常被错误卡住 
常见的错误 
在这一部分你将会见到在所有的 SQL 语句中看到的一些常见的错误 大多数的错误简 
单到你甚至想打自己几个耳光 可是也有一些错误看上去很明显但却很容易误码率解 
Table or View Does Not Exist 
当你在试图访问一个并不存在的表时产生的错误 这是很明显的 例如 
输入 
SQL》 @tables。sql 
输出 
473 
…………………………………………………………Page 474……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
SQL》 spool tables。lst 
SQL》 set echo on 
SQL》 set feedback on 
SQL》 set pagesize 1000 
SQL》 select owner|| "。" || table_name 
2 from sys。dba_table 
3 where owner = "SYSTEM" 
4 order by table_name 
5 / 
from sys。dba_table 
* 
ERROR at line 2: 
ORA…00942: table or view does not exist 
SQL》 spool off 
SQL》 
分析 
注意在表的名字后边的星号 正确的名是 sys。dba_tables 表名中少了一个 S 
但是如果你已经知道了表是存在的而你仍然收到了错误信息呢 有时你收到这个信息 
是因为表并不存在 但是也可以是由于安全原因 — — 也就是说 表是存在的 但是你没有 
权限访问它 这个错误用数据库服务人员的话来精确地说就是 你没有权限来访问这个表 
技巧 在着急之前 请立即先确认在 DBA 的帐号或可用的工程帐号中这个表是否存在 
你会经常发现表不存在的原因是因为用户没有正当的访问这个表的权限 
Invalid Username or Password 
输入 
SQL*Plus: Release 3。2。3。0。0 on Sat May 10 11:15:35 1997 
Copyright (c) Oracle Corporation 1979; 1994。 All rights reserved。 
Enter user…name: rplew 
Enter password: 
474 
…………………………………………………………Page 475……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
输出 
ERROR: ORA…01017: invalid username/password; logon denied 
Enter user…name: 
这个错误的原因是因为用户名或密码不正确 再试一次 如果还不成功 那么你的密 
码已经变了 如果你确认你输入的用户名和密码是正确的 那么在你访问多个数据库时确 
认你要联接的数据库是正确的 
FROM Keyword Not Specified 
输入 
SQL》 @tblspc。sql 
输出 
SQL》 spool tblspc。lst 
SQL》 set echo on 
SQL》 set feedback on 
SQL》 set pagesize 1000 
SQL》 select substr(tablespace_name;1;15) a; 
2 substrfile_name; 1;45) c; bytes 
3 from sys。dba_data_files 
4 order by tablespace_name; 
substrfile_name; 1;45) c; bytes 
* 
ERROR at line 2: 
ORA…00923: FROM keyword not found where expected 
SQL》 spool off 
SQL》 
分析 
这个错误容易让人误解 关键字 FROM 是有的 但是你在第二行的 SUBSTR 中缺了 
一个括号 这个错误也可能是由于在 SELECT 语句中缺少列名导致的 如果在 SELECT 中 
的列名之后没有逗号 那么查询的处理机制会认为没有 FROM 关键字 上边的语句可以更 
475 
…………………………………………………………Page 476……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
正如下 
SQL》 select substr(tablespace_name;1;15) a; 
2 substr(file_name;1;45) c; bytes 
3 from sys。d
小说推荐
返回首页返回目录