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


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 
在非标准的文件系统下工作会浪费你大量的时间 你应该检查你的解释器 看一看它 
向你推荐的文件系统 
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 
小说推荐
返回首页返回目录