Chinaunix首页 | 论坛 | 博客
  • 博客访问: 349135
  • 博文数量: 30
  • 博客积分: 4041
  • 博客等级: 上校
  • 技术积分: 975
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-15 11:06
文章分类

全部博文(30)

文章存档

2010年(6)

2009年(6)

2008年(18)

我的朋友

分类: Oracle

2009-05-18 11:17:21

学习《sql21自学通》 SQL*PLUS 命令 SET ECHO ON/OFF 当你 set echo on时 你会在执行的时候看到你的SQL 语句 set echo off的意思就是你不想在执行的时候看到 SQL 语句! !你只想看到输出的结果 SET ECHO [ ON | OFF ] SET FEEDBACK ON/OFF FEEDBACK 就是你的查询所输入的行数 例如 如果你运行的 SELECT 语句返回30行数据 那么你的 FEEDBACK将会是 30 rows selected SET FEEDBACK ON 会显示对行的计数 SET FEEDBACK OFF 则在你的结果输出时不会对行进行计数 SET FEEDBACK [ ON | OFF ] SET HEADING ON/OFF HEADING 就是指你的 SELECT 语句的输出结果的头部 储如 LAST_NAME 或CUSTOMER_ID 的就是 SET HEADING ON 是默认的 当然 OFF 的时候就是在输出的时候不输出列标头 SET HEADING [ ON | OFF ] SPOOL FILENAME/OFF SPOOL 可以将你的查询结果直接地输入到一个文件中 要想打开 SPOOL 文件 你需要输入spool filename如果想关掉 SPOOL 文件 你应该输入spool off START FILENAME 大多数的我们所学习的 SQL 命令都是在 SQL>下运行的 另外的一种运行 SQL 语句的方法是创建 SQL 执行文件 在 SQL*PLUS 中 运行 SQL 文件的命令是 START FILENAME START FILENAME ED FILENAME ED 是 ORACLE 7 的用以打开文件 文件是已经存在的 的命令 当你使用 ED 打开一个文件以后 你就进入了一个全屏幕的编辑环境 它的使用要比在 SQL 提示符下输入 SQL语句更容易 你可以使用它来修改你的 SPOOL 文件 你将会发现当你在创建 SQL 脚本的时候你会非常频繁地使用它 因为你出于定制的目的你不得不经常地修改脚本的内容 但是 你的大多数定制工作是用 SQL*PLUS 来完成的 ED FILENAME SELECT 语句将会生成更多的 SELECT 语句来得到上表中的每一个表的行数 INPUT/OUTPUT SQL> SET ECHO OFF SQL> SET FEEDBACK OFF SQL> SET HEADING OFF SQL> SPOOL CNT.SQL SQL> SELECT 'SELECT COUNT(*) FROM ' || TABLE_NAME || ';' 2 FROM CAT 3 / SELECT COUNT(*) FROM ACCT_PAY; SELECT COUNT(*) FROM ACCT_REC; SELECT COUNT(*) FROM CUSTOMERS; SELECT COUNT(*) FROM EMPLOYEES; SELECT COUNT(*) FROM HISTORY; SELECT COUNT(*) FROM INVOICES; SQL SERVER 的诊断工具— — SET 命令 TRANSACT-SQL 提供了一系列的SET 命令可以让你打开不同的选项以帮助分析 TRANSACT-SQL 的语句这里给出了一些常见的SET 命令 l SET STATISTICS IO ON 可以让服务器返回请示的物理和逻辑页数 SQL 21 日自学通(V1.0) 翻译人笨猪 430 l SET STATISTICS TIME O 可以让服务器返回语句的运行时间 l SET SHOWPLAN ON 可以让服务器返回当前正在运行的计划中的查询 l SET NOEXEC ON 可以让服务器编译设计过的查询但不运行 l SET PARSONLY ON 可以让服务器对所设计的查询进行语法检查但并不运行 TRANSACT-SQL 也提供下边的命令来帮助你对输出的显示进行控制 l SET ROWCOUNT N 可以让服务器只返回查询中的前N 行 l SET NOCOUNT ON 不必报告查询所返回的行数 注如果你对TRANSACT-SQL 的语句调整比较关心SQL 那么请参见第15 天的对SQL 语句的优化以提高性能 SQL*PLUS 缓存 SQL*PLUS 缓存是为你特定的SQL 会话所指定的命令存储区域这些命令包括大多数 最近执行过的命令以及你用于定制SQL 会话的如格式化命令和变量赋值之类的命令缓存 就像随机存储器一样这里给出了一些对缓存的最常用的命令 l LIST line_number — — 可以列出缓存中的命令并可以通过行号将它指定为当前行 l CHANGE/old_value/new_value — — 将缓存当前行的旧数值改为新数值 l APPEND text — — 向缓存所在的当前行中追加文本 l DEL — — 将缓存中的当前行删除 l SAVE newfile — — 将缓存中的SQL 语句保存到文件中 l GET filename — — 将某文件中的内容送到缓存中 l / — — 运行缓存中的语句 DESCRIBE 命令 这个命令可以让你不用访问数据字典就可以非常方便地看到表的结构 语法 DESC[RIBE] table_name 现在来看一下我们将要在今天所使用的表的结构 输入 SQL> describe orders SHOW 命令 SHOW 命令显示了当前会话的设置情况从命令的格式到你是谁的信息都有SHOW ALL 则会显示所有的设置在这一部分将会讨论最常见的设置 输入 SQL> show all SAVE GET EDIT 命令 SAVE 命令可以将SQL 缓冲区的内容保存到你所指定名字的文件 GET 命令来查看文件GET 命令与LIST 命令非常相似但是GET 是处理被保存到文件中的SQL 语句的而LIST 则是处理处于缓冲区中的SQL语句的 EDIT 命令来创建一个文件或编辑一个已经存在的文件当运行这个命令以后你将进入一个全屏幕的编辑环境它与WINDOWS 的记事本非常相似你会发现你它来修改文件要比对缓冲区进行编辑容易得多 SET 命令 在ORACLE 的SQL*PLUS 中SET 命令可以改变对会话的设置 选项 LINESIZE:可以让你指定每一行的输出长度 PAPERSIZE:也则显示的行数 TIME 则会把时间作为SQL 提示符的一部分显示 CLEAR 命令 在SQL*PLUS 中设置是在LONGOUT 或退出SQL*PLUS 后自动清除的而其中的一些设置你也可以用CLEAR 命令来清除如 将你的输出格式化 SQL*PLUS 中也有许多的命令可以让你将你的输出格式 TTITLE 与BTITLE 可以让你创建报表的报头在前些天我们提到过查询和输出但是使用SQL*PLUS 你也可以将结果输出到预设的报表中TTITLE命令可以让你在每一页输出的顶部放置页眉BTITLE 则可以在每一页的底部设置页脚对 TTITLE 与BTITLE 的语法格式如下 语法 TTITLE [center|left|right] 'text' [&variable] [skip n] BTITLE [center|left|right] 'text' [&variable] [skip n] 输入 SQL> ttitle 'A LIST OF PRODUCTS' SQL> btitle 'THAT IS ALL' SQL> set pagesize 15 SQL> / 格式化列COLUMN HEADING FORMAT 命令column heading format 可以对从报表中返回的数据的列标头进行重命名并控制数据显示的方式 在HEADING 与FORMAT 命令中常使用COL[NUM] COLUMN 用于定义你想格式化的列你所定义的列必须在SELECT 语句中要出现在这个命令中你也可以列的别名来代替它的全名当使用HEADING 命令时你必须使用COLUMN 命令来定义要列在HEADING 中的布置当使用FORMAT 命令时你也必须使用COLUMN 命令来定义你想要格式化的列使用这三个列的基本语法见下注意HEADING 与FORMAT 命令是可选的在FORMAT的语法中如果数据使用的字符类型或0 到9 的数字时你必须要使用一个a DECIMAL 也可以会用于数字的值上在a 的右边是你所允许的数字的宽度 语法 COL[UMN] column_name HEA[DING] "new_heading" FOR[MAT] [a1|99.99] BREAK ON BREAK ON 命令可以把从SQL 中返回的数据分成一个或多个组如果你依据用户的名字进行分类那么默认的客户名字将只会打印一次以后对应的客户名字就以空白代替了下边的BREAK ON 的基本使用语法 语法 BRE[AK] [ON column1 ON column2...][SKIP n|PAGE][DUP|NODUP] SKIP 选项可以让你跳过每一组的指定行数或页数DUP 或NODUP 可以让你确定是否进行双面打印默认是单面的 COMPUTE 在BREAK ON 命令中也可以使用COMPUTE 命令它可以让你对整个报表或报表中 的每个组进行不同的计算 语法 COMP[UTE] function OF column_or_alias ON column_or_row_or_report 常用的一些函数有 l AVG-对每个组的平均值进行计算 l COUNT-计算每个组中的数据的个数 l SUM-计算每个组的总计结果 在SQL*PLUS 中使用变量 尽管没有进行事实上的程序设计语言中但是你仍然可以在你的SQL 语句中定义变 量在SQL*PLUS 中你可以使用一些特定的选项将在这一部分中讲述来在你的程序中 设定参数来接受用户的输入置换变量& 在SQL 脚本中&表示变量的值如果变量没有进行预定义那么用户会收到输入数值 的提示 DEFINE 在SQL 的脚本中你可以使用DEFINE 来对一个变量赋值如果在你的SQL 脚本中定 义了变量那么在运行时用户不会像你使用&时那样被提示输入数值在下一个例子中使 用与上一个例子相同的SELECT 语句但是这次TBL 的值是在脚本中定义的 输入 SQL> define TBL=products SQL> select * from &TBL; 输出 old 2: from &TBL new 2: from products ACCEPT ACCEPT 可以在运行时允许用户向变量中输入数值它所作的工作与没有DEFINE 的&相同但它的可控性更好它可以给用户一个更好友好的提示 NEW_VALUE NEW_VALUE 命令可以将SELECT 语句中的数值返回给一个没有经你明确定义的变 量语法格式如下 语法 COL[UMN] column_name NEW_VALUE new_name 你可以使用&符号来调用这个值例如 &new_name 在NEW_VALUE 命令中必须使用COLUMN 命令 DUAL 表 DUAL 表是在每一个ORACLE 数据库中都存在的虚拟表它只有一个叫DUMMY 的列和一行值为X 的数据 DECODE 函数 DECODE 函数是SQL*PLUS 中众多功能强大的函数之一— — 也许它的功能是最强大 的标准的SQL 中没有过程函数它是包括在如COBOL 和C 语言中的 DECODE 语句与程序语言中的IF THEN 语句类似对于复杂的报表来说灵活性是 必需的DECODE 可以弥补标准的SQL 与过程语言函数之间的缺陷 语法 DECODE(column1, value1, output1, value2, output2, output3) 语法中的例子是对column1 列执行DECODE 函数如果column1 有一个值为value1 那么将会用output1 来代替当前值如果column1 的值为value2 那么就会用OUTPUT2 来 代替当前值如果column1 中哪两个值都不是那么就会用OUTPUT3 来代替当前值 select 检查表空间 select b.file_id 文件ID号,b.tablespace_name 表空间名,b.bytes 字节数,(b.bytes-sum(nvl(a.bytes,0))) 已使用, sum(nvl(a.bytes,0)) 剩余空间,   sum(nvl(a.bytes,0))/(b.bytes)*100 剩余百分比 from dba_free_space a,dba_data_files b where a.file_id=b.file_id group by b.tablespace_name,b.file_id,b.bytes order by b.file_id;
阅读(690) | 评论(0) | 转发(0) |
0

上一篇:最近一点心得

下一篇:子目录文件检查

给主人留下些什么吧!~~