友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
SQL 21日自学通(V3.0)(PDF格式)-第55部分
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!
问 静态的 SQL 比动态的 SQL 灵活性差 尽管它的性能要比动态的好 对不对
练习
1 如果你没有使用 SYBASE 或 MICROSOFT 的 SQL SERVER 那么请你比较一个你的产
品对 SQL 的扩展与今天所讲的有何不同
2 写一组 SQL 语句 它可以对一些已知的条件进行检测 如果条件为真 执行一些操作
否则的话执行另一些操作
431
…………………………………………………………Page 432……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
第 20 天 SQL*PLUS
目标
今天你将会学习 SQL*PLUS 这种 SQL 是针对 ORACLE 的 RDBMS 的 在今天的结
束 你将会明白 SQL*PLUS 的下述内容
l 如何使用 SQL*PLUS 的缓存
l 如何格式化报表
l 如何操作日期
l 如何创建交互式查询
l 如何构建高级报表
l 如何使用强大的 DECODE 函数
简介
我们介绍 SQL*PLUS 的原因是由于 ORACLE 数据库在关系数据库市场中所处的优势
地位以及 SQL*PLUS 为用户提供的强大功能及灵活性 SQL*PLUS 在许多方面与
TRANSACT…SQL 类似 见第 19 天 TRANSACT…SQL 简介 它们都实现了 ANSI 标准
的 SQL 它仍是所有 SQL 解释器的骨架 的大部能力
SQL*PLUS 命令可以增强 SQL 会话能力并对从数据库返回的查询的结果进行格式上的
增强 它也可以像一个专业化的报表生成器对报表进行格式化 SQL*PLUS 对 ANSI 标准
的 SQL 和 PL/SQL 进行了补充以帮助关系型数据库程序员们取得满意的数据格式
SQL*PLUS 缓存
SQL*PLUS 缓存是为你特定的 SQL 会话所指定的命令存储区域 这些命令包括大多数
最近执行过的命令以及你用于定制 SQL 会话的如格式化命令和变量赋值之类的命令 缓存
就像随机存储器一样 这里给出了一些对缓存的最常用的命令
l LIST line_number — — 可以列出缓存中的命令并可以通过行号将它指定为当前行
432
…………………………………………………………Page 433……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
l CHANGE/old_value/new_value — — 将缓存当前行的旧数值改为新数值
l APPEND text — — 向缓存所在的当前行中追加文本
l DEL — — 将缓存中的当前行删除
l SAVE newfile — — 将缓存中的 SQL 语句保存到文件中
l GET filename — — 将某文件中的内容送到缓存中
l / — — 运行缓存中的语句
让我们用一个简单的 SQL 语句来开始
输入
SQL》 select * from products where unit_cost 》 25;
输出
PRO PRODUCT_NAME UNIT_COST
P01 MICKEY MOUSE LAMP 29。95
P06 SQL MAND REFERENCE 29。99
P07 BLACK LEATHER BRIEFCASE 99。99
LIST 命令可以列出在缓存中最近执行过的命令 输出是非常简单的
SQL》 list
1 select *
2 from products
3* where unit_cost 》 25
分析
注意 在每一行的前边都有一个数字 这个数字对于缓存来说非常重要 它就像一个
指针一样可以让你通过 SQL*PLUS 来对指定行进行修改 SQL*Plus buffer 不是全屏幕编辑
的 当你按下回车后 你不能使用游标来回到上一行 如下例所示
输入
SQL》 select *
2 from products
3 where unit_cost 》 25
4 /
注 与 SQL 命令一样 你在 SQL*PLUS 中既可以用大写字符也可以用小写字符
433
…………………………………………………………Page 434……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
技巧 SQL*PLUS 中的大部分命令都可以缩写 例如 LIST 可以缩写为 L
你可以在 L 后边加上一个数字来跳转到缓存中的指定行
输入
SQL》 l3
3* where unit_cost 》 25
分析
注意 3 后边有一个星号 星号表明了当前的行号 在今天的例子中你应该注意星号
如果一行被标为*号 那么你就可以对它进行编辑
由于你知道了当前的行是第 3 行 你可以对它进行随意的改变 CHANGE 的语法格式
如下
语法
CHANGE/old_value/new_value 或 C/old_value/new_value
输入
SQL》 c/》/《
输出
3* where unit_cost 《 25
输入 :
SQL》 l
输出
1 select *
2 from products
3* where unit_cost 《 25
分析
在第 3 行中的小于号已经被改成大于号了 注意在改变以后的新行会被显示 如果你
使用 LIST 命令或 L 你就可以看到完整的语句 现在我们来运行一下语句
输入
SQL》 /
输出
PRO PRODUCT_NAME UNIT_COST
434
…………………………………………………………Page 435……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
P02 NO 2 PENCILS 20 PACK 1。99
P03 COFFEE MUG 6。95
P04 FAR SIDE CALENDAR 10。5
P05 NATURE CALENDAR 12。99
分析
在 SQL》后边的正斜线的意思就是运行处于缓冲区中的任何语句
输入
SQL》L
输出
1 select *
2 from products
3* where unit_cost 《 25
现在 你可以通常在 SQL》后边输入行号和相应的文字来增加对应行中的内容 当你
增加完以后 你就得到了一个完整的语句组 如下例
输入
SQL》 4 order by unit_cost
SQL》 1
输出
1 select *
2 from products
3 where unit_cost 《 25
4* order by unit_cost
分析
如果想删除一行比增加一行还容易 例如你输入 del4 就删除了缓冲区中的第 4 行 现
在我们再看一下语句清单 看看语句是否真的删除了
输入
SQL》 DEL4
SQL》 l
输出
1 select *
435
…………………………………………………………Page 436……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
2 from products
3* where unit_cost 《 25
加入一行或多行语句的另一种方法是使用 INPUT 命令 就像你在上边的例子中所看到
的那样 当前行现在为 3 输入 INPUT 后按回车 然后你就可以输入文本了 这时你每按
一次回车就会增加一行 如果你按下两次回车 你就又回到了 SQL》 提示符下 这时如果
你看一下语句的列表 就像下边的例子一样 你可以看到第 4 行已经被加入了
输入
SQL》 input
4i and product_id = 'P01'
5i
SQL》 l
输出
1 select *
2 from products
3 where unit_cost 《 25
4 and product_id = 'P01'
5* order by unit_cost
如果你想向当前行中追加文本 你可以在 APPEND 命令的后边写上文本 将输出与上
一个例子做一下比较 在下边的例子中当前行是第 5 行
输入
SQL》 append desc
输出
5* order by unit_cost desc
现在使用 LIST 命令来看一下完整的语句
输入
SQL》 l
输出
1 select *
2 from products
3 where unit_cost 《 25
436
…………………………………………………………Page 437……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
4 and product_id = 'P01'
5* order by unit_cost desc
你也可以使用 CLEAR BUFFER 来清除缓冲区 就像你在稍后所见到的那样 你可以
使用 CLEAR 命令来清除指定的缓冲区的内容
输入
SQL》 clear buffer
输出
buffer cleared
输入
SQL》 l
输出
No lines in SQL buffer。
分析
很明显 你不能从空的缓冲区中得到任何信息的 尽管你不是管理人员 但是你却有
足够灵活的办法来管理缓冲区中的命令
DESCRIBE 命令
这个命令可以让你不用访问数据字典就可以非常方便地看到表的结构
语法
DESC'RIBE' table_name
现在来看一下我们将要在今天所使用的表的结构
输入
SQL》 describe orders
输出
Name Null? Type
ORDER_NUM NOT NULL NUMBER(2)
CUSTOMER NOT NULL VARCHAR2(30)
PRODUCT_ID NOT NULL CHAR(3)
PRODUCT_QTY NOT NULL NUMBER(5)
DELIVERY_DATE DATE
437
…………………………………………………………Page 438……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
下边的语句将使用 DESC 来代替 DESCRIBE
输入
SQL》 desc products
输出
Name Null? Type
PRODUCT_ID NOT NULL VARCHAR2(3)
PRODUCT_NAME NOT NULL VARCHAR2(30)
UNIT_COST NOT NULL NUMBER(8;2)
分析
DESC 给出了每个列的名字 列中是否必需有数据 NULL 或 NOT NULL 以及每个
列的数据类型 如果你写了多个查询 你会发现你很少有不用这个命令的时候 在相当长
的时间中该命令可以帮助你节省许多的编程时间 没有 DESCRIBE 命令 你将不得不从数
据库文档甚至是数据库的操作手册中搜索相应的数据字典来找到你所需要的信息
SHOW 命令
SHOW 命令显示了当前会话的设置情况 从命令的格式到你是谁的信息都有 SHOW
ALL 则会显示所有的设置 在这一部分将会讨论最常见的设置
输入
SQL》 show all
输出
appinfo is ON and set to 〃SQL*Plus〃 cmdsep OFF
arraysize 15 patibility version NATIVE
automit OFF concat 〃。〃 (hex 2e)
autoprint OFF copymit 0
autotrace OFF copytypecheck is ON
blockterminator 〃。〃 (hex 2e) crt 〃〃
btitle OFF and is the 1st few characters define 〃&〃 (hex 26)
of the next SELECT statement echo OFF
closecursor OFF editfile 〃afiedt。buf〃
colsep 〃 〃 embedded OFF
438
…………………………………………………………Page 439……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
escape OFF serveroutput OFF
feedback ON for 6 or more rows showmode OFF
flagger OFF spool OFF
flush ON sqlcase MIXED
heading ON sqlcode 1007
headsep 〃|〃 (hex 7c) sqlcontinue 〃》 〃
linesize 100 sqlnumber ON
lno 6 sqlprefix 〃#〃 (hex 23)
long 80 sqlprompt 〃SQL》 〃
longchunksize 80 sqlterminator 〃;〃 (hex 3b)
maxdata 60000 suffix 〃SQL〃
newpage 1 tab ON
null 〃〃 termout ON
numformat 〃〃 time OFF
numwidth 9 timing OFF
pagesize 24 trimout ON
pause is OFF trimspool OFF
pno 1 ttitle OFF and is the 1st few characters of
recsep WRAP the next SELECT statement
recsepchar 〃 〃 (hex 20) underline 〃…〃 (hex 2d)
release 703020200 user is 〃RYAN〃
repheader OFF and is NULL verify ON
repfooter OFF and is NULL wrap : lines will be wrapped
SHOW 命令显示了与登录用户有关的详细的设置 如果你是多用户数据库的用户 而
你想知道你是如何登录的 那么你可以使用下边的命令
输入
SQL》 show user
输出
user is 〃RYAN〃
如果你想知道当前 LINE 的大小 你可以输入
439
…………………………………………………………Page 440……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
输入
SQL》 show linesize
输入
linesize 100
文件命令
在 SQL*PLUS 中有许多命令可以帮助你来操作文件 这些命令包括创建文件 使用全
屏幕编辑软件来编辑文件以及将输出重定向到一个文件等等 你也会知道在创建了一个
SQL*PLUS 文件如何去运行它
SAVE GET EDIT 命令
SAVE 命令可以将 SQL 缓冲区的内容保存到你所指定名字的文件中 例如
输入
SQL》 select *
2 from products
3 where unit_cost 《 25
SQL》 save query1。sql
输出
Created file query1。sql
分析
当文件被保存以后 你可以使用 GET 命令来查看文件 GET 命令与 LIST 命令非常相
似 但是 GET 是处理被保存到文件中的 SQL 语句的 而 LIST 则是处理处于缓冲区中的 SQL
语句的
输入
SQL》 get query1
输出
1 select *
2 from products
3* where unit_cost 《 25
440
…………………………………………………………Page 441……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
你可以使用 EDIT 命令来创建一个文件或编辑一个已经存在的文件 当运行这个命令
以后 你将进入一个全屏幕的编辑环境 它与 WIND
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!