﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-软件艺术思考者-随笔分类-about database</title><link>http://www.blogjava.net/zhanglijun33/category/17944.html</link><description>混沌，彷徨，立志，蓄势...</description><language>zh-cn</language><lastBuildDate>Thu, 06 Aug 2015 10:49:53 GMT</lastBuildDate><pubDate>Thu, 06 Aug 2015 10:49:53 GMT</pubDate><ttl>60</ttl><item><title>mysql触发器：每天增加一个随机数。</title><link>http://www.blogjava.net/zhanglijun33/archive/2015/08/06/426624.html</link><dc:creator>智者无疆</dc:creator><author>智者无疆</author><pubDate>Thu, 06 Aug 2015 01:26:00 GMT</pubDate><guid>http://www.blogjava.net/zhanglijun33/archive/2015/08/06/426624.html</guid><wfw:comment>http://www.blogjava.net/zhanglijun33/comments/426624.html</wfw:comment><comments>http://www.blogjava.net/zhanglijun33/archive/2015/08/06/426624.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhanglijun33/comments/commentRss/426624.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhanglijun33/services/trackbacks/426624.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: mysql触发器，5.6版。&nbsp;&nbsp;<a href='http://www.blogjava.net/zhanglijun33/archive/2015/08/06/426624.html'>阅读全文</a><img src ="http://www.blogjava.net/zhanglijun33/aggbug/426624.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhanglijun33/" target="_blank">智者无疆</a> 2015-08-06 09:26 <a href="http://www.blogjava.net/zhanglijun33/archive/2015/08/06/426624.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>正常的sql（带中文参数），在mysql-front里可以查出数据，在程序里却查不出来</title><link>http://www.blogjava.net/zhanglijun33/archive/2015/07/08/426098.html</link><dc:creator>智者无疆</dc:creator><author>智者无疆</author><pubDate>Wed, 08 Jul 2015 10:23:00 GMT</pubDate><guid>http://www.blogjava.net/zhanglijun33/archive/2015/07/08/426098.html</guid><wfw:comment>http://www.blogjava.net/zhanglijun33/comments/426098.html</wfw:comment><comments>http://www.blogjava.net/zhanglijun33/archive/2015/07/08/426098.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zhanglijun33/comments/commentRss/426098.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhanglijun33/services/trackbacks/426098.html</trackback:ping><description><![CDATA[<div><span style="color: #000000; font-family: verdana, 'courier new'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; float: none;">原因：中文参数字符编码有问题，在程序里调试的时候虽然不是乱码，但数据库依旧不认识。这需要在jdbc.mysql.url里指定数据库使用的字符编码：utf-8.</span><br style="color: #000000; font-family: verdana, 'courier new'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px;" /><span style="color: #000000; font-family: verdana, 'courier new'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; float: none;">jdbc.properties里</span><br style="color: #000000; font-family: verdana, 'courier new'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px;" /><span style="color: #000000; font-family: verdana, 'courier new'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; float: none;">mysql.jdbc.url=jdbc:mysql://192.168.1.246:3306/wxb_site1?useUnicode=true&amp;characterEncoding=utf-8</span><br style="color: #000000; font-family: verdana, 'courier new'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px;" /><span style="color: #000000; font-family: verdana, 'courier new'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; float: none;">jndi的写法：&nbsp;context.xml里的写法：&lt;Resource name="jndi/wxb_site"&nbsp; auth="Container"&nbsp;</span><br style="color: #000000; font-family: verdana, 'courier new'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px;" /><span style="color: #000000; font-family: verdana, 'courier new'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; float: none;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type="javax.sql.DataSource" username="root" password="root"&nbsp;&nbsp;&nbsp;</span><br style="color: #000000; font-family: verdana, 'courier new'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px;" /><span style="color: #000000; font-family: verdana, 'courier new'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; float: none;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; driverClassName="com.mysql.jdbc.Driver"</span><span style="font-family: verdana, 'courier new'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; color: #ff0000;">&nbsp;url="jdbc:mysql://192.168.1.246:3306/wxb_site1?useUnicode=true&amp;amp;characterEncoding=utf-8"<br /></span><span style="color: #000000; font-family: verdana, 'courier new'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; float: none;">&nbsp;&nbsp; maxActive="100" maxIdle="10" maxWait="-1"/&gt;</span></div><img src ="http://www.blogjava.net/zhanglijun33/aggbug/426098.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhanglijun33/" target="_blank">智者无疆</a> 2015-07-08 18:23 <a href="http://www.blogjava.net/zhanglijun33/archive/2015/07/08/426098.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql相关</title><link>http://www.blogjava.net/zhanglijun33/archive/2007/08/19/mysql_Procedure.html</link><dc:creator>智者无疆</dc:creator><author>智者无疆</author><pubDate>Sun, 19 Aug 2007 11:17:00 GMT</pubDate><guid>http://www.blogjava.net/zhanglijun33/archive/2007/08/19/mysql_Procedure.html</guid><wfw:comment>http://www.blogjava.net/zhanglijun33/comments/137966.html</wfw:comment><comments>http://www.blogjava.net/zhanglijun33/archive/2007/08/19/mysql_Procedure.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zhanglijun33/comments/commentRss/137966.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhanglijun33/services/trackbacks/137966.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: mysql存储过程｜｜过去七天日报的查询sql&nbsp;&nbsp;<a href='http://www.blogjava.net/zhanglijun33/archive/2007/08/19/mysql_Procedure.html'>阅读全文</a><img src ="http://www.blogjava.net/zhanglijun33/aggbug/137966.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhanglijun33/" target="_blank">智者无疆</a> 2007-08-19 19:17 <a href="http://www.blogjava.net/zhanglijun33/archive/2007/08/19/mysql_Procedure.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORCALE的使用相关</title><link>http://www.blogjava.net/zhanglijun33/archive/2006/10/27/aboutOrcale.html</link><dc:creator>智者无疆</dc:creator><author>智者无疆</author><pubDate>Fri, 27 Oct 2006 02:40:00 GMT</pubDate><guid>http://www.blogjava.net/zhanglijun33/archive/2006/10/27/aboutOrcale.html</guid><wfw:comment>http://www.blogjava.net/zhanglijun33/comments/77555.html</wfw:comment><comments>http://www.blogjava.net/zhanglijun33/archive/2006/10/27/aboutOrcale.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/zhanglijun33/comments/commentRss/77555.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhanglijun33/services/trackbacks/77555.html</trackback:ping><description><![CDATA[
		<p>
				<span id="adcontent">
						<font face="Arial" size="2">心得共享：Oracle经验技巧集锦</font>
				</span>
		</p>
		<span id="adcontent">
		</span>
		<p>
				<font face="Arial" size="2">1．删除表空间</font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">DROP TABLESPACE TableSpaceName [INCLUDING CONTENTS [AND DATAFILES]]<br /><br />2．删除用户</font>
				</font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">DROP USER User_Name CASCADE</font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">3．删除表的注意事项</font>
		</p>
		<p>
				<font face="Arial" size="2">在删除一个表中的全部数据时，须使用TRUNCATE TABLE 表名;因为用DROP TABLE，DELETE * FROM 表名时，TABLESPACE表空间该表的占用空间并未释放，反复几次DROP，DELETE操作后，该TABLESPACE上百兆的空间就被耗光了。<br /><br /></font>
		</p>
		<p>
				<font face="Arial" size="2">4．having子句的用法</font>
		</p>
		<p>
				<font face="Arial" size="2">having子句对group by子句所确定的行组进行控制，having子句条件中只允许涉及常量,聚组函数或group by 子句中的列。</font>
		</p>
		<p>
				<font face="Arial" size="2">5．外部联接"+"的用法</font>
		</p>
		<p>
				<font face="Arial" size="2">外部联接"+"按其在"="的左边或右边分左联接和右联接.若不带"+"运算符的表中的一个行不直接匹配于带"+"预算符的表中的任何行,则前者的行与后者中的一个空行相匹配并被返回.若二者均不带’+’,则二者中无法匹配的均被返回.利用外部联接"+",可以替代效率十分低下的 not in 运算,大大提高运行速度.例如,下面这条命令执行起来很慢 </font>
		</p>
		<p>
				<font face="Arial" size="2">用外联接提高表连接的查询速度 </font>
		</p>
		<p>
				<font face="Arial" size="2">在作表连接(常用于视图)时，常使用以下方法来查询数据: </font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">SELECT PAY_NO, PROJECT_NAME <br />FROM A <br />WHERE A.PAY_NO NOT IN (SELECT PAY_ <br />NO FROM B WHERE VALUE &gt;=120000); </font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">---- 但是若表A有10000条记录，表B有10000条记录，则要用掉30分钟才能查完，主要因为NOT IN要进 行一条一条的比较，共需要10000*10000次比较后，才能得到结果。该用外联接后，可以缩短到1分左右的时间: </font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">SELECT PAY_NO,PROJECT_NAME<br />FROM A,B <br />WHERE A.PAY_NO=B.PAY_NO(+) <br />AND B.PAY_NO IS NULL <br />AND B.VALUE &gt;=12000; </font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">6．set transaction命令的用法 </font>
		</p>
		<p>
				<font face="Arial" size="2">在执行大事务时,有时oracle会报出如下的错误: </font>
		</p>
		<p>
				<font face="Arial" size="2">ORA-01555:snapshot too old (rollback segment too small) </font>
		</p>
		<p>
				<font face="Arial" size="2">　　这说明oracle给此事务随机分配的回滚段太小了,这时可以为它指定一个足够大的回滚段,以确保这个事务的成功执行.例如 </font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">set transaction use rollback segment roll_abc; <br />delete from table_name where ... <br />commit; </font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">　　回滚段roll_abc被指定给这个delete事务,commit命令则在事务结束之后取消了回滚段的指定. <br /><br /></font>
		</p>
		<p>
				<font face="Arial" size="2">7．数据库重建应注意的问题 </font>
		</p>
		<p>
				<font face="Arial" size="2">　　在利用import进行数据库重建过程中,有些视图可能会带来问题,因为结构输入的顺序可能造成视图的输入先于它低层次表的输入,这样建立视图就会失败.要解决这一问题,可采取分两步走的方法:首先输入结构,然后输入数据.命令举例如下 (uesrname:jfcl,password:hfjf,host sting:ora1,数据文件:expdata.dmp): </font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">imp jfcl/hfjf@ora1 file=empdata.dmp rows=N <br />imp jfcl/hfjf@ora1 file=empdata.dmp full=Y buffer=64000 <br />commit=Y ignore=Y </font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">　　第一条命令输入所有数据库结构,但无记录.第二次输入结构和数据,64000字节提交一次.ignore=Y选项保证第二次输入既使对象存在的情况下也能成功. </font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">select a.empno from emp a where a.empno not in (select empno from emp1 where job=’SALE’); </font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">　　倘若利用外部联接,改写命令如下: </font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">select a.empno from emp a ,emp1 b <br />where a.empno=b.empno(+) <br />and b.empno is null <br />and b.job=’SALE’; </font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">可以发现,运行速度明显提高. </font>
		</p>
		<p>
				<font face="Arial" size="2">8．从已知表新建另一个表：</font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">CREATE TABLE b <br />AS SELECT * (可以是表a中的几列) <br />FROM a <br />WHERE a.column = ...; </font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">9．查找、删除重复记录: </font>
		</p>
		<p>
				<font face="Arial" size="2">法一: 用Group by语句 此查找很快的</font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">select count(num), max(name) from student --查找表中num列重复的，列出重复的记录数，并列出他的name属性<br />group by num <br />having count(num) &gt;1 --按num分组后找出表中num列重复，即出现次数大于一次<br />delete from student(上面Select的) </font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">这样的话就把所有重复的都删除了。-----慎重 </font>
		</p>
		<p>
				<font face="Arial" size="2">法二:当表比较大(例如10万条以上)时,这个方法的效率之差令人无法忍受,需要另想办法: </font>
		</p>
		<p>
				<font face="Arial" size="2">---- 执行下面SQL语句后就可以显示所有DRAWING和DSNO相同且重复的记录 </font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">SELECT * FROM EM5_PIPE_PREFAB <br />WHERE ROWID!=(SELECT MAX(ROWID) FROM EM5_PIPE_PREFAB D --D相当于First,Second <br />WHERE EM5_PIPE_PREFAB.DRAWING=D.DRAWING AND <br />EM5_PIPE_PREFAB.DSNO=D.DSNO); </font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">---- 执行下面SQL语句后就可以刪除所有DRAWING和DSNO相同且重复的记录 </font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">DELETE FROM EM5_PIPE_PREFAB <br />WHERE ROWID!=(SELECT MAX(ROWID) FROM EM5_PIPE_PREFAB D <br />WHERE EM5_PIPE_PREFAB.DRAWING=D.DRAWING AND <br />EM5_PIPE_PREFAB.DSNO=D.DSNO); <br /><br /></font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">10．返回表中[N，M]条记录： </font>
		</p>
		<p>
				<br />
				<font face="Arial" size="2">取得某列中第N大的行 </font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">select column_name from <br />(select table_name.*,dense_rank() over (order by column desc) rank from table_name) <br />where rank = &amp;N； </font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">　假如要返回前5条记录： </font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">　　select * from tablename where rownum&lt;6;(或是rownum &lt;= 5 或是rownum != 6) </font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">假如要返回第5-9条记录： </font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">select * from tablename <br />where … <br />and rownum&lt;10 <br />minus <br />select * from tablename <br />where … <br />and rownum&lt;5 <br />order by name </font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">选出结果后用name排序显示结果。(先选再排序) </font>
		</p>
		<p>
				<font face="Arial" size="2">注意：只能用以上符号(&lt;、&lt;=、!=)。 </font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">select * from tablename where rownum != 10;返回的是前９条记录。 </font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">不能用：&gt;,&gt;=,=,Between...and。由于rownum是一个总是从1开始的伪列，Oracle 认为这种条件 不成立，查不到记录. </font>
		</p>
		<p>
				<font face="Arial" size="2">另外，这个方法更快： </font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">select * from ( <br />select rownum r,a from yourtable <br />where rownum &lt;= 20 <br />order by name ) <br />where r &gt; 10 </font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">这样取出第11-20条记录!(先选再排序再选) </font>
		</p>
		<p>
				<font face="Arial" size="2">要先排序再选则须用select嵌套：内层排序外层选。 </font>
		</p>
		<p>
				<font face="Arial" size="2">rownum是随着结果集生成的，一旦生成，就不会变化了；同时,生成的结果是依次递加的，没有1就永远不会有2! </font>
		</p>
		<p>
				<font face="Arial" size="2">rownum 是在 查询集合产生的过程中产生的伪列，并且如果where条件中存在 rownum 条件的话，则: </font>
		</p>
		<p>
				<font face="Arial" size="2">1： 假如 判定条件是常量，则： </font>
		</p>
		<p>
				<font face="Arial" size="2">只能 rownum = 1, &lt;= 大于1 的自然数， = 大于1 的数是没有结果的， 大于一个数也是没有结果的 </font>
		</p>
		<p>
				<font face="Arial" size="2">即 当出现一个 rownum 不满足条件的时候则 查询结束 　　this is stop key! </font>
		</p>
		<p>
				<font face="Arial" size="2">2: 当判定值不是常量的时候 </font>
		</p>
		<p>
				<font face="Arial" size="2">若条件是 = var , 则只有当 var 为1 的时候才满足条件，这个时候不存在 stop key ,必须进行 full scan ,对每个满足其他where条件的数据进行判定 </font>
		</p>
		<p>
				<font face="Arial" size="2">选出一行后才能去选rownum=2的行…… <br /><br /></font>
		</p>
		<p>
				<font face="Arial" size="2">11．快速编译所有视图 </font>
		</p>
		<p>
				<br />
				<font face="Arial" size="2">---- 当在把数据库倒入到新的服务器上后(数据库重建)，需要将视图重新编译一遍，因为该表空间视图到其它表空间的表的连接会出现问题，可以利用PL/SQL的语言特性，快速编译。 </font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">SQL &gt;SPOOL ON.SQL <br />SQL &gt;SELECT ‘ALTER VIEW ‘||TNAME||’ <br />COMPILE;’ FROM TAB; <br />SQL &gt;SPOOL OFF </font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">然后执行ON.SQL即可。 </font>
		</p>
		<p>
				<font face="Arial" size="2">SQL &gt;@ON.SQL </font>
		</p>
		<p>
				<font face="Arial" size="2">当然，授权和创建同义词也可以快速进行，如： </font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">SQL &gt;SELECT ‘GRANT SELECT ON ’<br />||TNAME||’ TO USERNAME;’ FROM TAB; <br />SQL &gt;SELECT ‘CREATE SYNONYM <br />‘||TNAME||’ FOR USERNAME.’||TNAME||’;’ FROM TAB; </font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">12．读写文本型操作系统文件</font>
		</p>
		<p>
				<font face="Arial" size="2">---- 在PL/SQL 3.3以上的版本中，UTL_FILE包允许用户通过PL/SQL读写操作系统文件。如下： </font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">DECALRE <br />FILE_HANDLE UTL_FILE.FILE_TYPE; <br />BEGIN <br />FILE_HANDLE:=UTL_FILE.FOPEN( <br />‘C:\’,’TEST.TXT’,’A’); <br />UTL_FILE.PUT_LINE(FILE_HANDLE,’<br />HELLO,IT’S A TEST TXT FILE’); <br />UTL_FILE.FCLOSE(FILE_HANDLE); <br />END; </font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">13．在数据库触发器中使用列的新值与旧值 </font>
		</p>
		<p>
				<font face="Arial" size="2">---- 在数据库触发器中几乎总是要使用触发器基表的列值，如果某条语句需要某列修改前的值，使用:OLD就可以了，使用某列修改后的新值，用:NEW就可以了。如:OLD.DEPT_NO,:NEW.DEPT_NO。 </font>
		</p>
		<p>
				<font face="Arial" size="2">14．数据库文件的移动方法 </font>
		</p>
		<p>
				<font face="Arial" size="2">当想将数据库文件移动到另外一个目录下时，可以用ALTER DATABASE命令来移动(比ALTER TABLESPACE适用性强)： </font>
		</p>
		<p>
				<font face="Arial" size="2">1. 使用SERVER MANAGER关闭实例. </font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">SVRMGR &gt; connect internal; <br />SVRMGR &gt; shutdown; <br />SVRMGR &gt;exit; </font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">2. 使用操作系统命令来移动数据库文件位置(假设这里操作系统为SOLARIS 2.6). 在UNIX中用 mv命令可以把文件移动到新的位置， </font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">#mv /ora13/orarun/document.dbf /ora12/orarun </font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">3. 装载数据库并用alter database命令来改变数据库中的文件名. </font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">SVRMGR &gt; connect internal; <br />SVRMGR &gt; startup mount RUN73; <br />SVRMGR &gt; alter database rename file <br />&gt; ‘/ ora13/orarun/document.dbf’ <br />&gt; ‘/ ora12/orarun/document.dbf’; </font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">4. 启动实例. </font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">SVRMGR &gt; alter database open; <br /><br /></font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">15．连接查询结果： </font>
		</p>
		<p>
				<font face="Arial" size="2">表a 列 a1 a2 </font>
		</p>
		<p>
				<font face="Arial" size="2">记录 1 a </font>
		</p>
		<p>
				<font face="Arial" size="2">1 b </font>
		</p>
		<p>
				<font face="Arial" size="2">2 x </font>
		</p>
		<p>
				<font face="Arial" size="2">2 y </font>
		</p>
		<p>
				<font face="Arial" size="2">2 z </font>
		</p>
		<p>
				<font face="Arial" size="2">用select能选成以下结果: </font>
		</p>
		<p>
				<font face="Arial" size="2">1 ab </font>
		</p>
		<p>
				<font face="Arial" size="2">2 xyz </font>
		</p>
		<p>
				<font face="Arial" size="2">下面有两个例子： </font>
		</p>
		<p>
				<font face="Arial" size="2">1.使用pl/sql代码实现，但要求你组合后的长度不能超出oracle varchar2长度的限制 </font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">create or replace type strings_table is table of varchar2(20); <br />/ <br />create or replace function merge (pv in strings_table) return varchar2 <br />is <br />ls varchar2(4000); <br />begin <br />for i in 1..pv.count loop <br />ls := ls || pv(i); <br />end loop; <br />return ls; <br />end; <br />/ <br />create table t (id number,name varchar2(10)); <br />insert into t values(1,'Joan'); <br />insert into t values(1,'Jack'); <br />insert into t values(1,'Tom'); <br />insert into t values(2,'Rose'); <br />insert into t values(2,'Jenny'); <br />column names format a80; <br />select t0.id,merge(cast(multiset(select name from t where t.id = t0.id) as strings_table)) names <br />from (select distinct id from t) t0; <br />drop type strings_table; <br />drop function merge; <br />drop table t; </font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">2.纯粹用sql： </font>
		</p>
		<p>
				<font face="Arial" size="2">表dept, emp </font>
		</p>
		<p>
				<font face="Arial" size="2">要得到如下结果 </font>
		</p>
		<p>
				<font face="Arial" size="2">deptno, dname, employees </font>
		</p>
		<p>
				<font face="Arial" size="2">--------------------------------- </font>
		</p>
		<p>
				<font face="Arial" size="2">10, accounting, clark;king;miller <br />20, research, smith;adams;ford;scott;jones <br />30, sales, allen;blake;martin;james;turners </font>
		</p>
		<p>
				<font face="Arial" size="2">每个dept的employee串起来作为一条记录返回 </font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">This example uses a max of 6, and would need more cut n pasting to do more than that： <br />SQL&gt; select deptno, dname, emps <br />2 from ( <br />3 select d.deptno, d.dname, rtrim(e.ename ||', '|| <br />4 lead(e.ename,1) over (partition by d.deptno <br />5 order by e.ename) ||', '|| <br />6 lead(e.ename,2) over (partition by d.deptno <br />7 order by e.ename) ||', '|| <br />8 lead(e.ename,3) over (partition by d.deptno <br />9 order by e.ename) ||', '|| <br />10 lead(e.ename,4) over (partition by d.deptno <br />11 order by e.ename) ||', '|| <br />12 lead(e.ename,5) over (partition by d.deptno <br />13 order by e.ename),', ') emps, <br />14 row_number () over (partition by d.deptno <br />15 order by e.ename) x <br />16 from emp e, dept d <br />17 where d.deptno = e.deptno <br />18 ) <br />19 where x = 1 <br />20 / <br /><br />DEPTNO DNAME EMPS </font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">------- ----------- ------------------------------------------ </font>
		</p>
		<p>
				<font face="Arial" size="2">10 ACCOUNTING CLARK, KING, MILLER </font>
		</p>
		<p>
				<font face="Arial" size="2">20 RESEARCH ADAMS, FORD, JONES, ROONEY, SCOTT, SMITH </font>
		</p>
		<p>
				<font face="Arial" size="2">30 SALES ALLEN, BLAKE, JAMES, MARTIN, TURNER, WARD <br /><br /></font>
		</p>
		<p>
				<font face="Arial" size="2">16．在Oracle中建一个编号会自动增加的字段,以利于查询 </font>
		</p>
		<p>
				<font face="Arial" size="2">1、建立序列： </font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">CREATE SEQUENCE checkup_no_seq <br />NOCYCLE <br />MAXVALUE 9999999999 <br />START WITH 2; </font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">2、建立触发器： </font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">CREATE OR REPLACE TRIGGER set_checkup_no <br />BEFORE INSERT ON checkup_history <br />FOR EACH ROW <br />DECLARE <br />next_checkup_no NUMBER; <br />BEGIN <br />--Get the next checkup number from the sequence <br />SELECT checkup_no_seq.NEXTVAL <br />INTO next_checkup_no <br />FROM dual; </font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">--use the sequence number as the primary key <br />--for the record being inserted <br />:new.checkup_no := next_checkup_no; <br />END; </font>
		</p>
		<p>
				<font face="Arial" size="2">17．查看对象的依赖关系(比如视图与表的引用) </font>
		</p>
		<p>
				<font face="Arial" size="2">查看视图：dba_dependencies 记录了相关的依赖关系 </font>
		</p>
		<p>
				<font face="Arial" size="2">查东西不知道要查看哪个视图时，可以在DBA_Objects里看， </font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">select object_name from dba_objects where object_name like '%ROLE%'(假如查看ROLE相关) </font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">然后DESC一下就大体上知道了。</font>
		</p>
		<p>
				<font face="Arial" size="2">18．要找到某月中所有周五的具体日期 </font>
		</p>
		<p color="#a52a2a">
				<font face="Arial">
						<font size="2">select to_char(t.d,'YY-MM-DD') from ( <br />select trunc(sysdate, 'MM')+rownum-1 as d <br />from dba_objects <br />where rownum &lt; 32) t <br />where to_char(t.d, 'MM') = to_char(sysdate, 'MM') --找出当前月份的周五的日期<br />and trim(to_char(t.d, 'Day')) = '星期五' </font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">-------- </font>
		</p>
		<p>
				<font face="Arial" size="2">03-05-02 </font>
		</p>
		<p>
				<font face="Arial" size="2">03-05-09 </font>
		</p>
		<p>
				<font face="Arial" size="2">03-05-16 </font>
		</p>
		<p>
				<font face="Arial" size="2">03-05-23 </font>
		</p>
		<p>
				<font face="Arial" size="2">03-05-30 </font>
		</p>
		<p>
				<font face="Arial" size="2">如果把where to_char(t.d, 'MM') = to_char(sysdate, 'MM')改成sysdate-90，即为查找当前月份的前三个月中的每周五的日期。<br />2.----------------------------------------------------------------------------------------------------------------------------------------------------------------------------</font>
		</p>
		<h1>SQL*PLUS命令的使用大全 </h1>
		<p>
				<span id="adcontent">
				</span>      Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中，可以运行sql*plus命令与sql*plus语句。 <br />   我们通常所说的DML、DDL、DCL语句都是sql*plus语句，它们执行完后，都可以保存在一个被称为sql buffer的内存区域中，并且只能保存一条最近执行的sql语句，我们可以对保存在sql buffer中的sql 语句进行修改，然后再次执行，sql*plus一般都与数据库打交道。 <br />   除了sql*plus语句，在sql*plus中执行的其它语句我们称之为sql*plus命令。它们执行完后，不保存在sql buffer的内存区域中，它们一般用来对输出的结果进行格式化显示，以便于制作报表。 <br />   下面就介绍一下一些常用的sql*plus命令： <br />  <br />1. 执行一个SQL脚本文件 <br />SQL&gt;start file_name <br />SQL&gt;@ file_name <br />我们可以将多条sql语句保存在一个文本文件中，这样当要执行这个文件中的所有的sql语句时，用上面的任一命令即可，这类似于dos中的批处理。 <br />  <br />2. 对当前的输入进行编辑 <br />SQL&gt;edit <br />  <br />3. 重新运行上一次运行的sql语句 <br />SQL&gt;/ <br />  <br />4. 将显示的内容输出到指定文件 <br />SQL&gt; SPOOL file_name <br />   在屏幕上的所有内容都包含在该文件中，包括你输入的sql语句。 <br />  <br />5. 关闭spool输出 <br />SQL&gt; SPOOL OFF <br />   只有关闭spool输出，才会在输出文件中看到输出的内容。 <br />  <br />6．显示一个表的结构 <br />SQL&gt; desc table_name <br />  <br />7. COL命令： <br />主要格式化列的显示形式。 <br />该命令有许多选项，具体如下： <br />COL[UMN] [{ column|expr} [ option ...]] <br />Option选项可以是如下的子句: <br />ALI[AS] alias <br />CLE[AR] <br />FOLD_A[FTER] <br />FOLD_B[EFORE] <br />FOR[MAT] format <br />HEA[DING] text <br />JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]} <br />LIKE { expr|alias} <br />NEWL[INE] <br />NEW_V[ALUE] variable <br />NOPRI[NT]|PRI[NT] <br />NUL[L] text <br />OLD_V[ALUE] variable <br />ON|OFF <br />WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED] <br />  <br />1). 改变缺省的列标题 <br />COLUMN column_name HEADING column_heading <br />For example: <br />Sql&gt;select * from dept; <br />     DEPTNO DNAME                        LOC <br />---------- ---------------------------- --------- <br />         10 ACCOUNTING                   NEW YORK <br />sql&gt;col  LOC heading location <br />sql&gt;select * from dept; <br />    DEPTNO DNAME                        location <br />--------- ---------------------------- ----------- <br />        10 ACCOUNTING                   NEW YORK <br />  <br />2). 将列名ENAME改为新列名EMPLOYEE NAME并将新列名放在两行上： <br />Sql&gt;select * from emp <br />Department  name           Salary <br />---------- ---------- ---------- <br />         10 aaa                11         <br />SQL&gt; COLUMN ENAME HEADING ’Employee|Name’ <br />Sql&gt;select * from emp <br />            Employee <br />Department  name           Salary <br />---------- ---------- ----------  <br />         10 aaa                11 <br />note: the col heading turn into two lines from one line. <br />  <br />3). 改变列的显示长度： <br />FOR[MAT] format <br />Sql&gt;select empno,ename,job from emp; <br />      EMPNO ENAME      JOB        <br />---------- ----------     --------- <br />       7369 SMITH      CLERK      <br />       7499 ALLEN      SALESMAN   <br />7521 WARD       SALESMAN   <br />Sql&gt; col ename format a40 <br />      EMPNO ENAME                                    JOB <br />----------   ----------------------------------------         --------- <br />       7369 SMITH                                    CLERK <br />       7499 ALLEN                                    SALESMAN <br />       7521 WARD                                    SALESMAN <br />  <br />4). 设置列标题的对齐方式 <br />JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]} <br />SQL&gt; col ename justify center <br />SQL&gt; / <br />      EMPNO           ENAME                   JOB <br />----------   ----------------------------------------       --------- <br />       7369 SMITH                                    CLERK <br />       7499 ALLEN                                    SALESMAN <br />7521 WARD                                     SALESMAN <br />对于NUMBER型的列，列标题缺省在右边，其它类型的列标题缺省在左边 <br />  <br />5). 不让一个列显示在屏幕上 <br />NOPRI[NT]|PRI[NT] <br />SQL&gt; col job noprint <br />SQL&gt; / <br />      EMPNO           ENAME <br />----------     ---------------------------------------- <br />       7369 SMITH <br />       7499 ALLEN <br />7521 WARD <br />  <br />6). 格式化NUMBER类型列的显示： <br />SQL&gt; COLUMN SAL FORMAT $99,990 <br />SQL&gt; / <br />Employee <br />Department Name        Salary    Commission <br />---------- ---------- --------- ---------- <br />30          ALLEN        $1,600    300 <br />  <br />7). 显示列值时，如果列值为NULL值，用text值代替NULL值 <br />COMM NUL[L] text <br />SQL&gt;COL COMM NUL[L] text <br />  <br />8). 设置一个列的回绕方式 <br />WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED] <br />        COL1 <br />-------------------- <br />HOW ARE YOU? <br />  <br />SQL&gt;COL COL1 FORMAT A5 <br />SQL&gt;COL COL1 WRAPPED <br />COL1 <br />----- <br />HOW A <br />RE YO <br />U? <br />  <br />SQL&gt; COL COL1 WORD_WRAPPED <br />COL1 <br />----- <br />HOW <br />ARE <br />YOU? <br />  <br />SQL&gt; COL COL1 WORD_WRAPPED <br />COL1 <br />----- <br />HOW A <br />  <br />9). 显示列的当前的显示属性值 <br />SQL&gt; COLUMN column_name <br />  <br />10). 将所有列的显示属性设为缺省值 <br />SQL&gt; CLEAR COLUMNS <br />  <br />8. 屏蔽掉一个列中显示的相同的值 <br />BREAK ON break_column <br />SQL&gt; BREAK ON DEPTNO <br />SQL&gt; SELECT DEPTNO, ENAME, SAL <br />FROM EMP <br />  WHERE SAL &lt; 2500 <br />  ORDER BY DEPTNO; <br />DEPTNO      ENAME         SAL <br />---------- ----------- --------- <br />10           CLARK        2450 <br />MILLER      1300 <br />20            SMITH       800 <br />ADAMS       1100 <br />  <br />9. 在上面屏蔽掉一个列中显示的相同的值的显示中，每当列值变化时在值变化之前插入n个空行。 <br />BREAK ON break_column SKIP n <br />  <br />SQL&gt; BREAK ON DEPTNO SKIP 1 <br />SQL&gt; / <br />DEPTNO ENAME SAL <br />---------- ----------- --------- <br />10 CLARK 2450 <br />MILLER 1300 <br />  <br />20 SMITH 800 <br />ADAMS 1100 <br />  <br />10. 显示对BREAK的设置 <br />SQL&gt; BREAK <br />  <br />11. 删除6、7的设置 <br />SQL&gt; CLEAR BREAKS <br />  <br />12. Set 命令： <br />该命令包含许多子命令： <br />SET system_variable value <br />system_variable value 可以是如下的子句之一： <br />APPI[NFO]{ON|OFF|text} <br />ARRAY[SIZE] {15|n} <br />AUTO[COMMIT]{ON|OFF|IMM[EDIATE]|n} <br />AUTOP[RINT] {ON|OFF} <br />AUTORECOVERY [ON|OFF] <br />AUTOT[RACE] {ON|OFF|TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]] <br />BLO[CKTERMINATOR] {.|c} <br />CMDS[EP] {;|c|ON|OFF} <br />COLSEP {_|text} <br />COM[PATIBILITY]{V7|V8|NATIVE} <br />CON[CAT] {.|c|ON|OFF} <br />COPYC[OMMIT] {0|n} <br />COPYTYPECHECK {ON|OFF} <br />DEF[INE] {&amp;|c|ON|OFF} <br />DESCRIBE [DEPTH {1|n|ALL}][LINENUM {ON|OFF}][INDENT {ON|OFF}] <br />ECHO {ON|OFF} <br />EDITF[ILE] file_name[.ext] <br />EMB[EDDED] {ON|OFF} <br />ESC[APE] {\|c|ON|OFF} <br />FEED[BACK] {6|n|ON|OFF} <br />FLAGGER {OFF|ENTRY |INTERMED[IATE]|FULL} <br />FLU[SH] {ON|OFF} <br />HEA[DING] {ON|OFF} <br />HEADS[EP] {||c|ON|OFF} <br />INSTANCE [instance_path|LOCAL] <br />LIN[ESIZE] {80|n} <br />LOBOF[FSET] {n|1} <br />LOGSOURCE [pathname] <br />LONG {80|n} <br />LONGC[HUNKSIZE] {80|n} <br />MARK[UP] HTML [ON|OFF] [HEAD text] [BODY text] [ENTMAP {ON|OFF}] [SPOOL <br />{ON|OFF}] [PRE[FORMAT] {ON|OFF}] <br />NEWP[AGE] {1|n|NONE} <br />NULL text <br />NUMF[ORMAT] format <br />NUM[WIDTH] {10|n} <br />PAGES[IZE] {24|n} <br />PAU[SE] {ON|OFF|text} <br />RECSEP {WR[APPED]|EA[CH]|OFF} <br />RECSEPCHAR {_|c} <br />SERVEROUT[PUT] {ON|OFF} [SIZE n] [FOR[MAT] {WRA[PPED]|WOR[D_ <br />WRAPPED]|TRU[NCATED]}] <br />SHIFT[INOUT] {VIS[IBLE]|INV[ISIBLE]} <br />SHOW[MODE] {ON|OFF} <br />SQLBL[ANKLINES] {ON|OFF} <br />SQLC[ASE] {MIX[ED]|LO[WER]|UP[PER]} <br />SQLCO[NTINUE] {&gt; |text} <br />SQLN[UMBER] {ON|OFF} <br />SQLPRE[FIX] {#|c} <br />SQLP[ROMPT] {SQL&gt;|text} <br />SQLT[ERMINATOR] {;|c|ON|OFF} <br />SUF[FIX] {SQL|text} <br />TAB {ON|OFF} <br />TERM[OUT] {ON|OFF} <br />TI[ME] {ON|OFF} <br />TIMI[NG] {ON|OFF} <br />TRIM[OUT] {ON|OFF} <br />TRIMS[POOL] {ON|OFF} <br />UND[ERLINE] {-|c|ON|OFF} <br />VER[IFY] {ON|OFF} <br />WRA[P] {ON|OFF} <br />  <br />1). 设置当前session是否对修改的数据进行自动提交 <br />SQL&gt;SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n} <br />  <br />2)．在用start命令执行一个sql脚本时，是否显示脚本中正在执行的SQL语句 <br />SQL&gt; SET ECHO {ON|OFF} <br />  <br />3).是否显示当前sql语句查询或修改的行数 <br />SQL&gt; SET FEED[BACK] {6|n|ON|OFF} <br />   默认只有结果大于6行时才显示结果的行数。如果set feedback 1 ，则不管查询到多少行都返回。当为off 时，一律不显示查询的行数 <br />  <br />4).是否显示列标题 <br />SQL&gt; SET HEA[DING] {ON|OFF} <br />当set heading off 时，在每页的上面不显示列标题，而是以空白行代替 <br />  <br />5).设置一行可以容纳的字符数 <br />SQL&gt; SET LIN[ESIZE] {80|n} <br />   如果一行的输出内容大于设置的一行可容纳的字符数，则折行显示。 <br />  <br />6).设置页与页之间的分隔 <br />SQL&gt; SET NEWP[AGE] {1|n|NONE} <br />当set newpage 0 时，会在每页的开头有一个小的黑方框。 <br />当set newpage n 时，会在页和页之间隔着n个空行。 <br />当set newpage none 时，会在页和页之间没有任何间隔。 <br />  <br />7).显示时，用text值代替NULL值 <br />SQL&gt; SET NULL text <br />  <br />8).设置一页有多少行数 <br />SQL&gt; SET PAGES[IZE] {24|n} <br />如果设为0，则所有的输出内容为一页并且不显示列标题 <br />  <br />9).是否显示用DBMS_OUTPUT.PUT_LINE包进行输出的信息。 <br />SQL&gt; SET SERVEROUT[PUT] {ON|OFF}  <br />在编写存储过程时，我们有时会用dbms_output.put_line将必要的信息输出，以便对存储过程进行调试，只有将serveroutput变量设为on后，信息才能显示在屏幕上。 <br />  <br />10).当SQL语句的长度大于LINESIZE时，是否在显示时截取SQL语句。 <br />SQL&gt; SET WRA[P] {ON|OFF} <br />   当输出的行的长度大于设置的行的长度时（用set linesize n命令设置），当set wrap on时，输出行的多于的字符会另起一行显示，否则，会将输出行的多于字符切除，不予显示。 <br />  <br />11).是否在屏幕上显示输出的内容，主要用与SPOOL结合使用。 <br />SQL&gt; SET TERM[OUT] {ON|OFF} <br />   在用spool命令将一个大表中的内容输出到一个文件中时，将内容输出在屏幕上会耗费大量的时间，设置set termspool off后，则输出的内容只会保存在输出文件中，不会显示在屏幕上，极大的提高了spool的速度。 <br />  <br />12).将SPOOL输出中每行后面多余的空格去掉 <br />SQL&gt; SET TRIMS[OUT] {ON|OFF}  <br />    <br />13)显示每个sql语句花费的执行时间 <br />set TIMING  {ON|OFF} <br />  <br />14．修改sql buffer中的当前行中，第一个出现的字符串 <br />C[HANGE] /old_value/new_value <br />SQL&gt; l <br />   1* select * from dept <br />SQL&gt; c/dept/emp <br />   1* select * from emp <br />  <br />15．编辑sql buffer中的sql语句 <br />EDI[T] <br />  <br />16．显示sql buffer中的sql语句，list n显示sql buffer中的第n行，并使第n行成为当前行 <br />L[IST] [n] <br />  <br />17．在sql buffer的当前行下面加一行或多行 <br />I[NPUT] <br />  <br />18．将指定的文本加到sql buffer的当前行后面 <br />A[PPEND] <br />SQL&gt; select deptno, <br />   2  dname <br />   3  from dept; <br />     DEPTNO DNAME <br />---------- -------------- <br />         10 ACCOUNTING <br />         20 RESEARCH <br />         30 SALES <br />         40 OPERATIONS <br />  <br />SQL&gt; L 2 <br />   2* dname <br />SQL&gt; a ,loc <br />   2* dname,loc <br />SQL&gt; L <br />   1  select deptno, <br />   2  dname,loc <br />   3* from dept <br />SQL&gt; / <br />  <br />     DEPTNO DNAME          LOC <br />---------- -------------- ------------- <br />         10 ACCOUNTING     NEW YORK <br />         20 RESEARCH       DALLAS <br />         30 SALES          CHICAGO <br />         40 OPERATIONS     BOSTON <br />  <br />19．将sql buffer中的sql语句保存到一个文件中 <br />SAVE file_name <br />  <br />20．将一个文件中的sql语句导入到sql buffer中 <br />GET file_name <br />  <br />21．再次执行刚才已经执行的sql语句 <br />RUN <br />or <br />/ <br />  <br />22．执行一个存储过程 <br />EXECUTE procedure_name <br />  <br />23．在sql*plus中连接到指定的数据库 <br />CONNECT user_name/passwd@db_alias <br />  <br />24．设置每个报表的顶部标题 <br />TTITLE <br />  <br />25．设置每个报表的尾部标题 <br />BTITLE <br />  <br />26．写一个注释 <br />REMARK [text] <br />  <br />27．将指定的信息或一个空行输出到屏幕上 <br />PROMPT [text] <br />  <br />28．将执行的过程暂停，等待用户响应后继续执行 <br />PAUSE [text] <br />  <br />Sql&gt;PAUSE Adjust paper and press RETURN to continue. <br />  <br />29．将一个数据库中的一些数据拷贝到另外一个数据库（如将一个表的数据拷贝到另一个数据库） <br />COPY {FROM database | TO database | FROM database TO database} <br />{APPEND|CREATE|INSERT|REPLACE} destination_table <br />[(column, column, column, ...)] USING query <br />  <br />sql&gt;COPY FROM SCOTT/TIGER@HQ TO JOHN/CHROME@WEST  <br />create emp_temp <br />USING SELECT * FROM EMP <br />  <br />30．不退出sql*plus，在sql*plus中执行一个操作系统命令： <br />HOST <br />  <br />Sql&gt; host hostname <br />该命令在windows下可能被支持。 <br />  <br />31．在sql*plus中，切换到操作系统命令提示符下，运行操作系统命令后，可以再次切换回sql*plus： <br />! <br />  <br />sql&gt;! <br />$hostname <br />$exit <br />sql&gt; <br />  <br />该命令在windows下不被支持。 <br />  <br />32．显示sql*plus命令的帮助 <br />HELP <br />如何安装帮助文件： <br />Sql&gt;@ ?\sqlplus\admin\help\hlpbld.sql ?\sqlplus\admin\help\helpus.sql <br />Sql&gt;help index <br />  <br />33．显示sql*plus系统变量的值或sql*plus环境变量的值 <br />Syntax <br />SHO[W] option <br />where option represents one of the following terms or clauses: <br />system_variable <br />ALL <br />BTI[TLE] <br />ERR[ORS] [{FUNCTION|PROCEDURE|PACKAGE|PACKAGE BODY| <br />TRIGGER|VIEW|TYPE|TYPE BODY} [schema.]name] <br />LNO <br />PARAMETERS [parameter_name] <br />PNO <br />REL[EASE] <br />REPF[OOTER] <br />REPH[EADER] <br />SGA <br />SPOO[L] <br />SQLCODE <br />TTI[TLE] <br />USER <br />  <br />1) . 显示当前环境变量的值： <br />Show all <br />  <br />2) . 显示当前在创建函数、存储过程、触发器、包等对象的错误信息 <br />Show error <br />当创建一个函数、存储过程等出错时，变可以用该命令查看在那个地方出错及相应的出错信息，进行修改后再次进行编译。 <br />  <br />3) . 显示初始化参数的值： <br />show PARAMETERS [parameter_name] <br />  <br />4) . 显示数据库的版本： <br />show REL[EASE] <br />  <br />5) . 显示SGA的大小 <br />show SGA <br />  <br />6). 显示当前的用户名 <br />show user<br /></p>
<img src ="http://www.blogjava.net/zhanglijun33/aggbug/77555.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhanglijun33/" target="_blank">智者无疆</a> 2006-10-27 10:40 <a href="http://www.blogjava.net/zhanglijun33/archive/2006/10/27/aboutOrcale.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>