﻿<?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>IT博客-畅想之星 数字图书馆-文章分类-编程学习</title><link>http://www.cnitblog.com/zhangyu/category/4687.html</link><description>&lt;br&gt;知识改变命运，学习成就未来
&lt;br&gt;成功=30%知识+70%人脉
&lt;br&gt;只为成功找方法，不为失败找借口先进</description><language>zh-cn</language><lastBuildDate>Mon, 26 Sep 2011 07:29:31 GMT</lastBuildDate><pubDate>Mon, 26 Sep 2011 07:29:31 GMT</pubDate><ttl>60</ttl><item><title>truncate,delete,drop的异同点  </title><link>http://www.cnitblog.com/zhangyu/articles/31900.html</link><dc:creator>畅想之星 数字图书馆</dc:creator><author>畅想之星 数字图书馆</author><pubDate>Wed, 15 Aug 2007 13:40:00 GMT</pubDate><guid>http://www.cnitblog.com/zhangyu/articles/31900.html</guid><wfw:comment>http://www.cnitblog.com/zhangyu/comments/31900.html</wfw:comment><comments>http://www.cnitblog.com/zhangyu/articles/31900.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/zhangyu/comments/commentRss/31900.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/zhangyu/services/trackbacks/31900.html</trackback:ping><description><![CDATA[<p><span style="COLOR: red">注意</span>:这里说的delete是指不带where子句的delete语句 <br>&nbsp; <br><span style="COLOR: red">相同点</span>:truncate和不带where子句的delete, 以及drop都会删除表内的数据&nbsp; </p>
<p><span style="COLOR: red">不同点</span>: </p>
<p>1. truncate和 delete只删除数据不删除表的结构(定义)&nbsp; ,drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态.&nbsp; </p>
<p>2.delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发.&nbsp;&nbsp; truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger.&nbsp; </p>
<p>3.delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动&nbsp;,显然drop语句将表所占用的空间全部释放&nbsp; ,truncate 语句缺省情况下将空间释放到 minextents个 extent,除非使用reuse storage;&nbsp;&nbsp; truncate会将高水线复位(回到最开始).&nbsp; </p>
<p>4.速度,一般来说: drop&gt; truncate &gt; delete&nbsp; </p>
<p>5.安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不及使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大.&nbsp; </p>
<p>想删除表,当然用drop，想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用delete.&nbsp; </p>
<p>如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据<br>&nbsp;</p>
<img src ="http://www.cnitblog.com/zhangyu/aggbug/31900.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/zhangyu/" target="_blank">畅想之星 数字图书馆</a> 2007-08-15 21:40 <a href="http://www.cnitblog.com/zhangyu/articles/31900.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sql inner join</title><link>http://www.cnitblog.com/zhangyu/articles/31899.html</link><dc:creator>畅想之星 数字图书馆</dc:creator><author>畅想之星 数字图书馆</author><pubDate>Wed, 15 Aug 2007 13:16:00 GMT</pubDate><guid>http://www.cnitblog.com/zhangyu/articles/31899.html</guid><wfw:comment>http://www.cnitblog.com/zhangyu/comments/31899.html</wfw:comment><comments>http://www.cnitblog.com/zhangyu/articles/31899.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/zhangyu/comments/commentRss/31899.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/zhangyu/services/trackbacks/31899.html</trackback:ping><description><![CDATA[<font size=2><strong>内连接&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></strong><font color=#ff0000>INNER JOIN</font>:只显示多表之间与关联条件相匹配的列.</font>
<p><span style="COLOR: #ff0000"><font color=#000000><font size=2><strong>外连接</strong>:<br><font color=#ff0000>LEFT JOIN</font> :以左表为基础,显示左表中的所有列,不管是否与关联条件相匹配,而右表中的数据只显示与关联条件相匹配的列,不匹配的列以NULL字符填充.</font></font></span></p>
<p><span style="COLOR: #ff0000"><font color=#000000 size=2><font color=#ff0000>RIGHT JOIN</font>:以右表为基础,显示右表中的所有列,不管是否与关联条件相匹配,而左表中的数据只显示与关联条件相匹配的列,不匹配的列以NULL字符填充.</font></span></p>
<p><span style="COLOR: #ff0000"><font color=#000000 size=2><font color=#ff0000>FULL JOIN</font> :显示多个表中的所有的列,不匹配关联条件的列以NULL字符填充.<br><br><font size=3>WHERE子句中使用的连接语句，在数据库语言中，被称为隐性连接。INNER JOIN&#8230;&#8230;ON子句产生的连接称为显性连接。（其他JOIN参数也是显性连接）WHERE 和INNER JOIN产生的连接关系，没有本质区别，结果也一样。但是！隐性连接随着数据库语言的规范和发展，已经逐渐被淘汰，比较新的数据库语言基本上已经抛弃了隐性连接，全部采用显性连接了。</font><br></p>
<p><br>一般要使得数据库查询语句性能好点遵循一下原则:</p>
<p align=center>在做表与表的连接查询时，大表在前，小表在后<br>不使用表别名，通过字段前缀区分不同表中的字段</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;查询条件中的限制条件要写在表连接条件前<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 尽量使用索引的字段做为查询条件<br><br><br>语法格式：<br>&nbsp;&nbsp;&nbsp; 其实 INNER JOIN &#8230;&#8230;ON的语法格式可以概括为：<br>&nbsp;&nbsp;&nbsp; FROM (((表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号) INNER JOIN 表4 ON Member.字段号=表4.字段号) INNER JOIN 表X ON Member.字段号=表X.字段号<br>&nbsp;&nbsp;&nbsp; 您只要套用该格式就可以了。<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; 现成格式范例：<br>&nbsp;&nbsp;&nbsp; 虽然我说得已经比较明白了，但为照顾初学者，我还是以本会员注册系统为例，提供一些现成的语法格式范例，大家只要修改其中的数据表名称和字段名称即可。<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; 连接两个数据表的用法：<br>&nbsp;&nbsp;&nbsp; FROM Member INNER JOIN MemberSort ON Member.MemberSort=MemberSort.MemberSort<br>&nbsp;&nbsp;&nbsp; 语法格式可以概括为：<br>&nbsp;&nbsp;&nbsp; FROM 表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; 连接三个数据表的用法：<br>&nbsp;&nbsp;&nbsp; FROM (Member INNER JOIN MemberSort ON Member.MemberSort=MemberSort.MemberSort) INNER JOIN MemberLevel ON Member.MemberLevel=MemberLevel.MemberLevel <br>&nbsp;&nbsp;&nbsp; 语法格式可以概括为：<br>&nbsp;&nbsp;&nbsp; FROM (表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; 连接四个数据表的用法：<br>&nbsp;&nbsp;&nbsp; FROM ((Member INNER JOIN MemberSort ON Member.MemberSort=MemberSort.MemberSort) INNER JOIN MemberLevel ON Member.MemberLevel=MemberLevel.MemberLevel) INNER JOIN MemberIdentity ON Member.MemberIdentity=MemberIdentity.MemberIdentity<br>&nbsp;&nbsp;&nbsp; 语法格式可以概括为：<br>&nbsp;&nbsp;&nbsp; FROM ((表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号) INNER JOIN 表4 ON Member.字段号=表4.字段号<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; 连接五个数据表的用法：<br>&nbsp;&nbsp;&nbsp; FROM (((Member INNER JOIN MemberSort ON Member.MemberSort=MemberSort.MemberSort) INNER JOIN MemberLevel ON Member.MemberLevel=MemberLevel.MemberLevel) INNER JOIN MemberIdentity ON Member.MemberIdentity=MemberIdentity.MemberIdentity) INNER JOIN Wedlock ON Member.Wedlock=Wedlock.Wedlock<br>&nbsp;&nbsp;&nbsp; 语法格式可以概括为：<br>&nbsp;&nbsp;&nbsp; FROM (((表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号) INNER JOIN 表4 ON Member.字段号=表4.字段号) INNER JOIN 表5 ON Member.字段号=表5.字段号<br></p>
</font></span>
<img src ="http://www.cnitblog.com/zhangyu/aggbug/31899.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/zhangyu/" target="_blank">畅想之星 数字图书馆</a> 2007-08-15 21:16 <a href="http://www.cnitblog.com/zhangyu/articles/31899.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>truncate、delete、drop的异同点</title><link>http://www.cnitblog.com/zhangyu/articles/24989.html</link><dc:creator>畅想之星 数字图书馆</dc:creator><author>畅想之星 数字图书馆</author><pubDate>Sat, 31 Mar 2007 14:43:00 GMT</pubDate><guid>http://www.cnitblog.com/zhangyu/articles/24989.html</guid><wfw:comment>http://www.cnitblog.com/zhangyu/comments/24989.html</wfw:comment><comments>http://www.cnitblog.com/zhangyu/articles/24989.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/zhangyu/comments/commentRss/24989.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/zhangyu/services/trackbacks/24989.html</trackback:ping><description><![CDATA[
		<div class="tit">truncate、delete、drop的异同点</div>
		<div class="date">2007-01-19 17:37</div>
		<table style="TABLE-LAYOUT: fixed">
				<tbody>
						<tr>
								<td>
										<div class="cnt">这里说的delete是指不带where子句的delete语句 
