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


5 set echo on 
6 set feedback on 
7 … SQL STATEMENT 
8 select * 
9 from products 
10 
SQL》 
如果想看一个脚本文件是如何注释的 请输入 
SQL》 edit query10 
高级报表 
现在我们来做一个游戏 通过今天你已经学习的以及你在此之前学习过的概念 你现 
在可以创建一个非常奇特的报表 假设你的脚本名字为 report1。sql 运行它以后 坐下来 
看它的结果 
输入 
SQL》 @report1 
输出 
SQL》 set echo on 
SQL》 set pagesize 50 
SQL》 set feedback off 
SQL》 set newpage 0 
SQL》 col product_name hea "PRODUCT|NAME" for a20 trunc 
SQL》 col unit_cost hea "UNIT|COST" for 99。99 
SQL》 col product_qty hea "QTY" for 999 
SQL》 col total for 99;999。99 
SQL》 spool report 
SQL》 pute sum of total on customer 
SQL》 pute sum of total on report 
SQL》 break on report on customer skip 1 
469 
…………………………………………………………Page 470……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
SQL》 select o。customer; p。product_name; p。unit_cost; 
2 o。product_qty; (p。unit_cost * o。product_qty) total 
3 from orders o; 
4 products p 
5 where o。product_id = p。product_id 
6 order by customer 
7 / 
PRODUCT UNIT 
CUSTOMER QTY TOTAL 
NAME COST 
JONES and SONS MICKEY MOUSE LAMP 29。95 50 1;497。50 
NO 2 PENCILS 20 PA 1。99 10 19。90 
COFFEE MUG 6。95 10 69。50 
Sum 1;586。90 
PARAKEET CONSULTING GROUP MICKEY MOUSE LAMP 29。95 5 149。75 
NO 2 PENCILS 20 PA 1。99 15 29。85 
SQL MAND REFERENC 29。99 10 299。90 
BLACK LEATHER BRIEFC 99。99 1 99。99 
FAR SIDE CALENDAR 10。50 22 231。00 
Sum 810。49 
PLEWSKY MOBILE CARWASH MICKEY MOUSE LAMP 29。95 1 29。95 
BLACK LEATHER BRIEFC 99。99 5 499。95 
BLACK LEATHER BRIEFC 99。99 1 99。99 
NO 2 PENCILS 20 PA 1。99 10 19。90 
NO 2 PENCILS 20 PA 1。99 10 19。90 
Sum 669。69 
Sum 3;067。08 
SQL》 Input truncated to 9 characters 
spool off 
分析 
在这个脚本中做了许多的工作 如果你看到了实际的 SQL 语句 你可以知道它是从两 
个表中选择了数据并对它们进行了计算功能 语句在 WHERE 中归并了两个表并将它们安 
照客户的名字进行了排序 这只是基本的 此外 SQL*PLUS 按照你所看到的那样对日期 
进行了格式化处理 BREAK 命令对报表进行了分组 并对每一组和全部的数据进行了汇 
总 
470 
…………………………………………………………Page 471……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
总结 
今天主要讲述了 ORACLE 对标准的 SQL 的扩展 这些命令只是你在 SQL*PLUS 的可 
用命令中的一小部分 如果你使用 ORACLE 的产品 那么请检查你的数据库文档 那里有 
你今天学习的内容 而且你还可以从中知道更多的内容 你会发现你几乎可以用 SQL*PLUS 
来完成任何报表工作而无需面向过程型语言的帮助 如果你没有使用 ORACLE 的产品 那 
么今天的所学将会对你从数据库中获得数据的方法得到提高 许多的 SQL 解释器都对标准 
的 SQL 进行了扩展和增强 
问与答 
问 我既然可以直接用 SQL 来得到结果 那么为什么我还要在 SQL*PLUS 上花这么 
多的时间 
答 如果你需要生成简单的报表 那么直接用 SQL 就行了 但是使用 SQL*PLUS 你 
可以做得更快 而且可以肯定的是你的报表可以需要的内容是非常多的 
问 如果 DUAL 表没有 COLUMN 我应该如何选择它 
答 因为 SYSDATE 是一个预定义的列 所以你可以从 DUAL 中选择 SYSDATE 或任 
何其它的有效的表 
问 我是否可以在 DECODE 中使用其它的 DECODE 
答 当然可以 它是可以嵌套的 在 SQL 中你可以在函数中运行其它的函数来得到你 
想要的结果 
校练场 
1 哪些命令可以改变你的 SQL 会话的性能 
2 你可以在 SQL 的脚本中提示用户输入参数并根据输入的参数运行吗 
3 如果你对 CUSTOMERS 表创建了一个汇总报表 你如果在你的报表中对你的数据进行 
分组 
4 你在使用 LOGIN。SQL 文
小说推荐
返回首页返回目录