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