<p>相同点:<br />truncate和不带where子句的delete, 以及drop都会删除表内的数据 <br /><br />不同点: <br />1. truncate和delete只删除数据不删除表的结构(定义) <br />drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态. <br />2.delete语句是DML,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发. <br />truncate,drop是DDL, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger. <br />3.delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动。显然drop语句将表所占用的空间全部释放 <br />truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage; truncate会将高水线复位(回到最开始). <br />4.速度,一般来说: drop&gt;; truncate &gt;; delete <br />5.安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不及。<br />使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大. <br />想删除表,当然用drop <br />想保留表而将所有数据删除. 如果和事务无关,用truncate即可。 如果和事务有关,或者想触发trigger,还是用delete。 <br />如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据。 </p><p align="center"><font color="#ff0000"><strong>truncate 和delete的区别 </strong></font></p><p>一、delete产生rollback，如果删除大数据量的表速度会很慢，同时会占用很多的rollback segments .truncate 是DDL操作，不产生rollback，速度快一些. <br />Truncate table does not generate rollback information and redo records so it is much faster than delete. </p><p>In default, it deallocates all space except the space allocated by MINEXTENTS unless you specify REUSE STORAGE clause. </p><p>二、不从tablespace中腾出空间,需要 <br />ALTER TABLESPACE AAA COALESCE; 才有空间 </p><p>三、truncate 调整high water mark 而delete不.truncate之后，TABLE的HWM退回到 INITIAL和NEXT的位置（默认） <br />delete 则不可以。 </p><p>四、truncate 只能对TABLE,不对全表扫描。 <br />delete 可以是table,view,synonym </p><p>五、TRUNCATE TABLE 的对象必须是本模式下的，或者有drop any table的权限 而 DELETE 则是对象必须是本模式下的，或被授予 DELETE ON SCHEMA.TABLE 或DELETE ANY TABLE的权限</p></div>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.cnitblog.com/zhangyu/aggbug/24989.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/zhangyu/" target="_blank">畅想之星 数字图书馆</a> 2007-03-31 22:43 <a href="http://www.cnitblog.com/zhangyu/articles/24989.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>鼠标右键屏蔽功能代码（java script)</title><link>http://www.cnitblog.com/zhangyu/articles/21891.html</link><dc:creator>畅想之星 数字图书馆</dc:creator><author>畅想之星 数字图书馆</author><pubDate>Mon, 15 Jan 2007 14:27:00 GMT</pubDate><guid>http://www.cnitblog.com/zhangyu/articles/21891.html</guid><wfw:comment>http://www.cnitblog.com/zhangyu/comments/21891.html</wfw:comment><comments>http://www.cnitblog.com/zhangyu/articles/21891.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/zhangyu/comments/commentRss/21891.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/zhangyu/services/trackbacks/21891.html</trackback:ping><description><![CDATA[
		<p>
				<strong>
						<font size="4">&lt;/script&gt;<br />&lt;script <font color="#000000">language</font>="JavaScript"&gt;<br />  function vv(){</font>
				</strong>
		</p>
		<p>
				<strong>
						<font size="4">   if(event.button==2)<br />    alert('防止服务器负担过大，右键功能被屏蔽！')}</font>
				</strong>
		</p>
		<p>
				<strong>
						<font size="4">  document.onmousedown=vv<br />  &lt;/script&gt;</font>
				</strong>
		</p>
<img src ="http://www.cnitblog.com/zhangyu/aggbug/21891.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/zhangyu/" target="_blank">畅想之星 数字图书馆</a> 2007-01-15 22:27 <a href="http://www.cnitblog.com/zhangyu/articles/21891.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>