<?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-mvc 架构</title><link>http://www.blogjava.net/qsg1982/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 23 Nov 2008 14:44:34 GMT</lastBuildDate><pubDate>Sun, 23 Nov 2008 14:44:34 GMT</pubDate><ttl>60</ttl><item><title>内部优秀书籍推荐[转贴]</title><link>http://www.blogjava.net/qsg1982/archive/2008/10/28/237157.html</link><dc:creator>e全</dc:creator><author>e全</author><pubDate>Tue, 28 Oct 2008 09:06:00 GMT</pubDate><guid>http://www.blogjava.net/qsg1982/archive/2008/10/28/237157.html</guid><wfw:comment>http://www.blogjava.net/qsg1982/comments/237157.html</wfw:comment><comments>http://www.blogjava.net/qsg1982/archive/2008/10/28/237157.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qsg1982/comments/commentRss/237157.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qsg1982/services/trackbacks/237157.html</trackback:ping><description><![CDATA[
		<div class="postTitle">原文出处：【<span lang="EN-US" xml:lang="EN-US"><a class="t_f60" href="http://www.bjsxt.com/books/goodbooks.html"><font color="#1a8bc8">http://www.bjsxt.com/books/goodbooks.html</font></a></span>】<span lang="EN-US" xml:lang="EN-US"> </span></div>
		<p>如果你曾经尝试过自学某些知识点，比如<span lang="EN-US" xml:lang="EN-US">JavaSE</span>、<span lang="EN-US" xml:lang="EN-US">JDBC</span>等等，相信有很多情况会觉得按照书上的操作非常难进行下去，很多情况下会遇到各种各样莫名奇妙的问题，比如环境配不对了，或者是遇到书上没有讲到的错误了等等，这时候恐怕会很打击积极性吧，毕竟软件开发是要求你动手的一门职业。</p>
		<p>
				<span lang="EN-US" xml:lang="EN-US"> </span>还有，市面上的<span lang="EN-US" xml:lang="EN-US">Java</span>书多如牛毛，那些是好书？对于初学者也是个非常头疼的问题。</p>
		<p>
				<span lang="EN-US" xml:lang="EN-US"> </span>在这里，尚学堂的四位老师根据不同的知识点，在讲解了如何进行学习的前提下并推荐了市面上的优秀书籍，按部就班的进行阅读，相信会大大缓解你在自学过程中的困难。</p>
		<p>
				<span lang="EN-US" xml:lang="EN-US"> </span>另外，就算一碗饭非常的好吃，可是如果吃的方法和时机不好，同样不会有好的效果，没准儿还会肚子疼，所以，请大家务必自学理解下面给每一本书所配的读书方法，并按照那样去做，这样，你会学的轻松而且高效。</p>
		<p>
				<span lang="EN-US" xml:lang="EN-US"> </span>我会优先推荐视频学习，因为更直观，而且有人手把手带着学，如果你认为这是广告，我也没有办法。</p>
		<p>
				<span lang="EN-US" xml:lang="EN-US"> </span>视频<span lang="EN-US" xml:lang="EN-US"> + </span>参考书，是业已证明的非常好的自学方法。</p>
		<p>
				<span lang="EN-US" xml:lang="EN-US"> </span>注：大多数的书在网上都有下载，<span lang="EN-US" xml:lang="EN-US">google + </span>电驴，不会有你找不到的东西<span lang="EN-US" xml:lang="EN-US">J</span></p>
		<p>
				<span class="subtitle" lang="EN-US" xml:lang="EN-US"> </span>
				<span class="subtitle"> &lt;!--[if !supportLists]--&gt; <span lang="EN-US" xml:lang="EN-US">1、 </span></span>
				<span class="subtitle">&lt;!--[endif]--&gt; <span lang="EN-US" xml:lang="EN-US">JavaSE</span>的学习书籍</span>
		</p>
		<p>英文名：《<span lang="EN-US" xml:lang="EN-US">Thinking in Java</span>》</p>
		<p>中文名：《<span lang="EN-US" xml:lang="EN-US">Java</span>编程思想》</p>
		<p>图<span lang="EN-US" xml:lang="EN-US">  </span>片：<span lang="EN-US" xml:lang="EN-US"><?XML:NAMESPACE PREFIX = V /?><v:shape id="_x0000_i1026" style="WIDTH: 106.5pt; HEIGHT: 150pt" type="#_x0000_t75"><v:imagedata o:title="" src="books.files/image002.png"></v:imagedata></v:shape>&lt;!--[if !vml]--&gt; <img height="200" alt="book" src="http://www.bjsxt.com/books/books_recommended_image003.jpg" width="142" border="0" v:shapes="_x0000_i1026" /> &lt;!--[endif]--&gt; </span></p>
		<p>作<span lang="EN-US" xml:lang="EN-US">  </span>者：<span lang="EN-US" xml:lang="EN-US">Bruce Eckel</span></p>
		<p>出版社：机械工业出版社</p>
		<p>阅读方法：这本书并不适合一点基础都没有的同学进行阅读，强烈建议首先阅读尚学堂的<span lang="EN-US" xml:lang="EN-US">JavaSE</span>视频教程（<span lang="EN-US" xml:lang="EN-US"><a href="http://www.bjsxt.com/books/how_to_find_good_book.html"><font color="#1a8bc8">http://www.bjsxt.com/books/how_to_find_good_book.html</font></a></span>），是非常轻松而且容易阅读的视频教程，有老师带你一步一步的操作，免去了自己探索各种配置的苦楚，是非常直观而且省力气的入门方式。</p>
		<p>
				<span lang="EN-US" xml:lang="EN-US"> </span>看完视频之后，一般就可以直接学习<span lang="EN-US" xml:lang="EN-US">JavaWEB</span>的内容了，但是如果想备一本书在手边备查的话，那么<span lang="EN-US" xml:lang="EN-US">Thinking in Java</span>还算是不错的，除此之外，<span lang="EN-US" xml:lang="EN-US">Java</span>核心编程（两册），英文名<span lang="EN-US" xml:lang="EN-US">Core Java</span>，也是非常不错的参考手册。</p>
		<p>
				<span lang="EN-US" xml:lang="EN-US"> </span>我们的建议是：阅读完视频教程（并跟着动手操作），把这本书当作参考手册，不建议从头到尾的细细阅读，很累而且没有必要，当遇到实际问题的时候按需而查就可以了。</p>
		<p>
				<span class="subtitle" lang="EN-US" xml:lang="EN-US"> </span>
				<span class="subtitle"> &lt;!--[if !supportLists]--&gt; <span lang="EN-US" xml:lang="EN-US">2、 </span></span>
				<span class="subtitle">&lt;!--[endif]--&gt; 数据结构的学习书籍</span>
		</p>
		<p>英文名：《<span lang="EN-US" xml:lang="EN-US">Data Structures &amp; Algorithms in Java</span>》</p>
		<p>中文名：《<span lang="EN-US" xml:lang="EN-US">Java</span>数据结构和算法》</p>
		<p>图<span lang="EN-US" xml:lang="EN-US">  </span>片：<span lang="EN-US" xml:lang="EN-US"><v:shape id="_x0000_i1027" style="WIDTH: 118.5pt; HEIGHT: 150pt" type="#_x0000_t75"><v:imagedata o:title="" src="books.files/image004.png"></v:imagedata></v:shape>&lt;!--[if !vml]--&gt; <img height="200" alt="book" src="http://www.bjsxt.com/books/books_recommended_image005.jpg" width="158" border="0" v:shapes="_x0000_i1027" /> &lt;!--[endif]--&gt; </span></p>
		<p>作<span lang="EN-US" xml:lang="EN-US">  </span>者：<span lang="EN-US" xml:lang="EN-US">Robert Lafore</span></p>
		<p>出版社：中国电力出版社</p>
		<p>阅读方法：相对与其他的数据结构和算法的书，这本书语言很简洁而且容易读，让你少了一些阅读算法书籍的苦恼，但是也不能指望很轻松的把它读完，毕竟，这也是描述算法的书呀。</p>
		<p>不过幸运的是，如果只是为了锻炼工作技能，倒是不必把所有的算法细节都弄的一清二楚，掌握到能够选择针对实际问题而进行数据结构和算法的选择，基本上就能应付<span lang="EN-US" xml:lang="EN-US">90%</span>以上的情况了。</p>
		<p>我们的建议是：只要你学的是<span lang="EN-US" xml:lang="EN-US">JAVA</span>，这本书就应该从头到尾的啃一遍，而且是细细的啃，不是象前一本《<span lang="EN-US" xml:lang="EN-US">Java</span>编程思想》那样的略读，不过，读这本书没什么时间限制，尽量读就行了，哪怕你已经工作了，再花业余的时间读下来也不迟。</p>
		<p>另外，象算法这种东西，你弄明白一次，一辈子就明白了，不会再变了，所以，哪怕用一周、一个月的时间啃下来一个程序，也是值得的。</p>
		<p>如果你着急工作，这本书可以略读，掌握住常用的数据结构和算法的特点（不是实现），就可以了。</p>
		<p>如果你还在上学，有大量的时间，或者你想在大型公司<span lang="EN-US" xml:lang="EN-US">(IBM</span>、<span lang="EN-US" xml:lang="EN-US">MicroSoft</span>、<span lang="EN-US" xml:lang="EN-US">Sun</span>等<span lang="EN-US" xml:lang="EN-US">)</span>的笔试中有良好的表现，你就需要一个字一个字的仔细阅读了。</p>
		<p>
				<span class="subtitle" lang="EN-US" xml:lang="EN-US"> </span>
				<span class="subtitle">&lt;!--[if !supportLists]--&gt; <span lang="EN-US" xml:lang="EN-US">3、 </span></span>
				<span class="subtitle">&lt;!--[endif]--&gt; 数据库（<span lang="EN-US" xml:lang="EN-US">Oracle</span>）的学习书籍</span>
		</p>
		<p>数据库，尤其<span lang="EN-US" xml:lang="EN-US">Oracle</span>的知识非常的多，但基本上可以分成开发和管理两大块，对于开发，不建议阅读任何的书籍，直接去看尚学堂的视频已经足够了，非常直观而且实战，如果愿意，可以按照《<a class="t_f60" href="http://www.bjsxt.com/books/how_to_find_good_book.html"><font color="#1a8bc8">尚学堂<span lang="EN-US" xml:lang="EN-US">Java</span>培训：如何寻找好书</font></a>》里面讲的方法去自己寻找一些合适的书来做参考就可以了。程序员对于数据库管理和高级调优的知识需求并不是很迫切，这部分的内容我们是在周末的补充课讲给大家听的。建议先掌握开发的技能，再循序渐进的学习。</p>
		<p>
				<span lang="EN-US" xml:lang="EN-US"> </span> &lt;!--[if !supportLists]--&gt; <span class="subtitle" lang="EN-US" xml:lang="EN-US">4、 </span><span class="subtitle">&lt;!--[endif]--&gt; <span lang="EN-US" xml:lang="EN-US">JDBC</span>的学习书籍</span></p>
		<p>没必要看书，直接尚学堂的视频已经足够了，或者自己去找，参考《<a class="t_f60" href="http://www.bjsxt.com/books/how_to_find_good_book.html"><font color="#1a8bc8">尚学堂<span lang="EN-US" xml:lang="EN-US">Java</span>培训：如何寻找好书</font></a>》。</p>
		<p>&lt;!--[if !supportLists]--&gt; <span class="subtitle" lang="EN-US" xml:lang="EN-US">5、 </span><span class="subtitle">&lt;!--[endif]--&gt; <span lang="EN-US" xml:lang="EN-US">HTML/CSS</span></span></p>
		<p>这种东西主要是大家动手实践的，一般来讲不用读书，直接到<span lang="EN-US" xml:lang="EN-US">google</span>搜索一篇教程然后照着一点一点的操作，并且不断发挥创造力就可以了。</p>
		<p>目前还没有遇到过自学<span lang="EN-US" xml:lang="EN-US">HTML/CSS</span>学不会的，如果你真的学不会这个，你就要认真的考虑是否要换个行业了<span lang="EN-US" xml:lang="EN-US">J</span></p>
		<p>不过，对于<span lang="EN-US" xml:lang="EN-US">WEB2.0</span>后兴起的<span lang="EN-US" xml:lang="EN-US">DIV</span>形式的布局，还是值得大家好好学习一下的。</p>
		<p>最重要的就是：一定要动手！</p>
		<p>另外，尚学堂最近将公布<span lang="EN-US" xml:lang="EN-US">HTML/CSS</span>的视频教程，大家也可以进行参考，但是我们的很多内容是融合在项目中进行讲解的，所以不要指望老师会有说明书式的细节讲解（事实上那样的学习非常累），拿来直观方便的掌握基础知识会是很不错的选择。</p>
		<p>&lt;!--[if !supportLists]--&gt; <span class="subtitle" lang="EN-US" xml:lang="EN-US">6、 </span><span class="subtitle">&lt;!--[endif]--&gt; <span lang="EN-US" xml:lang="EN-US">JavaScript</span>的学习书籍</span></p>
		<p>英文名：《<span lang="EN-US" xml:lang="EN-US">Professional JavaScript for Web Developers</span>》</p>
		<p>中文名：《<span lang="EN-US" xml:lang="EN-US">JavaScript</span>高级程序设计》</p>
		<p>图<span lang="EN-US" xml:lang="EN-US">  </span>片：<span lang="EN-US" xml:lang="EN-US"><v:shape id="_x0000_i1028" style="WIDTH: 119.25pt; HEIGHT: 150pt" type="#_x0000_t75"><v:imagedata o:title="" src="books.files/image006.png"></v:imagedata></v:shape>&lt;!--[if !vml]--&gt; <img height="200" alt="book" src="http://www.bjsxt.com/books/books_recommended_image007.jpg" width="159" border="0" v:shapes="_x0000_i1028" /> &lt;!--[endif]--&gt; </span></p>
		<p>作<span lang="EN-US" xml:lang="EN-US">  </span>者：<span lang="EN-US" xml:lang="EN-US">Nicholas C.Zakas</span></p>
		<p>出版社：人民邮电出版社</p>
		<p>阅读方法：建议在阅读了尚学堂的视频教程之后，进行参考性的阅读，所谓参考性的阅读，就是当你要写一个<span lang="EN-US" xml:lang="EN-US">JavaScript</span>效果而自己忘了语法的时候，动手去翻这本书相应的章节就行了。</p>
		<p>
				<span lang="EN-US" xml:lang="EN-US"> </span>另外，尚学堂最近将公布<span lang="EN-US" xml:lang="EN-US">JavaScript</span>的视频教程，大家也可以进行参考，但是我们<span lang="EN-US" xml:lang="EN-US">JavaScript</span>的内容会分成四个阶段阶段，融合在项目中进行讲解，视频教程中只是第一部分（但也是很大的一部分内容了），拿来直观方便的掌握基础知识会是很不错的选择。</p>
		<p>&lt;!--[if !supportLists]--&gt; <span class="subtitle" lang="EN-US" xml:lang="EN-US">7、 </span><span class="subtitle">&lt;!--[endif]--&gt; <span lang="EN-US" xml:lang="EN-US">Servlet_JSP</span>的学习书籍</span></p>
		<p>不需要读书，直接阅读尚学堂视频就可以，一般讲这方面的书都比较冗长而且会讲很多不必要的东西，陷于没必要的细节，本来用三天即可掌握的东西，很多初学者不明白其中的重点，会按照书中讲的从头读到尾，浪费很多的精力和时间，有一种总是经历风雨，却不让你见彩虹的感觉。</p>
		<p>建议视频。</p>
		<p>&lt;!--[if !supportLists]--&gt; <span class="subtitle" lang="EN-US" xml:lang="EN-US">8、 </span><span class="subtitle">&lt;!--[endif]--&gt; <span lang="EN-US" xml:lang="EN-US">MySQL</span></span></p>
		<p>尚学堂视频<span lang="EN-US" xml:lang="EN-US"> + </span>帮助文档<span lang="EN-US" xml:lang="EN-US"> + google</span>即可。</p>
		<p>&lt;!--[if !supportLists]--&gt; <span class="subtitle" lang="EN-US" xml:lang="EN-US">9、 </span><span class="subtitle">&lt;!--[endif]--&gt; <span lang="EN-US" xml:lang="EN-US">AJAX</span></span></p>
		<p>
				<span lang="EN-US" xml:lang="EN-US">AJAX</span>的问题比较复杂，首先应该学习它的原理，阅读尚学堂《<span lang="EN-US" xml:lang="EN-US">Shopping</span>的视频》或者到网上寻找入门文章即可，关键是在掌握了<span lang="EN-US" xml:lang="EN-US">JavaScript</span>的基础之上进行实践。</p>
		<p>在掌握了基础原理之后，希望大家能掌握一个<span lang="EN-US" xml:lang="EN-US">AJAX</span>的框架，比如<span lang="EN-US" xml:lang="EN-US">DWR</span>、<span lang="EN-US" xml:lang="EN-US">JQuery</span>等，掌握一个就够了，不用太深，实际应用中用到的时候再动手查阅与钻研即可。</p>
		<p>常见的错误做法就是尝试着自己去完成每一种<span lang="EN-US" xml:lang="EN-US">JavaScript</span>效果，耽误时间而且没有必要，当然，如果你还在读书有大量充裕的时间除外。</p>
		<p>&lt;!--[if !supportLists]--&gt; <span class="subtitle" lang="EN-US" xml:lang="EN-US">10、         </span><span class="subtitle">&lt;!--[endif]--&gt; <span lang="EN-US" xml:lang="EN-US">Struts1.x</span></span></p>
		<p>中文名：《精通<span lang="EN-US" xml:lang="EN-US">Struts:</span>基于<span lang="EN-US" xml:lang="EN-US">MVC</span>的<span lang="EN-US" xml:lang="EN-US">JAVA WEB</span>设计与开发》</p>
		<p>图<span lang="EN-US" xml:lang="EN-US">  </span>片：<span lang="EN-US" xml:lang="EN-US"><v:shape id="_x0000_i1029" style="WIDTH: 106.5pt; HEIGHT: 150pt" type="#_x0000_t75"><v:imagedata o:title="" src="books.files/image008.png"></v:imagedata></v:shape>&lt;!--[if !vml]--&gt; <img height="200" alt="book" src="http://www.bjsxt.com/books/books_recommended_image009.jpg" width="142" border="0" v:shapes="_x0000_i1029" /> &lt;!--[endif]--&gt; </span></p>
		<p>作<span lang="EN-US" xml:lang="EN-US">  </span>者：孙卫琴</p>
		<p>出版社：电子工业出版社</p>
		<p>阅读方法：写的很详细，建议阅读我们的视频教程后当作参考书使用。</p>
		<p>&lt;!--[if !supportLists]--&gt; <span class="subtitle" lang="EN-US" xml:lang="EN-US">11、         </span><span class="subtitle">&lt;!--[endif]--&gt; <span lang="EN-US" xml:lang="EN-US">Struts2.0</span></span></p>
		<p>因为业界对于<span lang="EN-US" xml:lang="EN-US">Struts1.x</span>的应用还比较多，同时学了<span lang="EN-US" xml:lang="EN-US">Struts1.x</span>后可以为<span lang="EN-US" xml:lang="EN-US">2.0</span>打下基础，所以还是建议首先阅读<span lang="EN-US" xml:lang="EN-US">1.x</span>的书，目前<span lang="EN-US" xml:lang="EN-US">Struts2.0</span>的应用逐渐增多，由于尚学堂对于<span lang="EN-US" xml:lang="EN-US">Struts2.0</span>的讲解是建立在<span lang="EN-US" xml:lang="EN-US">1.x</span>上并且融合在项目中，不方便公布，所以建议大家在掌握了<span lang="EN-US" xml:lang="EN-US">1.x</span>之后，按照《<a class="t_f60" href="http://www.bjsxt.com/books/how_to_find_good_book.html"><font color="#1a8bc8">尚学堂<span lang="EN-US" xml:lang="EN-US">Java</span>培训：如何寻找好书</font></a>》中讲的方法去寻找就可以了，一般来讲这一类的书都不用从头到尾一个字一个字的读，也千万不要这样读，掌握基础，按需而查就可以了。</p>
		<p>&lt;!--[if !supportLists]--&gt; <span class="subtitle" lang="EN-US" xml:lang="EN-US">12、         </span><span class="subtitle">&lt;!--[endif]--&gt; <span lang="EN-US" xml:lang="EN-US">Hibernate</span></span></p>
		<p>中文名：《深入浅出<span lang="EN-US" xml:lang="EN-US">Hibernate</span>》</p>
		<p>图<span lang="EN-US" xml:lang="EN-US">  </span>片：<span lang="EN-US" xml:lang="EN-US"><v:shape id="_x0000_i1030" style="WIDTH: 120pt; HEIGHT: 150pt" type="#_x0000_t75"><v:imagedata o:title="" src="books.files/image010.png"></v:imagedata></v:shape>&lt;!--[if !vml]--&gt; <img height="200" alt="book" src="http://www.bjsxt.com/books/books_recommended_image011.jpg" width="160" border="0" v:shapes="_x0000_i1030" /> &lt;!--[endif]--&gt; </span></p>
		<p>作<span lang="EN-US" xml:lang="EN-US">  </span>者：夏昕</p>
		<p>出版社：电子工业出版社</p>
		<p>阅读方法：同上，建议在阅读尚学堂视频后作为参考书阅读</p>
		<p>
				<span lang="EN-US" xml:lang="EN-US"> </span> &lt;!--[if !supportLists]--&gt; <span class="subtitle" lang="EN-US" xml:lang="EN-US">13、         </span><span class="subtitle">&lt;!--[endif]--&gt; <span lang="EN-US" xml:lang="EN-US">Spring</span></span></p>
		<p>中文名：《<span lang="EN-US" xml:lang="EN-US">Spring2.0</span>技术手册》</p>
		<p>图<span lang="EN-US" xml:lang="EN-US">  </span>片：<span lang="EN-US" xml:lang="EN-US"><v:shape id="_x0000_i1031" style="WIDTH: 124.5pt; HEIGHT: 150pt" type="#_x0000_t75"><v:imagedata o:title="" src="books.files/image012.png"></v:imagedata></v:shape>&lt;!--[if !vml]--&gt; <img height="200" alt="book" src="http://www.bjsxt.com/books/books_recommended_image013.jpg" width="166" border="0" v:shapes="_x0000_i1031" /> &lt;!--[endif]--&gt; </span></p>
		<p>作<span lang="EN-US" xml:lang="EN-US">  </span>者：林信良</p>
		<p>出版社：电子工业出版社</p>
		<p>阅读方法：同样，建议在阅读尚学堂视频后作为参考书阅读，对于<span lang="EN-US" xml:lang="EN-US">Spring</span>，只关注<span lang="EN-US" xml:lang="EN-US">IOC</span>和<span lang="EN-US" xml:lang="EN-US">AOP</span>即可，关键在于如何运用<span lang="EN-US" xml:lang="EN-US">Spring</span>整合<span lang="EN-US" xml:lang="EN-US">Struts</span>与<span lang="EN-US" xml:lang="EN-US">Hibernate</span></p>
		<p>
				<span lang="EN-US" xml:lang="EN-US"> </span> &lt;!--[if !supportLists]--&gt; <span class="subtitle" lang="EN-US" xml:lang="EN-US">14、         </span><span class="subtitle">&lt;!--[endif]--&gt; <span lang="EN-US" xml:lang="EN-US">XML</span></span></p>
		<p>不需要读书，阅读王勇老师的视频就可以了，<span lang="EN-US" xml:lang="EN-US">XML</span>的内容虽然很多，但是大多数应用上比较简单，在工作中用到的时候采用按需而学即可</p>
		<p>&lt;!--[if !supportLists]--&gt; <span class="subtitle" lang="EN-US" xml:lang="EN-US">15、         </span><span class="subtitle">&lt;!--[endif]--&gt; <span lang="EN-US" xml:lang="EN-US">UML</span>的书籍</span></p>
		<p>英文名：《<span lang="EN-US" xml:lang="EN-US">The Elements of UML Style</span>》</p>
		<p>中文名：《<span lang="EN-US" xml:lang="EN-US">UML</span>风格》</p>
		<p>图<span lang="EN-US" xml:lang="EN-US">  </span>片：<span lang="EN-US" xml:lang="EN-US"><v:shape id="_x0000_i1032" style="WIDTH: 104.25pt; HEIGHT: 150pt" type="#_x0000_t75"><v:imagedata o:title="" src="books.files/image014.png"></v:imagedata></v:shape>&lt;!--[if !vml]--&gt; <img height="200" alt="book" src="http://www.bjsxt.com/books/books_recommended_image015.jpg" width="139" border="0" v:shapes="_x0000_i1032" /> &lt;!--[endif]--&gt; </span></p>
		<p>作<span lang="EN-US" xml:lang="EN-US">  </span>者：<span lang="EN-US" xml:lang="EN-US">Scott W.Ambler</span></p>
		<p>出版社：清华大学出版社</p>
		<p>阅读方法：在阅读了尚学堂李老师的<span lang="EN-US" xml:lang="EN-US">UML</span>视频之后阅读本书，一般看完一本<span lang="EN-US" xml:lang="EN-US">UML</span>书不等于你会画清晰明了可读性高的<span lang="EN-US" xml:lang="EN-US">UML</span>了，看完本书才是。</p>
		<p>
				<span lang="EN-US" xml:lang="EN-US"> </span> &lt;!--[if !supportLists]--&gt; <span class="subtitle" lang="EN-US" xml:lang="EN-US">16、         </span><span class="subtitle">&lt;!--[endif]--&gt; <span lang="EN-US" xml:lang="EN-US">EJB</span></span></p>
		<p>阅读尚学堂的<span lang="EN-US" xml:lang="EN-US">EJB3.0</span>视频即可</p>
		<p>&lt;!--[if !supportLists]--&gt; <span class="subtitle" lang="EN-US" xml:lang="EN-US">17、         </span><span class="subtitle">&lt;!--[endif]--&gt; 设计模式</span></p>
		<p>中文名：《<span lang="EN-US" xml:lang="EN-US">Java</span>与模式》</p>
		<p>图<span lang="EN-US" xml:lang="EN-US">  </span>片：<span lang="EN-US" xml:lang="EN-US"><v:shape id="_x0000_i1033" style="WIDTH: 108pt; HEIGHT: 150pt" type="#_x0000_t75"><v:imagedata o:title="" src="books.files/image016.png"></v:imagedata></v:shape>&lt;!--[if !vml]--&gt; <img height="200" alt="book" src="http://www.bjsxt.com/books/books_recommended_image017.jpg" width="144" border="0" v:shapes="_x0000_i1033" /> &lt;!--[endif]--&gt; </span></p>
		<p>作<span lang="EN-US" xml:lang="EN-US">  </span>者：阎宏</p>
		<p>出版社：电子工业出版社</p>
		<p>阅读方法：在阅读了尚学堂马老师的设计模式的基础之上，用这本书备查。</p>
		<p>&lt;!--[if !supportLists]--&gt; <span class="subtitle" lang="EN-US" xml:lang="EN-US">18、         </span><span class="subtitle">&lt;!--[endif]--&gt; <span lang="EN-US" xml:lang="EN-US">JavaEE</span>综合</span></p>
		<p>英文名：《<span lang="EN-US" xml:lang="EN-US">J2EE ANTIPATTERNS</span>》</p>
		<p>中文名：《<span lang="EN-US" xml:lang="EN-US">J2EE</span>反模式》</p>
		<p>图<span lang="EN-US" xml:lang="EN-US">  </span>片：<span lang="EN-US" xml:lang="EN-US"><v:shape id="_x0000_i1034" style="WIDTH: 114.75pt; HEIGHT: 150pt" type="#_x0000_t75"><v:imagedata o:title="" src="books.files/image018.png"></v:imagedata></v:shape>&lt;!--[if !vml]--&gt; <img height="200" alt="book" src="http://www.bjsxt.com/books/books_recommended_image019.jpg" width="153" border="0" v:shapes="_x0000_i1034" /> &lt;!--[endif]--&gt; </span></p>
		<p>作<span lang="EN-US" xml:lang="EN-US">  </span>者：<span lang="EN-US" xml:lang="EN-US">Bill Dudney</span>等</p>
		<p>出版社：机械工业出版社</p>
		<p>阅读方法：在有了一定的项目开发经验之后，在有了初步的设计能力之后，阅读本书来了解一下设计中的常见错误以及解决方案吧。不是想指导开发人员如何完成<span lang="EN-US" xml:lang="EN-US">J2EE</span>设计和开发，而是通过指出应用开发中常犯的错误及修复错误的方法，来指导读者成为更好的<span lang="EN-US" xml:lang="EN-US">J2EE</span>开发人员。</p>
		<p>
				<span lang="EN-US" xml:lang="EN-US"> </span> &lt;!--[if !supportLists]--&gt; <span class="subtitle" lang="EN-US" xml:lang="EN-US">19、         </span><span class="subtitle">&lt;!--[endif]--&gt; 软件工程与<span lang="EN-US" xml:lang="EN-US">UML</span>等综合运用</span></p>
		<p>英文名：《<span lang="EN-US" xml:lang="EN-US">Applying UML and Patterns</span>》</p>
		<p>中文名：《<span lang="EN-US" xml:lang="EN-US">UML</span>与模式应用》</p>
		<p>图<span lang="EN-US" xml:lang="EN-US">  </span>片：<span lang="EN-US" xml:lang="EN-US"><v:shape id="_x0000_i1035" style="WIDTH: 115.5pt; HEIGHT: 150pt" type="#_x0000_t75"><v:imagedata o:title="" src="books.files/image020.png"></v:imagedata></v:shape>&lt;!--[if !vml]--&gt; <img height="200" alt="book" src="http://www.bjsxt.com/books/books_recommended_image021.jpg" width="154" border="0" v:shapes="_x0000_i1035" /> &lt;!--[endif]--&gt; </span></p>
		<p>作<span lang="EN-US" xml:lang="EN-US">  </span>者：<span lang="EN-US" xml:lang="EN-US">Craig Larman</span></p>
		<p>出版社：机械工业出版社</p>
		<p>阅读方法：该书是<span lang="EN-US" xml:lang="EN-US">OOAD</span>中经典巨著之一<span lang="EN-US" xml:lang="EN-US">, </span>不同于专门介绍<span lang="EN-US" xml:lang="EN-US">UP</span>的书，书中向<span lang="EN-US" xml:lang="EN-US">UP</span>中加入了<span lang="EN-US" xml:lang="EN-US">Agile</span>的思想，使得<span lang="EN-US" xml:lang="EN-US">UP</span>在实践中更容易操作；该书也不同于介绍<span lang="EN-US" xml:lang="EN-US">UML</span>语法的书，而是融入了<span lang="EN-US" xml:lang="EN-US">OOAD</span>的思想。这本书被很多学校选为<span lang="EN-US" xml:lang="EN-US">OOAD</span>的教材。</p>
		<p>我们的建议是在有了一定的项目开发经验之后进行阅读，效果会更好。</p>
		<p>&lt;!--[if !supportLists]--&gt; <span class="subtitle" lang="EN-US" xml:lang="EN-US">20、         </span><span class="subtitle">&lt;!--[endif]--&gt; 其他</span></p>
		<p>
				<span lang="EN-US" xml:lang="EN-US">Log4J</span>、<span lang="EN-US" xml:lang="EN-US">JUnit</span>、<span lang="EN-US" xml:lang="EN-US">Eclipse</span>、<span lang="EN-US" xml:lang="EN-US">Weblogic</span>、<span lang="EN-US" xml:lang="EN-US">Linux......</span>还有其他的一些内容基本上不用看书，用到的时候到网上查资料即可。</p>
		<p>
				<span lang="EN-US" xml:lang="EN-US"> </span>为了不给大家增加太大的负担，这里推荐的只是一个基础的集合，并不意味着其他的书就不需要读了，好书多的是，等你去发现，只要开卷、必定有益。</p>
		<p>
				<span lang="EN-US" xml:lang="EN-US"> </span>有的人总希望别人给一个路线图，按照这个图一步一步的来，自己一点弯路都不走，这个我相信也是长期受应试教育的结果。但是如果一门学问能够按照一个固定的死路线从头走到尾的话，那它基本上也就接近于没有价值了。所以，请务必根据自身的情况，进行灵活的学习。</p>
		<p>
				<span lang="EN-US" xml:lang="EN-US"> </span>尚学堂将公布整个课程的<span lang="EN-US" xml:lang="EN-US">30%-35%</span>左右的教程供大家自学，基本上涵盖了上面讲到的这些知识点。</p>
		<p>知识点相对来说自学还是比较容易的，尤其是时间充裕的情况下。</p>
		<p>但是目前企业更看重的是项目经验，项目部分不太容易自学，如果想节省时间、积累实战项目经验、少走弯路、感受专业业界约定俗成而不是照本宣科、更高起点、接受专业项目经理指导、学习更深入的内容的话，建议考虑尚学堂的高级培训课程，以<span lang="EN-US" xml:lang="EN-US">2007</span>年大多数学生的<span lang="EN-US" xml:lang="EN-US">4500</span>薪水为例，只需两到三个月，就可以收回培训费用的投资，还是比较值得的。</p>
		<p>
				<span lang="EN-US" xml:lang="EN-US"> </span>最后叮嘱一句，好书多的是，开卷就有益，但是为了减轻读者的负担，就写这几本吧，另外，单纯的技术书籍也并不能够代替写项目，毕竟，对于现在的程序员来说，项目经验才是最重要的，所以，不要忘了动手去完成一些力所能及的项目，当然，参加我们的培训来培养项目经验也是很不错的选择。</p>
		<div class="postDesc">posted on 2008-10-26 22:55 <a href="/yanfa120/"><font color="#1a8bc8">小Xiong</font></a> 阅读(31) <a href="/yanfa120/archive/2008/10/26/236774.html#Post"><font color="#1a8bc8">评论(0)</font></a>  <a href="/yanfa120/admin/EditPosts.aspx?postid=236774"><font color="#1a8bc8">编辑</font></a>  <a href="/yanfa120/AddToFavorite.aspx?id=236774"><font color="#1a8bc8">收藏</font></a></div>
<img src ="http://www.blogjava.net/qsg1982/aggbug/237157.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qsg1982/" target="_blank">e全</a> 2008-10-28 17:06 <a href="http://www.blogjava.net/qsg1982/archive/2008/10/28/237157.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Navicat 8.0 MySQL</title><link>http://www.blogjava.net/qsg1982/archive/2008/10/21/235716.html</link><dc:creator>e全</dc:creator><author>e全</author><pubDate>Tue, 21 Oct 2008 08:47:00 GMT</pubDate><guid>http://www.blogjava.net/qsg1982/archive/2008/10/21/235716.html</guid><wfw:comment>http://www.blogjava.net/qsg1982/comments/235716.html</wfw:comment><comments>http://www.blogjava.net/qsg1982/archive/2008/10/21/235716.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qsg1982/comments/commentRss/235716.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qsg1982/services/trackbacks/235716.html</trackback:ping><description><![CDATA[
		<p>ulcms</p>
		<p>Navicat 8.0 MySQL</p>
<img src ="http://www.blogjava.net/qsg1982/aggbug/235716.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qsg1982/" target="_blank">e全</a> 2008-10-21 16:47 <a href="http://www.blogjava.net/qsg1982/archive/2008/10/21/235716.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>apache no services[转贴]</title><link>http://www.blogjava.net/qsg1982/archive/2008/10/20/235389.html</link><dc:creator>e全</dc:creator><author>e全</author><pubDate>Mon, 20 Oct 2008 01:49:00 GMT</pubDate><guid>http://www.blogjava.net/qsg1982/archive/2008/10/20/235389.html</guid><wfw:comment>http://www.blogjava.net/qsg1982/comments/235389.html</wfw:comment><comments>http://www.blogjava.net/qsg1982/archive/2008/10/20/235389.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qsg1982/comments/commentRss/235389.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qsg1982/services/trackbacks/235389.html</trackback:ping><description><![CDATA[安装完apache之后（不是按照默认路径安装的，例如是 D:\ ）右下方哪个小羽毛图标是没有启动的，左键不好使，而且提示“No services installed”，提示服务器没有被安装。 <br />解决方法: 找到 apache2 目录下的 bin 目录 有个apache.exe 文件，在运行中键入：cmd ，出来DOS窗口 <br />键入: d:\ 注释：进入D盘，假如apache安装在D盘 <br />键入: cd apache2 注释：进入D:\apache2\目录 <br />键入: cd bin 注释：进入D:\apache2\bin\ 目录 <br />键入: httpd.exe -k install -n apache2 注释：添加了apache2这个服务了，下面我们要启动它 <br />键入: net start apache2 注释：启动apache2服务 关闭服务器是： net stop apache2 <br />OK，问题解决.<img src ="http://www.blogjava.net/qsg1982/aggbug/235389.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qsg1982/" target="_blank">e全</a> 2008-10-20 09:49 <a href="http://www.blogjava.net/qsg1982/archive/2008/10/20/235389.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Javascript让某个HTML区块的链接失效[转帖]</title><link>http://www.blogjava.net/qsg1982/archive/2008/10/15/234383.html</link><dc:creator>e全</dc:creator><author>e全</author><pubDate>Wed, 15 Oct 2008 02:35:00 GMT</pubDate><guid>http://www.blogjava.net/qsg1982/archive/2008/10/15/234383.html</guid><wfw:comment>http://www.blogjava.net/qsg1982/comments/234383.html</wfw:comment><comments>http://www.blogjava.net/qsg1982/archive/2008/10/15/234383.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qsg1982/comments/commentRss/234383.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qsg1982/services/trackbacks/234383.html</trackback:ping><description><![CDATA[
		<p>在开发中时常会遇到这样的需求:让某些描述信息(这些描述信息已经进行过安全html过滤,所以不会包含Javascript等脚本语言,但是允许正常的链接)里的链接失效,但是不要或者这些描述信息.如要以下代码块里的链接失效</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; HEIGHT: 92px; BACKGROUND-COLOR: #eeeeee">
				<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">div </span>
				<span style="COLOR: #ff0000">id</span>
				<span style="COLOR: #0000ff">="desc"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />   </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">a </span>
				<span style="COLOR: #ff0000">href</span>
				<span style="COLOR: #0000ff">="http://www.9i56.cn"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">无聊网</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">a</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">div</span>
				<span style="COLOR: #0000ff">&gt;</span>
		</div>
		<br />只需要再后面插入下段Javascript既可 
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; HEIGHT: 178px; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">script type</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">text/javascript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> elements </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> document.getElementById('desc').getElementsByTagName('A');<br />    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, len </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> elements.length; i </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000"> len; </span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">i) {<br />        elements[i].onclick </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(){</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;};<br />        elements[i].href </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">#</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br />    }<br />    </span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> elementsArea </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> document.getElementById('desc').getElementsByTagName('area');<br />    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, len </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> elementsArea.length; i </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000"> len; </span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">i) {<br />        elementsArea[i].onclick </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(){</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;};<br />        elementsArea[i].href </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">#</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br />    }<br /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span></div><img src ="http://www.blogjava.net/qsg1982/aggbug/234383.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qsg1982/" target="_blank">e全</a> 2008-10-15 10:35 <a href="http://www.blogjava.net/qsg1982/archive/2008/10/15/234383.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最牛的二十句话道出人的二十条法则！[转帖]</title><link>http://www.blogjava.net/qsg1982/archive/2008/10/14/234236.html</link><dc:creator>e全</dc:creator><author>e全</author><pubDate>Tue, 14 Oct 2008 07:13:00 GMT</pubDate><guid>http://www.blogjava.net/qsg1982/archive/2008/10/14/234236.html</guid><wfw:comment>http://www.blogjava.net/qsg1982/comments/234236.html</wfw:comment><comments>http://www.blogjava.net/qsg1982/archive/2008/10/14/234236.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qsg1982/comments/commentRss/234236.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qsg1982/services/trackbacks/234236.html</trackback:ping><description><![CDATA[蓝斯登原则：在你往上爬的时候，一定要保持梯子的整洁，否则你下来时可能会滑倒。进退有度，才不至进退维谷；宠辱不忘，方可以宠辱不惊。<br /><br />    卢维斯定理：谦虚不是把自己想得很糟，而是完全不想自己。如果把自己想得太好，就很容易将别人想得很糟。<br /><br />    托利得定理：测验一个人的智力是否属于上乘，只看脑子里能否同时容纳两种相反的思想，而无碍于其处世行事。这是判断一个人依据的标准。<br /><br />    刺猬理论：刺猬在天冷时彼此靠拢取暖，但保持一定距离，以免互相刺伤。保持亲密的重要方法，乃是保持适当的距离。<br /><br />    鲦鱼效应：鲦鱼因个体弱小而常常群居，并以强健者为自然首领。将一只稍强的鲦鱼脑后控制行为的部分割除后，此鱼便失去自制力，行动也发生紊乱，但其他鲦鱼却仍像从前一样盲目追随。下属的悲剧总是领导一手造成的。下属觉得最没劲的事，是他们跟着一位最差劲的领导。<br /><br />    洛伯定理：对于一个经理人来说，最要紧的不是你在场时的情况，而是你不在场时发生了什么。如果只想让下属听你的，那么当你不在身边时看他们是不是还“听你的”？<br /><br />    斯坦纳定理：在哪里说得愈少，在哪里听到的就愈多。只有很好听取别人的，才能更好说出自己的。为了多听，必须少说！<br /><br />    牢骚效应：凡是公司中有对工作发牢骚的人，那家公司或老板一定比没有这种人或有这种人而把牢骚埋在肚子里公司要成功得多。牢骚是改变不合理现状的催化剂。牢骚虽不总是正确的，但认真对待牢骚却总是正确的。有人发牢骚，说明他对现状的改变有信心，没有信心，他就不再发牢骚！<br /><br />    氨基酸组合效应：组成人体蛋白的八种氨基酸，只要有一种含量不足，其他七种就无法合成蛋白质。当缺一不可时，一就是一切。<br /><br />    米格-25效应：前苏联研制的米格-25喷气式战斗机的许多零部件与美国的相比都落后，但因设计者考虑了整体性能，故能在升降、速度、应急反应等方面成为当时世界一流。所谓最佳整体，乃是个体的最佳组合。1+1》2。<br /><br />    磨合效应：新组装的机器，通过一定时期的使用，把磨擦面上的加工痕迹磨光而变得更加密合。要想达到完整的契合，须双方都做出必要的割舍。<br /><br />    波特定理：当遭受许多批评时，下级往往只记住开头的一些，其余就不听了，因为他们忙于思索论据来反驳开头的批评。总盯着下属的失误，是一个领导者的最大失误。<br /><br />    吉尔伯特法则：工作危机最确凿的信号，是没有人跟你说该怎样作。真正危险的事，是没人跟你谈危险。<br /><br />    权威暗示效应：一化学家称，他将测验一瓶臭气的传播速度，他打开瓶盖15秒后，前排学生即举手，称自己闻到臭气，而后排的人则陆续举手，纷纷称自己也已闻到，其实瓶中什么也没有。迷信则轻信，盲目必盲从。<br /><br />    定位效应：社会心理学家曾作过一个试验：在召集会议时先让人们自由选择位子，之后到室外休息片刻再进入室内入座，如此五至六次，发现大多数人都选择他们第一次坐过的位子。凡是自己认定的，人们大都不想轻易改变它。<br /><br />    吉格勒定理：除了生命本身，没有任何才能不需要后天的锻炼。水无积无辽阔，人不养不成才。<br /><br />    犬獒效应：当年幼的藏犬长出牙齿并能撕咬时，主人就把它们放到一个没有食物和水的封闭环境里让这些幼犬自相撕咬，最后剩下一只活着的犬，这只犬称为獒。据说十只犬才能产生一只獒。困境是造就强者的学校。<br /><br />    近因效应：最近或最后的印象对人的认知有强烈的影响。结果往往会被视为过程的总结。<br /><br />    洒井法则：在招工时用尽浑身解数，使出各种方法，不如使自身成为一个好公司，这样人才自然而然会汇集而来。靠事业吸引人才，靠待遇留不住人才。<br /><br />    美即好效应：对一个外表英俊漂亮的人，人们很容易误认为他或她的其他方面也很不错。印象一旦以情绪为基础，这一印象常会偏离事实。 <br /><img src ="http://www.blogjava.net/qsg1982/aggbug/234236.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qsg1982/" target="_blank">e全</a> 2008-10-14 15:13 <a href="http://www.blogjava.net/qsg1982/archive/2008/10/14/234236.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>no</title><link>http://www.blogjava.net/qsg1982/archive/2008/10/13/234038.html</link><dc:creator>e全</dc:creator><author>e全</author><pubDate>Mon, 13 Oct 2008 08:25:00 GMT</pubDate><guid>http://www.blogjava.net/qsg1982/archive/2008/10/13/234038.html</guid><wfw:comment>http://www.blogjava.net/qsg1982/comments/234038.html</wfw:comment><comments>http://www.blogjava.net/qsg1982/archive/2008/10/13/234038.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qsg1982/comments/commentRss/234038.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qsg1982/services/trackbacks/234038.html</trackback:ping><description><![CDATA[
		<a href="/yifeng/archive/2008/10/12/233820.html">http://www.blogjava.net/yifeng/archive/2008/10/12/233820.html</a>
<img src ="http://www.blogjava.net/qsg1982/aggbug/234038.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qsg1982/" target="_blank">e全</a> 2008-10-13 16:25 <a href="http://www.blogjava.net/qsg1982/archive/2008/10/13/234038.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>html标签大全[转帖]</title><link>http://www.blogjava.net/qsg1982/archive/2008/10/13/234031.html</link><dc:creator>e全</dc:creator><author>e全</author><pubDate>Mon, 13 Oct 2008 08:10:00 GMT</pubDate><guid>http://www.blogjava.net/qsg1982/archive/2008/10/13/234031.html</guid><wfw:comment>http://www.blogjava.net/qsg1982/comments/234031.html</wfw:comment><comments>http://www.blogjava.net/qsg1982/archive/2008/10/13/234031.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qsg1982/comments/commentRss/234031.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qsg1982/services/trackbacks/234031.html</trackback:ping><description><![CDATA[一、文字<br />1.标题文字 &lt;h#&gt;..........&lt;/h#&gt; #=1~6；h1为最大字，h6为最小字<br /><br />2.字体变化 &lt;font&gt;..........&lt;/font&gt; <br />【1】字体大小 &lt;font size=#&gt;..........&lt;/font&gt; #=1~7；数字愈大字也愈大 <br />【2】指定字型 &lt;font face="字体名称"&gt;..........&lt;/font&gt; <br />【3】文字颜色 &lt;font color=#rrggbb&gt;..........&lt;/font&gt;<br />               rr：表红色（red）色码<br />               gg：表绿色（green）色码<br />               bb：表蓝色（blue）色码<br />               rrggbb也可用6位颜色代码数字<br /><br />3.显示小字体 &lt;small&gt;..........&lt;/small&gt; <br /><br />4.显示大字体 &lt;big&gt;..........&lt;/big&gt;<br /><br />5.粗体字 &lt;b&gt;..........&lt;/b&gt;<br /><br />6.斜体字 &lt;i&gt;..........&lt;/i&gt; <br /><br />7.打字机字体 &lt;tt&gt;..........&lt;/tt&gt;<br /><br />8.底线 &lt;u&gt;..........&lt;/u&gt;<br /><br />9.删除线 &lt;strike&gt;..........&lt;/strike&gt;<br /><br />10.下标字 &lt;sub&gt;..........&lt;/sub&gt;<br /><br />11.上标字 &lt;sup&gt;..........&lt;/sup&gt;<br /><br />12.文字闪烁效果 &lt;blink&gt;..........&lt;/blink&gt;<br /><br />13.换行（也称回车） &lt;br&gt;<br /><br />14.分段 &lt;p&gt; <br /><br />15.文字的对齐方向 &lt;p align="#"&gt; #号可为 left：表向左对齐（预设值） center：表向中对齐 right：表向右对齐 P.S.&lt;p align="#"&gt;之后的文字都会以所设的对齐方式显示，直到出现另一个&lt;p align="#"&gt;改变其对齐方向，遇到&lt;hr&gt;或&lt;h#&gt;标签时会自动设回预设的向左对齐。<br /><br />16.分隔线 &lt;hr&gt; <br />【1】分隔线的粗细 &lt;hr size=点数&gt; <br />【2】分隔线的宽度 &lt;hr size=点数或百分比&gt; <br />【3】分隔线对齐方向 &lt;hr align="#"&gt; <br />      #号可为 left：表向左对齐（预设值） center：表向中对齐 right：表向右对齐 <br />【4】分隔线的颜色 &lt;hr color=#rrggbb&gt; <br />【5】实心分隔线 &lt;hr noshade&gt;<br /><br />17.居中对齐 &lt;center&gt;..........&lt;/center&gt;<br /><br />18.依原始样式显示 &lt;pre&gt;..........&lt;/pre&gt;<br /><br />19.&lt;body&gt;指令的属性<br />【1】背景颜色 -- bgcolor &lt;body bgcolor=#rrggbb&gt; <br />【2】背景图案 -- background &lt;body   background="图形文件名"&gt; <br />【3】设定背景图案不会卷动 -- bgproperties &lt;body bgproperties=fixed&gt; <br />【4】文件内容文字的颜色 -- text &lt;body text=#rrggbb&gt; <br />【5】超连结文字颜色 -- link &lt;body link=#rrggbb&gt; <br />【6】正被选取的超连结文字颜色 -- vlink &lt;body vlink=#rrggbb&gt; <br />【7】已连结过的超连结文字颜色 -- alink &lt;body alink=#rrggbb&gt;<br /><br />20.文字移动指令&lt;MARQUEE&gt;..........&lt;/MARQUEE&gt;<br />      移动速度指令是:scrollAmount=#     #最小为1，速度为最慢；数字越大移动的越快。<br />      移动方向指令是：direction=#           up向上、down向下、left向左、right向右。     <br />      指令举例：&lt;MARQUEE scrollAmount=3 direction=up&gt;..........&lt;/MARQUEE&gt;<br /><br />二、图片<br />1.插入图片 &lt;img src="图形文件名"&gt;<br /><br />2.设定图框 -- border &lt;img src="图形文件名" border=点数&gt;<br /><br />3.设定图形大小 -- width、height &lt;img src="图形文件名" width=宽度点数 height=高度点数&gt;<br /><br />4.设定图形上下左右留空 -- vspace、hspace &lt;img src="图形文件名" vspace=上下留空点数 hspace=左右留空点数&gt;<br /><br />5.图形附注 &lt;img src="图形文件名" alt="说明文字"&gt;<br /><br />6.预载图片<br />&lt;img src="高解析度图形文件名" lowsrc="低解析度图形文件名"&gt; P.S.两个图的图形大小最好一致;<br /><br />7.影像地图（Image Map） &lt;img src="图形文件名" usemap="#图的名称"&gt; &lt;map name="图的名称"&gt;<br />&lt;area shape=形状 coords=区域座标列表 href="连结点之URL"&gt;<br />&lt;area shape=形状 coords=区域座标列表 href="连结点之URL"&gt;<br />&lt;area shape=形状 coords=区域座标列表 href="连结点之URL"&gt;<br />&lt;area shape=形状 coords=区域座标列表 href="连结点之URL"&gt; &lt;/map &lt;<br />【1】定义形状 -- shape<br />shape=rect：矩形 shape=circle：圆形 shape=poly：多边形 <br />【2】定义区域 -- coords<br />a.矩形：必须使用四个数字，前两个数字为左上角座标，后两个数字为右下角座标<br />例：&lt;area shape=rect coords=100,50,200,75 href="URL"&gt; <br />b.圆形：必须使用三个数字，前两个数字为圆心的座标，最后一个数字为半径长度<br />例：&lt;area shape=circle coords=85,155,30 href="URL"&gt;<br />c.任意图形（多边形）：将图形之每一转折点座标依序填入<br />例：&lt;area shape=poly coords=232,70,285,70,300,90,250,90,200,78 href="URL"<br /><br />三、表格相关<br />1.表格标题<br />&lt;caption&gt;..........&lt;/caption&gt; <br /><br />表格标题位置 -- align<br />&lt;caption align="#"&gt; #号可为 top：表标题置于表格上方（预设值）<br />bottom：表标题置于表格下方<br /><br />2.定义列 &lt;tr&gt;<br /><br />3.定义栏位 《1》&lt;td&gt;：靠左对齐<br />            《2》&lt;th&gt;：靠中对齐ⅱ粗体 <br />【1】水平位置 -- align &lt;th align="#"&gt;<br />                   #号可为 left：向左对齐   center：向中对齐 right：向右对齐<br />【2】垂直位置 -- align &lt;th align="#"&gt; #号可为<br />                 top：向上对齐 middle：向中对齐     bottom：向下对齐 <br />【3】栏位宽度 -- width      &lt;th width=点数或百分比&gt; <br />【4】栏位垂直合并 -- rowspan     &lt;th rowspan=欲合并栏位数&gt; <br />【5】栏位横向合并 -- colspan       &lt;th colspan=欲合并栏位数&gt;<br />四、表格的主要属性 <br />1. &lt;table&gt;标记的主要属性 <br />     align定义表格的对齐方式，有三个属性值center，left，right <br />     background定义表格的背景图案，属性值为图片的地址 <br />     bgcolor定义表格的背景颜色，属性值是各种颜色代码 <br />     border定义表格的边框宽度，属性值是数字 <br />     bordercolor定义表格边框的颜色，属性值是各种颜色代码 <br />     cellpadding定义单元格内容与单元格边框之间的距离，属性值是数字 <br />     cellspacing定义表格中单元格之间的距离 <br />     height定义表格的高度，属性值是数字 <br />     width定义表格的宽度，属性值是数字 <br /><br />2. &lt;tr&gt;标记，表格是由多行与多列组成的，&lt;tr&gt;标记用来定义表格的一行，他的属性极其属性值定义的是表格中的该行，其主要属性与属性值如下： <br />     align定义对齐方式，属性值与上同 <br />     background定义背景图案 bgcolor定义背景色 <br /><br />3. &lt;td&gt;标记。用&lt;td&gt;标记概况起来的内容表示表格的单元。其主要属性与属性值和&lt;table&gt;标记的一样，补充两个合并列和行的代码： <br />     colspan定义合并表格的列数，属性值是数字 <br />     rowspan定义合并表格的行数，属性值是数字 <br /><br />五、FRAME<br />1、分割视窗指令 &lt;frameset&gt;..........&lt;/frameset&gt; <br />【1】垂直（上下）分割 -- rows<br />&lt;frameset rows=#&gt; #号可为点数：<br />     如欲分割为100,200,300三个视窗，则&lt;frameset rows=100,200,300&gt;；<br />     亦可以*号代表，如&lt;frameset rows=*,500,*&gt;<br />     百分比：如&lt;frameset rows=30%,70%&gt;，各项总和最好为100%;<br />【2】水平（左右）分割 -- cols &lt;frameset cols=点数或百分比&gt;<br /><br />2、指定视窗内容 -- &lt;frame&gt;<br />&lt;frameset cols=30%,70%&gt; &lt;frame&gt; &lt;frame&gt; &lt;/frameset&gt;<br />【1】指定视窗的文件名称 -- src &lt;frame src=HTML档名&gt; <br />【2】定义视窗的名称 -- name<br />&lt;frame name=视窗名称&gt; <br />【3】设定文件与上下边框的距离 -- marginheight<br />&lt;frame marginheight=点数&gt; <br />【4】设定文件与左右边框的距离 -- marginwidth<br />&lt;frame marginwidth=点数&gt; <br />【5】设定分割视窗卷轴 -- scrolling <br />&lt;frame scrolling=#&gt; #号可为 yes：固定出现卷轴<br />           no：不出现卷轴 <br />           auto：自动判断文件大小需不需要卷轴（预设值）<br />【6】锁住分割视窗的大小 -- noresize &lt;frame noresize&gt;<br />第四讲：页面布局　　<br /><br /><br />由于浏览器不识别文本中的格式，文字都连续显示在屏幕上，需要按什么格式显示，<br />必需加格式控制符，如“br”就是换行控制符。常用的还有分段符“p”，用“p”<br />不仅将以后文字换到下行，而且还插入一空行。如连用两个“br”“br”与换成一<br />个“p”可完成同样功能。<br />还有一个强制不换行指令&lt;nobr&gt;，到一个&lt;/nobe&gt;中间的字符都在一行显示。 <br />浏览器对于文本中的空格，不管多少只认一个空格。必须把输入法条中的“半角”<br />改成“全角”也就是把“半月”形标志改为“满月”形的再输入空格，浏览器才识别，<br />因为这种“空格”实际上完全不同于西文空格，这是在汉字库中的一种不可显示的具有<br />两个ASC代码的一种字符，所以浏览器可以完全保留这种空格。在HTML代码中也有专用<br />的空格代码，就是在&amp;nbsp表示空格，不过嫌麻烦，一般人不常用。只是在西文输入中<br />没有“全角”空格，才用&amp;nbsp，每&amp;nbsp表示一个半角空格。<br />在页面中有时需要用横线分切内容，“hr”是画线指令，在这个指令中还可以设置<br />线尺寸和颜色。线的横向尺寸我们习惯叫“长度”，这里我们叫“宽”，是按屏幕来说<br />的，我们的屏幕横向叫“宽”，纵向叫高，所以也把线的横向尺寸叫“宽”。指令格式<br />如下：<br />“hr size=XXpx width=XXpx color=XXXXXX&gt;”<br />其中“size=”纵向尺寸、“width=”横向尺寸、“color=”线条颜色。“px”表<br />示“点”，就是以多少个“点”来定义尺寸。或者有人问那这一个“点”是多大呀！这<br />可要看你的显示器了，你现在的显示模式如是“600X800”，横向看你的屏幕就是800个<br />点，每个点大小你自己算吧。如果你还不清楚，下面我给你画个线看：这线是纵向尺寸<br />4点，横向尺寸400点，颜色是红，代码是： “hr size=4 width=400 color=ff0000”。 <br /><br /><br />--------------------------------------------------------------------------------<br /><br />各项参数之间要有空格，注意这可是“半角”空格。以后注意在书写代码时所有字符<br />必须在“半角”状态下输入，如误用了“全角”字符，系统是不承认的。另外对初学者还<br />要提醒一项，有些服务器对字符的大、小写也是敏感的，就是说同一个字符的大写和小写，<br />系统认为是两个不同的字符，这点在写网页时也应注意。<br />在页面中两行文字中还需要设置间距，使用指令是：“style=line-height:XX”<br />其中“XX”可以是每行高度在屏幕上的点数，也可以是与文字的比例。如要使每行高<br />度是文字高度的1.5倍，就设“style=line-height:150%”，这样行与行间就有半个字的<br />空间。也可以点数来设，“style=line-height:20px”，表示每行所占高度的尺寸是20点。<br />设置参数可以放在&lt;body&gt;里面，这是对整个页面有效，如“body style=line-height:20px”，也可以放在分段符里，只对该段设置，如“p style=line-height:20px”。<br />为了对某一部分内容设定格式，要用一个定义区域的指令，“div”定义区域，<br />用“/div”结束。<br />在“div”里面可以放很多设置参数，如上面的行高度也可以放在“div”里面：<br />“div style=line-height:20px”。 <br />“div”里面还可把字符安排为靠左、靠右、居中，指令格式分别是：<br />“div align=left、div align=right、div align=center ”<br /><br /><br />注意：引号内的内容，使用时两端要换成&lt;&gt;括起来，这里为了能正常显示用“”代替。<br /><br />第五讲：图片，音频，和滚动字幕<br />一：图片的使用<br />1. 在页面中插入图片<br />在页面中插入图片用&lt; IMG&gt;标记，通过对&lt;IMG&gt;标记的属性值的调节可以控制图片<br />在页面中的精确显示。其格式如下：<br />&lt;IMG src＝“图片地址” 属性1＝属性值 属性2＝属性值&gt;<br />图片的属性主要有高度（height），宽度（width），对齐方式（align）等，属性值<br />主要是数字，对齐方式的属性值为：center，left。right。 <br /><br />2. 用图片作为超链接<br />图片可以做为超链接的热点内容。此时要与A标记配合使用，其格式为：<br />&lt;a herf=“超链接的文件名”&gt;&lt;img src＝“图片文件名”&gt;&lt;/a&gt;<br /><br /><br />二：音频的使用<br />管它mms.http.rtsp.只要看后缀尾档是asf.wma.wmv.wmv.rm.通通可以适用下面的<br />代码:embed src="歌的地址" width="350，80%" height="60，80%"&gt;<br /><br />三：移动字幕的使用<br />移动字幕使用&lt;MARQUEE&gt;标记，其基本格式：&lt;marquee 属性＝属性值&gt;滚动内容&lt;/marquee&gt;<br />它的主要属性及其属性值如下：<br />对齐方式（align）其属性值是center，left，right<br />移动字符的背景色（bgcolor）属性值为颜色代码。<br />移动字符的循环次数（loop）属性值为数字。<br />移动方式（behavior）属性值为：scroll:文字单向移动，side:移动到边界停止，alternate:到边界后反向移动<br />文字高度和宽度，以象素为单位（width height）属性值为数字。<br />字符左右留白长度（hspace）属性值为数字。<br />字符上下留白长度（vspace）属性值为数字。<br />字符的移动速度（scrollamount）属性值为数字。<br />字符移动每步的延时（scrolldelay）属性值为数字。<br /><br />四：视频的使用<br />1.[视频]语法也可以这样(贴RM，WMV格式) 代码：&lt;embed src="歌的地址" width=400 height=300&gt;<br />2.这个代码是需要点击才可以播放的，适用于试听(rm/MP3/RA/WMA) 代码：<br />&lt;EMBED src=歌曲名 volume="100" width=39 height=18 hidden="FALSE" autostart="fault" type="audio/x-pn-realaudio-plugin" controls="PlayButton"&gt;&lt;/embed&gt;<br />3.这个代码是自动播放的，也是用于试听(类型同上)代码：<br />&lt;embed src="歌曲的地址 带http的" width="39" height="18" autostart="true" hidden="false" loop="infinite" align="center" volume="100" type="audio/x-pn-realaudio-plugin" controls="PlayButton" autostart="true"&gt;<br />贴内背景公式：<br />&lt;*center&gt;&lt;*table cellpadding=0 cellspacing=0 border=0 WIDTH=100% align=center table background="内背景图片地址" width=720&gt;&lt;*tr&gt;&lt;*td&gt;&lt;*center&gt;<br /><br />。。。。。。<br />（要贴的内容－－图片或文字）<br />贴图:（两种方法）<br />贴图的正确格式是:<br />（1） &lt;*center&gt;&lt;*img src="（图片地址）"&gt;<br /><br />（2）[*IMG]（图片地[*/IMG]<br /><br />。。。。。。<br />&lt;*td&gt;&lt;*/table&gt;(结尾）<br /><br />图片向左移动<br />&lt;*marquee directio=left&gt;&lt;8img src="图片地址"&gt;&lt;*/marquee&gt;<br /><br />文字向左移动<br />&lt;*marquee directio=left&gt;&lt;*font size=? color=?&gt;文字部分&lt;*/font&gt;&lt;*/marquee&gt;<br /><br />贴FLASH <br />&lt;*embed src="★"width="660"height="450"&gt;<br /><br />歌<br /><br />&lt;*embed src="★"HIDDEN=TRUE AUTOSTART=TRUE LOOP=TRUE&gt;<br /><br />帖子外背景底图<br />&lt;*body background="地址"&gt;<br /><br />外背景底图图不动<br />&lt;*body background="地址" bgproperties="fixed"&gt;<br /><br />图片居中<br />&lt;*center&gt;&lt;*img src="图片地址"&gt;<br /><br /><br />贴播放器<br />&lt;*embed src="http://mp3.baidu.com/r?url=http://fchen.sosoo.net/music/pop/469.mp3" width=480 height=35 controls=ControlPanel loop=true autostart=true volume=100 type=audio/x-pn-realaudio-plugin Initfn=load-types mime-types=mime.types&gt; <br /><br />交替舞动的蝴蝶<br />&lt;*FONT COLOR=GREEN&gt;&lt;*marquee behavior="alternate"scrollamount=8 direction=right&gt;&lt;*b&gt;&lt;*font color=#7700bb size=6&gt;&lt;*FONT color=red&gt;&lt;*MARQUEE behavior=alternate direction=up height=150 width=50&gt;&lt;*img src=http://www.fyj.cn/dhome/dimg/4013.gif&gt;&lt;*/MARQUEE&gt;&lt;*FONT color=orange&gt;&lt;*MARQUEE behavior=alternate direction=up height=200 width=50&gt;&lt;*img src=http://www.fyj.cn/dhome/dimg/4013.gif&gt;&lt;*/MARQUEE&gt;&lt;*FONT color=Fuchsia&gt;&lt;*MARQUEE behavior=alternate direction=up height=150 width=50&gt;&lt;*img src=http://www.fyj.cn/dhome/dimg/4013.gif&gt;&lt;*/MARQUEE&gt;&lt;*FONT color=olive&gt;&lt;*MARQUEE behavior=alternate direction=up height=200 width=50&gt;&lt;*img src=http://www.fyj.cn/dhome/dimg/4013.gif&gt;&lt;*/MARQUEE&gt;&lt;*FONT COLOR=GREEN&gt;&lt;*MARQUEE behavior=alternate direction=up height=150 width=50&gt;&lt;*img src=http://www.fyj.cn/dhome/dimg/4013.gif&gt;&lt;*/MARQUEE&gt;&lt;*FONT color=red&gt;&lt;*MARQUEE behavior=alternate direction=up height=200 width=50&gt;&lt;*img src=http://www.fyj.cn/dhome/dimg/4013.gif&gt; <br />*************************************************************** <br />带框的背景<br />&lt;*center&gt;&lt;*table border="5" background=http://szg01.myrice.com/bg5.gif width="600" height="440" &gt;<br /><br />&lt;*td&gt;&lt;*/table&gt;<br /><br /><br /><br />文字向上滚注意文字分行并拉开行距：&lt;*marquee direction=up scrollamount=3&gt;<br />&lt;*center&gt;&lt;*font color="lime" size="5" face="隶书"&gt;缘分的朋友你们好&lt;*/font&gt;<br />&lt;*/marquee&gt; <br /><br /><br />缘分的朋友你们好<br /><br /><br /><br />文字向下滚<br />&lt;*marquee direction=down scrollamount=3&gt;<br />&lt;*center&gt;&lt;*font color="lime" size="5" face="隶书"&gt;祝朋友们在缘分玩的开心&lt;*/font&gt;<br />&lt;*/marquee&gt;<br /><br /><br />祝朋友们在缘分玩的开心<br /><br /><br /><br />文字移动速度的设置：<br /><br />请注意下面语句中的红色属性(文字向左移动，选250比较好)<br /><br /><br />大家好！<br /><br />IE默认值为60（单位：毫秒） <br /><br />取值越大，移动越慢（小于60，IE仍默认为60）。<br /><br />取值60 取值100 取值150 取值200 取值250<br /><br />常用字体：<br /><br />宋体 黑体 楷体_GB2312 仿宋_GB2312<br /><br />新宋体 幼圆 隶书 方正舒体<br /><br />华文新魏 华文行楷 华文细黑 华文彩云<br /><br /><br />常用字体颜色：<br />浅绿----aqua 黑----black 兰----blue 紫红----fuchsia，<br />灰----gray 绿----green 亮绿----lime 茶----maroon，<br />深兰----navy 橄榄----olive 紫----pourple 红---red，<br />银----silver 青----teal 白----white 黄----yellow <br />紫红--purple <br /><br /><br />文字示例：(居中)<br /><br /><br />欢迎你朋友<br /><br /><br />字体(FONT)标记(TAGS)<br />标题字体(Header)<br />&lt;*h#&gt; ... &lt;*/h#&gt; #=1, 2, 3, 4, 5, 6<br />&lt;*h1&gt;今天天气真好！&lt;*/h1&gt; 今天天气真好！<br />&lt;*h2&gt;今天天气真好！&lt;*/h2&gt; 今天天气真好！<br />&lt;*h3&gt;今天天气真好！&lt;*/h3&gt; 今天天气真好！<br />&lt;*h4&gt;今天天气真好！&lt;*/h4&gt; 今天天气真好！<br />&lt;*h5&gt;今天天气真好！&lt;*/h5&gt; 今天天气真好！<br />&lt;*h6&gt;今天天气真好！&lt;*/h6&gt; 今天天气真好！<br />• &lt;*hn&gt;---&lt;*/hn&gt; 这些标记显示黑体字。<br />• &lt;*hn&gt;---&lt;*/hn&gt; 这些标记自动插入一个空行，不必用 &lt;8p&gt;<br />标记再加空行。<br />因此在一行中无法使用不同大小的字体。<br />字体大小<br />&lt;*font size=#&gt; ... &lt;*/font&gt; #=1, 2, 3, 4, 5, 6, 7 or +#,<br />-#<br />&lt;*basefont size=#&gt; #=1, 2, 3, 4, 5, 6, 7<br />&lt;*font size=7&gt;今天天气真好！&lt;*/font&gt; 今天天气真好！<br />&lt;*font size=6&gt;今天天气真好！&lt;*/font&gt; 今天天气真好！<br />&lt;*font size=5&gt;今天天气真好！&lt;*/font&gt; 今天天气真好！<br />&lt;*font size=4&gt;今天天气真好！&lt;*/font&gt; 今天天气真好！<br />&lt;*font size=3&gt;今天天气真好！&lt;*/font&gt; 今天天气真好！<br />&lt;*font size=2&gt;今天天气真好！&lt;*/font&gt; 今天天气真好！<br />&lt;*font size=1&gt;今天天气真好！&lt;*/font&gt; 今天天气真好！<br /><br />指定“字体大小”的标记和“指定字体”的标记的组合使用<br />&lt;*i&gt;&lt;*font size=5&gt;<br />&lt;*b&gt;今天&lt;*/b&gt; 天气&lt;*font size=6&gt; 真好！&lt;<br />*/font&gt;<br />&lt;*/font&gt;&lt;*/i&gt;<br />今天 天气 真好！<br />字体颜色<br />指定颜色 &lt;*font color=#&gt; ... &lt;*/font&gt;<br />#=rrggbb 16 进制数码，或者是下列预定义色彩：<br />Black, Olive,<br />Teal, Red, Blue,<br />Maroon, Navy,<br />Gray, Lime, <br />Fuchsia, White,<br />Green, Purple,<br />Silver, Yellow,<br />Aqua <br /><br />**********************<br />贴图:<br />贴图的正确格式是:&lt;*center&gt;&lt;*img src="http://yftk.voline.net/images/LOGOZZ.GIF"&gt;<br /><br /><br /><br /><br />图片来回移动：(注意指定宽度和高度)<br /><br /><br /><br />背景图片语法：&lt;*body background="http://www.binghe.com/s/yinyue/mid/images/star_back.gif"&gt;&lt;*/body&gt;<br /><br /><br />图文居中:<br />在图文前面加 &lt;*center&gt;<br /><br /><br />这是透明效果,大家试下,贴时要将* 号去掉. &lt;*img src="http://forums.zol.com.cn/new/book_new_img/16739.img " width=300 height=250 style=filter:Alpha(opacity=100,style=2);&gt;<img src ="http://www.blogjava.net/qsg1982/aggbug/234031.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qsg1982/" target="_blank">e全</a> 2008-10-13 16:10 <a href="http://www.blogjava.net/qsg1982/archive/2008/10/13/234031.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 的十八般武艺[转贴]</title><link>http://www.blogjava.net/qsg1982/archive/2008/10/08/233201.html</link><dc:creator>e全</dc:creator><author>e全</author><pubDate>Wed, 08 Oct 2008 10:39:00 GMT</pubDate><guid>http://www.blogjava.net/qsg1982/archive/2008/10/08/233201.html</guid><wfw:comment>http://www.blogjava.net/qsg1982/comments/233201.html</wfw:comment><comments>http://www.blogjava.net/qsg1982/archive/2008/10/08/233201.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qsg1982/comments/commentRss/233201.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qsg1982/services/trackbacks/233201.html</trackback:ping><description><![CDATA[ORACLE的简单介绍 <br />ORACLE公司是一家提供综合技术产品、方案、服务的数据库公司 <br />ORACLE数据库设计成可大量存储数据，快速查询数据，保证数据的安全和一致性， <br />跨网络的分布式管理及客户-服务器的配置等。 <br />ORACLE SQL语法符合ANSI 1986标准 <br />SQL 和数据库交流的命令式语言 <br />SQL*PLUS ORACLE的一种工具, 用来运行SQL和PL/SQL语句 <br />PL/SQL ORACLE的过程化编程语言 
<p> </p><p>一、选择行 <br />1. 简单的SELECT 语句 <br />SELECT [DISTINCT] {*,COLUMN [ALIAS], ……} FROM table_name; <br />字段的非唯一的结果集 <br />DISTINCT 字段名1 [ ,字段名2] <br />数字类型字段名之间可以进行算术运算 <br />+ - * / 等 <br />例如: (字段名1*字段名2)/3 <br />合并字段内容的连接字符 || <br />字段名1 || 字段名2 <br />字段可以有别名 <br />SELECT 字段名1 [AS] '字段名1 解释' FROM table;</p><p>2. 处理NULL <br />NULL 未定义，不可操作，什么都不是 <br />NULL != 0 NULL!='空格' <br />和NULL的任何运算都返回NULL <br />ORACLE里未定义的变量值都为NULL <br />NVL函数可把NULL转换成其它类型的符号 <br />NVL(EXPR1, EXPR2)函数 <br />解释: IF EXPR1=NULL RETURN EXPR2 <br />ELSE RETURN EXPR1 <br />编程技巧: NVL函数在多条件模糊查询的时候比较有用 <br />nvl('+input_value+','0')='0' or filed_name like '%+input_value+%' <br />NVL函数可返回多种数据类型: <br />返回日期 NVL(start_date,'2002-02-01') <br />返回字符串 NVL(title,'no title') <br />返回数字 NVL(salary,1000)</p><p>3. 使用SQL*PLUS（1） <br />登录SQL*PLUS的方法 <br />用户名，密码，数据库连接字符串 <br />数据库连接字符串可以用net8 easy configuration建立本地网络服务名配置， <br />也可以手工编辑$ORACLE_HOME/network/admin/tnsnames.ora文件。 <br />在UNIX系统下不要用 <br />$sqlplus username/password@dbname <br />这样别的用户用$ps命令能看出用户的密码 <br />SQL&gt; desc table; 显示表结构 <br />SQL&gt; select * from tab; 查看用户下所有的表 <br />SQL&gt; set pause on; 可以使大量结果集在用户按“Enter”(回车)后翻页 <br />SQL&gt; set pagesize 100; 设定SQL语句返回结果集一页的行数100, 默认值是14 <br />SQL&gt; set linesize 100; 设定SQL语句返回结果集一行的宽度100, 默认值是80</p><p>3. 使用SQL*PLUS（2）SQL*PLUS里的编辑命令 <br />最近一条SQL命令语句存在ORACLE内存（sql buffer）里,但SQL*PLUS命令却不会存进去。 <br />SQL*PLUS里的编辑命令: <br />A[PPEND] text 把text增加到当前行后面 <br />C[HANGE] /old/new/ 把当前行old符号替换成new符号,new为空，删除old符号 <br />CL[EAR] BUFF[ER] 从sql buffer里删除所有的行 <br />DEL n 删除sql buffer里第n行 <br />I[NPUT] text 在sql buffer后面插入text <br />L[IST] n 显示sql buffer里第n行 <br />n 使第n行为当前行 <br />n text 第n行替换成text <br />0 text 在第一行前面插入一行</p><p>3. 使用SQL*PLUS（3） SQL*PLUS里的文件命令: <br />SAV[E] filename [REP[LACE] | APP[END] ] <br />把sql buffer里的SQL命令存到OS下一个文件filename,默认的文件名后缀为.sql. <br />REP[LACE]替换filename里的SQL命令 <br />APP[END] 把sql buffer里的SQL命令添加到filename后 <br />GET filename 从filename里把SQL命令读到sql buffer <br />STA[RT] filename 运行上次保存到文件filename里的SQL命令 <br />@filename 运行上次保存到文件filename里的SQL命令 <br />EDIT 打开编辑窗口，编辑sql buffer里的SQL命令 <br />EDIT filename 打开编辑窗口，编辑文件filename里的SQL命令 <br />SPO[OL] filename [OFF | OUT] 把SQL命令结果输出到OS下一个文件filename OFF结束输出到文件, OUT结束输出到文件并打印文件 <br /><br />4. SQL*PLUS里规定字段的显示格式 <br />规定数字的显示格式 <br />SQL&gt;column 字段名 format 99999999999; <br />SQL&gt;column 字段名 format 999,999,999,999; <br />规定字符串的显示宽度 <br />SQL&gt;column 字段名 format a数字 [word_wrapped]; <br />说明: 一行只显示数字位的长度, 超过长度折行,加word_wrapped后, 单词不会折行 <br />规定long字符的显示宽度 <br />SQL&gt;set long 200; <br />规定字段名的显示内容 <br />SQL&gt; column 字段名 heading '字段名显示内容'; <br />SQL&gt; set heading off; 查询时不显示字段名称 <br />规定字段的对齐方向 <br />SQL&gt; column 字段名 justify [left | right | center]; <br />清除字段的格式 <br />SQL&gt; column 字段名 clear; </p><p>5. SQL*PLUS里规定字段的显示格式例子 <br />SQL&gt; column last_name heading 'Employee|Name' format a15; <br />SQL&gt; column salary justify right format $99,999.99; <br />SQL&gt; column start_date format a10 null 'Not Hired'; <br />说明：如果start_date为null, 显示字符串'Not Hired'</p><p>6. 判断题(T/F) <br />(1). SQL command are always held in sql buffer. [T] <br />(2). SQL*PLUS command assit with query data. [T] <br />SQL*PLUS命令只控制SELECT结果集的显示格式及控制文件.只有SQL命令能访问数据库.</p><p>二、限制选择行 <br />1. 按指定的规则排序 <br />SELECT expr FROM table [ORDER BY {column, expr} [ASC | DESC] ]; <br />默认的排序是ASC升序(由小到大) <br />还可以ORDER BY 字段名的位置[1]| [2] ASC| DESC; <br />当字段名很复杂或者是算术表达式时用字段名显示的位置排序很方便.</p><p>2. 用WHERE限制选择行(1) <br />比较操作符 = &gt; &lt; &gt;= &lt;= != &lt;&gt; ^= 与NULL比较不能用上面的比较操作符 ANY SOME ALL <br />SQL操作符 BETWEEN … AND… IN LIKE IS NULL <br />NOT BETWEEN … AND… NOT IN NOT LIKE IS NOT NULL <br />逻辑操作符 AND OR NOT</p><p>3. 用WHERE限制选择行(2) <br />比较顺序(可以用括号改变它们的顺序) <br />(1). = &lt; &gt; &gt;= &lt;= in like is null between <br />(2). and <br />(3). Or <br />注意: char和varchar2的比较规则有不同: <br />char比较时会忽略字符串后面的空格. varchar2会计算字符串后面的空格</p><p>4. LIKE操作 <br />% 零到任意多个字符 _ 一个字符 <br />例如: 字段名 like 'M%' 字段名 like '%m%' 字段名 like 'job_' <br />如果要找含下划线的字符, 要加反斜线 例如:字段名 like '%X/_Y%' escape '/'</p><p>5. 日期字段的比较 <br />举例: <br />日期字段 between to_date('2001-12-12','YYYY-MM-DD') and to_date('2002-02-01','YYYY-MM-DD') <br />日期字段&gt; to_date('2001-12-12','YYYY-MM-DD') and日期字段&lt;= to_date('2002-02-01','YYYY-MM-DD'); </p><p>6. 不能用到索引的比较操作符 <br />IS NULL <br />IS NOT NULL <br />LIKE '%m%'</p><p>三、单行函数 <br />1. 数字函数 <br />ABS 取绝对值 POWER 乘方 LN 10为底数取冪 <br />SQRT 平方根 EXP e的n次乘方 LOG(m,n) m为底数n取冪 <br />数学运算函数:ACOS ATAN ATAN2 COS COSH SIGN SIN SINH TAN TANH <br />CEIL 大于或等于取整数 <br />FLOOR 小于或等于取整数 <br />MOD 取余数 <br />ROUND(n,m) 按m的位数取四舍五入值如果round(日期): 中午12以后将是明天的日期. round(sysdate,'Y')是年的第一天 <br />TRUNC(n,m) 按m的位数取前面的数值如果trunc(日期), 确省的是去掉时间</p><p>2. 字符函数 <br />CHR 按数据库的字符集由数字返回字符 <br />CONCAT(c1,c2) 把两个字符c1,c2组合成一个字符, 和 || 相同 <br />REPLACE(c,s,r) 把字符c里出现s的字符替换成r, 返回新字符 <br />SUBSTR(c,m,n) m大于0,字符c从前面m处开始取n位字符,m等于0和1一样, <br />m小与0,字符c从后面m处开始取n位字符 <br />TRANSLATE(c,f1,t1) 字符c按f1到t1的规则转换成新的字符串 <br />INITCAP 字符首字母大写,其它字符小写 <br />LOWER 字符全部小写 <br />UPPER 字符全部大写 <br />LTRIM(c1,c2) 去掉字符c1左边出现的字符c2 <br />RTRIM(c1,c2) <br />TRIM(c1,c2) 去掉字符c1左右两边的字符c2 <br />LPAD(c1,n,c2) 字符c1按制定的位数n显示不足的位数用c2字符串替换左边的空位 <br />RPAD(c1,n,c2)</p><p>3. 日期函数 <br />ADD_MONTHS(d,n) 日期值加n月 <br />LAST_DAY(d) 返回当月的最后一天的日期 <br />MONTHS_BETWEEN(d1,d2) 两个日期值间的月份,d1NEXT_DAY(d) 返回日期值下一天的日期 <br />SYSDATE 当前的系统时间 <br />DUAL是SYS用户下一个空表，它只有一个字段dummy <br />4. 转换函数(1) <br />TO_CHAR(date,'日期显示格式') <br />TO_CHAR(number) 用于显示或报表的格式对齐 <br />TO_DATE(char,'日期显示格式') <br />TO_LOB 把long字段转换成lob字段 <br />TO_NUMBER(char) 用于计算或者比较大小 </p><p>4. 转换函数(2) <br />to_date里日期显示格式 <br />YYYY 年 YEAR YYY YY Y <br />Q 季度 <br />MM 月 MONTH MON <br />W 星期 (week of month) WW, IW (week of year) <br />(说明：周计是按ISO标准,从1月1日的星期数到后面七天为一周,不一定是从周一到周日) <br />DD 日 DAY DY <br />HH24 小时 HH12 HH <br />MI 分钟 <br />SS 秒 <br />如果想固定日期的显示格式可以在数据库的参数文件initorasid.ora里新写一行参数 NLS_DATE_FORMAT=yyyy-mm-dd hh24:mi:ss可以在UNIX环境变量或者NT的注册表里的设置 NLS_DATE_FORMAT=yyyy-mm-dd hh24:mi:ss</p><p>4. 转换函数(3) <br />如果想固定日期的显示格式可以用alter session命令改变 <br />SQL&gt; alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; <br />它的作用顺序如下: <br />initialization parameter <br />Environment variable <br />ALTER SESSION command</p><p>4. 转换函数 (4) <br />to_char(number)里数字显示格式 <br />9 数字位 <br />0 数字前面补0 to_char(-1200,'00000.00') <br />. 小数点的位置 <br />, 标记位置的逗号 用在数字显示格式的左边 <br />L 根据数据库字符集加货币符号 to_char(-1200,'L9999.99') <br />B 把数字0显示为空格,用在数字显示格式的右边 <br /><br />MI 右边的负数标记 to_char(-1200,'9999.99MI') <br />PR 括起来的负数 to_char(-1200,'9999.99PR') <br />EEEE 用指数方式表示 to_char(-1200,'9999.99EEEE')</p><p>5. 输入字符,返回数字的函数 <br />instr(c1,c2) 字符c2出现在c1的位置, 不出现, 返回0, 常用于模糊查询 <br />length(c) 按数据库的字符集,算出字符c的长度,跟数据库的字符集有关, 一个汉字长度为1</p><p>6. 有逻辑比较的函数NVL(EXPR1, EXPR2)函数 <br />解释: IF EXPR1=NULL RETURN EXPR2 <br />ELSE RETURN EXPR1 <br />DECODE(AA﹐V1﹐R1﹐V2﹐R2....)函数 <br />解释: IF AA=V1 THEN RETURN R1 <br />IF AA=V2 THEN RETURN R2 <br />..… <br />ELSE <br />RETURN NULL <br />举例: decode(id,1,'dept sale',2,'dept tech')</p><p>四、从多个表里选取数据记录 <br />1. 数据表间的连接 <br />简单的连接语法: <br />SELECT 字段名1, 字段名2, …… FROM 表名1, [表名2, ……] <br />WHERE 表名1.字段名 = 表名2. 字段名 [ AND ……] ; <br />SELECT 字段名1, 字段名2, …… FROM 表名1, [表名2, ……] <br />WHERE 表名1.字段名 = 表名2. 字段名(+) [ AND ……] ; <br />有(+)号的字段位置自动补空值 </p><p>连接的分类: <br />等于的连接 = <br />不等于的连接 != BETWEEN … AND … IN 注意IN和OR不能一起用 <br />外连接 有一个字段名(+) , 没有满足的条件补空值 <br />自连接 同一个表自己跟自己连接 例如找重复记录</p><p>2. 数据表间的连接例子 <br />删除table_name表里字段名email重复的记录: <br />SQL&gt;delete from table_name t1 <br />where t1.rowid &gt; <br />(select min(rowid) from table_name t2 <br />where t1.email = t2.email <br />group by email <br />having count(email) &gt; 1);</p><p>找到手机用户的服务区域: <br />SQL&gt; select a.handphoneno,nvl(c.name,'null'),a.totalscore <br />from topscore a,chargeoperator cc,chargeoperatorinfo c <br />where substr(a.handphoneno,1,7)=cc.hpnohead(+) <br />and cc.chargetype=c.chargetype(+) <br />order by a.totalscore desc;</p><p>3. 数据表间的连接技巧 <br />连接N个表, 需要N-1个连接操作 <br />被连接的表最好建一个单字符的别名, 字段名前加上这个单字符的别名 <br />BETWEEN .. AND.. 比用 &gt;= AND &lt;= 要好 <br />连接操作的字段名上最好要有索引 <br />连接操作的字段最好用整数数字类型 <br />有外连接时, 不能用OR或IN的比较操作</p><p>4. 如何分析和执行SQL语句 <br />写多表连接SQL语句时要知道它的分析执行计划的情况. <br />Sys用户下运行@/ORACLE_HOME/sqlplus/admin/plustrce.sql <br />产生plustrace角色 <br />Sys用户下把此角色赋予一般用户 SQL&gt; grant plustrace to &amp;username; <br />一般用户下运行@/ORACLE_HOME/rdbms/admin/utlxplan.sql <br />产生plan_table <br />SQL&gt; set time on; 说明：打开时间显示 <br />SQL&gt; set autotrace on; 说明：打开自动分析统计，并显示SQL语句的运行结果 <br />SQL&gt; set autotrace traceonly; 说明：打开自动分析统计，不显示SQL语句的运行结果 <br />接下来你就运行测试SQL语句，看到其分析统计结果了。 <br />一般来讲，我们的SQL语句应该避免大表的全表扫描。 <br />SQL&gt; set autotrace off; 说明：关闭自动分析统计</p><p>五、集合函数 经常和group by一起使用 <br />1. 集合函数列表 <br />AVG (DISTINCT | ALL | N) 取平均值 <br />COUNT (DISTINCT | ALL | N | expr | * ) 统计数量 <br />MAX (DISTINCT | ALL | N) 取最大值 <br />MIN (DISTINCT | ALL | N) 取最小值 <br />SUM (DISTINCT | ALL | N) 取合计值 <br />STDDEV (DISTINCT | ALL | N) 取偏差值,如果组里选择的内容都相同,结果为0 <br />VARIANCE (DISTINCT | ALL | N) 取平方偏差值</p><p>2. 使用集合函数的语法 <br />SELECT column, group_function FROM table <br />WHERE condition GROUP BY group_by_expression <br />HAVING group_condition ORDER BY column; <br /><br />3. 使用count时的注意事项 <br />SELECT COUNT(*) FROM table; <br />SELECT COUNT(常量) FROM table;</p><p>都是统计表中记录数量,如果没有PK后者要好一些 <br />SELECT COUNT(all 字段名) FROM table; <br />SELECT COUNT(字段名) FROM table;</p><p>不会统计为NULL的字段的数量 <br />SUM,AVG时都会忽略为NULL的字段</p><p>4. 用group by时的限制条件 <br />SELECT字段名不能随意, 要包含在GROUP BY的字段里 <br />GROUP BY后ORDER BY时不能用位置符号和别名 <br />限制GROUP BY的显示结果, 用HAVING条件 <br /><br />5. 例子 <br />SQL&gt; select title,sum(salary) payroll from s_emp <br />where title like 'VP%' group by title <br />having sum(salary)&gt;5000 order by sum(salary) desc; <br /><br />找出某表里字段重复的记录数, 并显示 <br />SQL&gt; select (duplicate field names) from table_name <br />group by (list out fields) having count(*)&gt;1;</p><p>6. 判断题(T/F) <br />(1) Group functions include nulls in calculations [F] <br />(2) Using the having clause to exclude rows from a group calculation [F] <br />解释: <br />Group function 都是忽略NULL值的 如果您要计算NULL值, 用NVL函数 <br />Where语句在Group By前把结果集排除在外Having语句在Group By后把结果集排除在外</p><p>7. 在SQL*PLUS里可使用的其它命令:</p><p>Ctrl^C 终止正在运行的SQL语句 <br />remark /*...*/ -- 注释符号 <br />HOST 可执行的操作系统下的命令 有些unix可以用 !</p><p>BREAK ON column_name SKIP n [ ON column_name SKIP n ] <br />按字段的名称column_name分隔显示,更清晰,SKIP n 是在分隔处空行的数量n <br />BREAK ON ROW SKIP n 每一行间隔都放n个空行</p><p>COMPUTE 集合运算符 OF 字段1 ON 字段2 按字段2对字段1进行集合运算 <br />COMPUTE后面可以跟的集合运算符: <br />SUM MINIMUM MAXIMUM AVG STD VARIANCE COUNT NUMBER</p><p>8.在SQL*PLUS里可使用的其它命令举例:(scott用户) <br /><br />BREAK ON REPORT <br />COMPUTE SUM LABEL TOTAL OF SAL ON REPORT 在全部结果集后面算合计 <br />select ename,sal from emp where job='SALESMAN'; <br /><br />COMPUTE AVG LABEL avg OF SAL ON REPORT 在全部结果集后面算平均值 <br />/ 再次执行上次的sql语句 <br /><br />break on DEPTNO skip 2 on JOB skip 1 在BREAK字段结果集后面算合计 <br />COMPUTE SUM OF SAL ON DEPTNO <br />SELECT DEPTNO,JOB,ENAME,SAL FROM EMP ORDER BY DEPTNO,JOB; <br /><br />SQL&gt; CLEAR BREAKS; 清除设置的BREAK条件 <br />SQL&gt; CLEAR COMPUTES; 清除设置的COMPUTE条件</p><p>六、子查询 <br />1. 查询语句可以嵌套 <br />例如: SELECT …… FROM (SELECT …… FROM表名1, [表名2, ……] WHERE 条件) WHERE 条件2; </p><p>2. 何处可用子查询? <br />当查询条件是不确定的条件时 <br />DML(insert, update,delete)语句里也可用子查询 <br />HAVING里也可用子查询</p><p>3. 两个查询语句的结果可以做集合操作 <br />例如: <br />并集UNION(去掉重复记录) <br />并集UNION ALL(不去掉重复记录) <br />差集MINUS, <br />交集INTERSECT </p><p>4. 子查询的注意事项 <br />先执行括号里面的SQL语句，一层层到外面 <br />内部查询只执行一次 <br />如果里层的结果集返回多个，不能用= &gt; &lt; &gt;= &lt;=等比较符要用IN.</p><p>5. 子查询的例子(1) <br />SQL&gt; select title,avg(salary) from s_emp <br />group by title Having avg(salary) = <br />(select min(avg(salary)) from s_emp <br />group by title); <br />找到最低平均工资的职位名称和工资</p><p>5. 子查询的例子(2) <br />子查询可以用父查询里的表名 <br />这条SQL语句是对的: <br />SQL&gt;select cty_name from city where st_code in <br />(select st_code from state where st_name='TENNESSEE' and <br />city.cnt_code=state.cnt_code); <br />说明：父查询调用子查询只执行一次．</p><p>6.取出结果集的80 到100的SQL语句 <br />ORACLE处理每个结果集只有一个ROWNUM字段标明它的逻辑位置, <br />并且只能 用ROWNUM&lt;100, 不能用ROWNUM&gt;80。 <br />以下是经过分析后较好的两种ORACLE取得结果集80到100间的SQL语句( ID是唯一关键字的字段名 )： <br />语句写法： <br />SQL&gt;select * from ( <br />( select rownum as numrow, c.* from ( <br />select [field_name,...] from table_name where 条件1 order by 条件2) c) <br />where numrow &gt; 80 and numrow &lt;= 100 ) <br />order by 条件3; </p><p>七、在执行SQL语句时绑定变量 <br />1. 接收和定义变量的SQL*PLUS命令 <br />ACCEPT <br />DEFINE UNDEFINE <br />&amp; <br /><br />2. 绑定变量SQL语句的例子(1) <br />SQL&gt; select id, last_name, salary from s_emp where dept_id = &amp;department_number; <br />Enter value for department_number: 10 <br />old 1: select id, last_name, salary from s_emp where dept_id=&amp;department_number; <br />new 1: select id, last_name, salary from s_emp where dept_id= 10 <br />SQL&gt; SET VERIFY OFF | ON;可以关闭和打开提示确认信息old 1和new 1的显示.</p><p>3. 绑定变量SQL语句的例子(2) <br />SQL&gt; select id, last_name, salary <br />from s_emp <br />where title = '&amp;job_title'; <br />Enter value for job_title: Stock Clerk</p><p>SQL&gt; select id, last_name, salary <br />from s_emp <br />where hiredate &gt;to_date( '&amp;start_hire_date','YYYY-MM-DD'); <br />Enter value for start_hire_date : 2001-01-01</p><p>把绑定字符串和日期类型变量时，变量外面要加单引号 <br />也可绑定变量来查询不同的字段名 <br />输入变量值的时候不要加;等其它符号</p><p>4. ACCEPT的语法和例子 <br />SQL&gt; ACCEPT variable [datatype] [FORMAT] [PROMPT text] [HIDE] <br />说明： variable 指变量名 datatype 指变量类型，如number,char等 format 指变量显示格式 prompt text 可自定义弹出提示符的内容text hide 隐藏用户的输入符号 <br />使用ACCEPT的例子： <br />ACCEPT p_dname PROMPT 'Provide the department name: ' <br />ACCEPT p_salary NUMBER PROMPT 'Salary amount: ' <br />ACCEPT pswd CHAR PROMPT 'Password: ' HIDE <br />ACCEPT low_date date format 'YYYY-MM-DD' PROMPT“Enter the low date range('YYYY-MM-DD'):”</p><p>4. DEFINE的语法和例子 <br />SQL&gt; DEFINE variable = value <br />说明： variable 指变量名 value 指变量值 <br />定义好了变良值后, 执行绑定变量的SQL语句时不再提示输入变量 <br />使用DEFINE的例子： <br />SQL&gt; DEFINE dname = sales <br />SQL&gt; DEFINE dname <br />DEFINE dname = “sales” (CHAR) <br />SQL&gt; select name from dept where lower(name)='&amp;dname'; <br />NAME <br />------------------------- <br />sales <br />sales <br />SQL&gt; UNDEFINE dname <br />SQL&gt; DEFINE dname <br />Symbol dname is UNDEFINED</p><p>5. SQL*PLUS里传递参数到保存好的*.sql文件里 <br />SQL&gt; @ /路径名/文件名 参数名1[,参数名2, ….] <br />SQL&gt; start /路径名/文件名 参数名1[,参数名2, ….]</p><p>注意事项: <br />一次最多只能获取9个&amp;变量, 变量名称只能是从&amp;1,&amp;2到&amp;9 <br />变量名后不要加特殊的结束符号 <br />如果在SQL*PLUS里要把&amp;符号保存在ORACLE数据库里,要修改sql*plus环境变量define <br />SQL&gt; set define off;</p><p>八、概述数据模型和数据库设计 <br />1. 系统开发的阶段: <br />Strategy and Analysis <br />Design <br />Build and Document <br />Transition <br />Production</p><p>2. 数据模型 <br />Model of system in client's mind <br />Entity model of client's model <br />Table model of entity model <br />Tables on disk</p><p>3. 实体关系模型 (ERM)概念 <br />ERM ( entity relationship modeling) <br />实体 存有特定信息的目标和事件 例如: 客户,订单等 <br />属性 描述实体的属性 例如: 姓名,电话号码等 <br />关系 两个实体间的关系 例如:订单和产品等 <br />实体关系模型图表里的约定 <br />Dashed line (虚线) 可选参数 “may be” <br />Solid line (实线) 必选参数 “must be” <br />Crow's foot (多线) 程度参数 “one or more” <br />Single line (单线) 程度参数 “one and only one”</p><p>4. 实体关系模型例子 <br />每个订单都必须有一个或几个客户 <br />每个客户可能是一个或几个订单的申请者</p><p>5. 实体关系的类型 <br />1:1 一对一 例如: 的士和司机 <br />M:1 多对一 例如: 乘客和飞机 <br />1:M 一对多 例如: 员工和技能</p><p>6. 校正实体关系的原则 <br />属性是单一值的, 不会有重复 <br />属性必须依存于实体, 要有唯一标记 <br />没有非唯一属性依赖于另一个非唯一的属性 <br />7. 定义结构时的注意事项 <br />减少数据冗余 <br />减少完整性约束产生的问题 <br />确认省略的实体,关系和属性</p><p>8. 完整性约束的要求 <br />Primary key 主关键字 唯一非NULL <br />Foreign key 外键 依赖于另一个Primary key,可能为NULL <br />Column 字段名 符合定义的类型和长度 <br />Constraint 约束条件 用户自定义的约束条件,要符合工作流要求 <br />例如: 一个销售人员的提成不能超过它的基本工资 <br />Candidate key 候选主关键字 多个字段名可组成候选主关键字, 其组合是唯一和非NULL的</p><p>9. 把实体关系图映射到关系数据库对象的方法 <br />把简单实体映射到数据库里的表 <br />把属性映射到数据库里的表的字段, 标明类型和注释 <br />把唯一标记映射到数据库里的唯一关键字 <br />把实体间的关系映射到数据库里的外键</p><p>其它的考虑: <br />设计索引,使查询更快 <br />建立视图,使信息有不同的呈现面, 减少复杂的SQL语句 <br />计划存储空间的分配 <br />重新定义完整性约束条件</p><p>10. 实体关系图里符号的含义 <br />PK 唯一关键字的字段 <br />FK 外键的字段 <br />FK1,FK2 同一个表的两个不同的外键 <br />FK1,FK1 两个字段共同组成一个外键 <br />NN 非null字段 <br />U 唯一字段 <br />U1,U1 两个字段共同组成一个唯一字段</p><p>九、创建表 <br />1. ORACLE常用的字段类型 <br />ORACLE常用的字段类型有 <br />VARCHAR2 (size) 可变长度的字符串, 必须规定长度 <br />CHAR(size) 固定长度的字符串, 不规定长度默认值为１ <br />NUMBER(p,s) 数字型p是位数总长度, s是小数的长度, 可存负数 <br />最长38位. 不够位时会四舍五入. <br />DATE 日期和时间类型 <br />LOB 超长字符, 最大可达4G <br />CLOB 超长文本字符串 <br />BLOB 超长二进制字符串 <br />BFILE 超长二进制字符串, 保存在数据库外的文件里是只读的.</p><p>数字字段类型位数及其四舍五入的结果 <br />原始数值1234567.89 <br />数字字段类型位数 存储的值 <br />Number 1234567.89 <br />Number(8) 12345678 <br />Number(6) 错 <br />Number(9,1) 1234567.9 <br />Number(9,3) 错 <br />Number(7,2) 错 <br />Number(5,-2) 1234600 <br />Number(5,-4) 1230000 <br />Number(*,1) 1234567.9</p><p>2. 创建表时给字段加默认值 和约束条件 <br />创建表时可以给字段加上默认值 <br />例如 : 日期字段 DEFAULT SYSDATE <br />这样每次插入和修改时, 不用程序操作这个字段都能得到动作的时间 </p><p>创建表时可以给字段加上约束条件 <br />例如: 非空 NOT NULL <br />不允许重复 UNIQUE <br />关键字 PRIMARY KEY <br />按条件检查 CHECK (条件) <br />外键 REFERENCES 表名(字段名) <br /><br />3. 创建表的例子 <br />CREATE TABLE DEPT( <br />EPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY, <br />DNAME VARCHAR2(14), <br />LOC VARCHAR2(13)) ;</p><p>CREATE TABLE region( <br />ID number(2) NOT NULL PRIMARY KEY, <br />postcode number(6) default '0' NOT NULL, <br />areaname varchar2(30) default ' ' NOT NULL);</p><p>4. 创建表时的命名规则和注意事项 <br />表名和字段名的命名规则：必须以字母开头，可以含符号A-Z,a-z,0-9,_,$,# <br />大小写不区分 <br />不用SQL里的保留字, 一定要用时可用双引号把字符串括起来． <br />用和实体或属性相关的英文符号长度有一定的限制</p><p>注意事项: <br />建表时可以用中文的字段名, 但最好还是用英文的字段名 <br />创建表时要把较小的不为空的字段放在前面, 可能为空的字段放在后面 <br />建表时如果有唯一关键字或者唯一的约束条件，建表时自动建了索引 <br />一个表的最多字段个数也是有限制的，254个.</p><p>5. 约束名的命名规则和语法 <br />约束名的命名规则约束名如果在建表的时候没有指明，系统命名规则是SYS_Cn(n是数字) <br />约束名字符串的命名规则同于表和字段名的命名规则</p><p>6. 使用约束时的注意事项 <br />约束里不能用系统函数,如SYSDATE和别的表的字段比较 <br />可以用本表内字段的比较</p><p>想在事务处理后, 做约束的检查 <br />SQL&gt; alter session set constraints deferred.</p><p>7. 由实体关系图到创建表的例子 s_dept <br />前提条件:已有region表且含唯一关键字的字段id <br />SQL&gt; CREATE TABLE s_dept <br />(id NUMBER(7) <br />CONSTRAINT s_dept_id_pk PRIMARY KEY, <br />name VARCHAR2(25) <br />CONSTRAINT s_dept_name_nn NOT NULL, <br />region_id NUMBER(7) <br />CONSTRAINT s_dept_region_id_fk REFERENCES region (id), <br />CONSTRAINT s_dept_name_region_id_uk UNIQUE(name, region_id)); <br /><br />8. 较复杂的创建表例子 <br />SQL&gt; CREATE TABLE s_emp <br />(id NUMBER(7) <br />CONSTRAINT s_emp_id_pk PRIMARY KEY, <br />last_name VARCHAR2(25) <br />CONSTRAINT s_emp_last_name_nn NOT NULL, <br />first_name VARCHAR2(25), <br />userid VARCHAR2(8) <br />CONSTRAINT s_emp_userid_nn NOT NULL <br />CONSTRAINT s_emp_userid_uk UNIQUE, <br />start_date DATE DEFAULT SYSDATE, <br />comments VARCHAR2(25), <br />manager_id NUMBER(7), <br />title VARCHAR2(25), <br />dept_id NUMBER(7) <br />CONSTRAINT s_emp_dept_id_fk REFERENCES s_dept(id), <br />salary NUMBER(11,2), <br />commission_pct NUMBER(4,2) <br />CONSTRAINT s_emp_commission_pct_ck CHECK <br />(commission_pct IN(10,12.5,15,17.5,20)));</p><p>8. 通过子查询建表 <br />通过子查询建表的例子 <br />SQL&gt;CREATE TABLE emp_41 AS SELECT id, last_name, userid, start_date <br />FROM s_emp WHERE dept_id = 41; <br /><br />SQL&gt; CREATE TABLE A as select * from B where 1=2; <br />只要表的结构.</p><p>10. 用子查询建表的注意事项 <br />可以关连多个表及用集合函数生成新表,注意选择出来的字段必须有合法的字段名称,且不能重复。 <br />用子查询方式建立的表，只有非空NOT NULL的约束条件能继承过来, 其它的约束条件和默认值都没有继承过来. <br />根据需要，可以用alter table add constraint ……再建立其它的约束条件，如primary key等.</p><p>10. Foreign Key的可选参数ON DELETE CASCADE <br />在创建Foreign Key时可以加可选参数: <br />ON DELETE CASCADE它的含义是如果删除外键主表里的内容，子表里相关的内容将一起被删除. <br />如果没有ON DELETE CASCADE参数，子表里有内容，父表里的主关键字记录不能被删除掉.</p><p>12. 如果数据库表里有不满足的记录存在，建立约束条件将不会成功.</p><p>13. 给表创建和删除同义词的例子 <br />SQL&gt; CREATE SYNONYM d_sum <br />2 FOR dept_sum_vu;</p><p>SQL&gt; CREATE PUBLIC SYNONYM s_dept <br />2 FOR alice.s_dept;</p><p>SQL&gt; DROP SYNONYM s_dept;</p><p>十、ORACLE里的数据字典 <br />1. 什么是数据字典ORACLE的数据字典是数据库的重要组成部分之一，它随着数据库 <br />的产生而产生, 随着数据库的变化而变化, 体现为sys用户下所有的一些表和视图.</p><p>2. 数据字典里存了以下内容：用户信息 <br />用户的权限信息 <br />所有数据对象信息表的约束条件统计分析数据库的视图等 <br />不能手工修改数据字典里的信息.</p><p>3. 常用的数据字典 <br />Dictionary 存放所有数据表，视图，同义词名称和解释 <br />Dict_columns 数据字典里字段名称的和解释 <br />Dba_users 用户 Dba_tablespaces 表空间 <br />Dba_data_files 数据库的文件 Dba_free_space 空闲表空间 <br />Dba_rollback_segs 回滚段 <br />User_objects 数据对象 User_constraints 约束条件 <br />User_sequences 序列号 User_views 视图 <br />User_indexes 索引 User_synonyms 同义词 <br />Session_roles 用户的角色 User_role_privs 用户的角色权限 <br />User_sys_privs 用户的系统权限 User_tab_privs 用户的表级权限 <br />V$session 实时用户情况 V$sysstat 实时系统统计 <br />V$sesstat 实时用户统计 V$sgastat 实时SGA使用 <br />V$locked_object 实时锁 V$controlfile 控制文件 <br />V$logfile 日志文件 V$parameter 参数文件</p><p>4. 数据字典的分类 <br />数据字典四大类别 <br />User_ 用户下所有数据库对象 <br />All_ 用户权限范围内所有的数据库对象 <br />Dba_ 所有的数据库对象 <br />V$ 统计分析数据库的视图 赋于oem_monitor权限非DBA用户也可查询V$*视图</p><p>5. 查询数据字典 <br />SQL&gt; select * from dictionary where instr(comments,'index')&gt;0; <br />SQL&gt; select constraint_name, constraint_type, <br />2 search_condition, r_constraint_name <br />3 from user_constraints <br />4 where table_name = ‘&amp;table_name';</p><p>十一. 控制数据 <br />1 、INSERT(往数据表里插入记录的语句) <br />SQL&gt; insert into 表名(字段名1, 字段名2, ……) values ( 值1, 值2, ……); <br />SQL&gt; insert into 表名(字段名1, 字段名2, ……) select (字段名1, 字段名2, ……) <br />from 另外的表名 where 条件; <br />可以用&amp;标记变量的方法多次输入记录</p><p>快速插入数据的方法, 一般用于大于128M的数据转移 <br />SQL&gt; insert /*+ append */ into 表名 <br />select * from 另外的用户名 .另外的表名 WHERE 条件; <br />SQL&gt; commit; </p><p>注意事项： <br />用INSERT /*+ APPEND */ 的方法会对target_tablename产生级别为6的独占锁， <br />如果运行此命令时还有对target_tablename的DML操作会排队在它后面, <br />对OLTP系统在用的表操作是不合适的。</p><p>2. 插入字符串类型的字段的注意事项: <br />字符串类型的字段值必须用单引号括起来, 例如: ’GOOD DAY’ <br />如果字段值里包含单引号’ 需要进行字符串转换, 我们把它替换成两个 单引号’ ’ <br />字符串类型的字段值超过定义的长度会出错, 最好在插入前进行长度校验 <br />‘’ 标记是NULL, user 标明当前用户 <br />日期字段的字段值可以用当前数据库的系统时间SYSDATE, 精确到秒 <br />用字符串转换成日期型函数TO_DATE(‘2001-08-01’,’YYYY-MM-DD’) <br />TO_DATE( )还有很多种日期格式, 可以参看ORACLE DOC. <br />年-月-日 小时:分钟:秒 的格式YYYY-MM-DD HH24:MI:SS <br />INSERT时最大可操作的字符串长度小于等于4000个单字节, <br />如果要插入更长的字符串, 请考虑字段用CLOB类型, 方法借用ORACLE里自带的DBMS_LOB程序包. </p><p>3、UPDATE (修改数据表里记录的语句) <br />SQL&gt; UPDATE 表名 SET 字段名1=值1, 字段名2=值2, …… WHERE 条件; <br />如果修改的值N没有赋值或定义时, 将把原来的记录内容清为NULL, <br />最好在修改前进行非空校验; <br />值N超过定义的长度会出错, 最好在插入前进行长度校验. <br />新功能，可以修改子查询后的结果集 <br />例子：SQL&gt; update (select * from s_dept) set id=50 where id=60;</p><p>4、DELETE (删除数据表里记录的语句) <br />SQL&gt; DELETE FROM 表名 WHERE 条件; <br />注意：删除记录并不能释放ORACLE里被占用的数据块表空间. 它只把那些 被删除的数据块标成unused. <br />如果确实要删除一个大表里的全部记录, 可以用 TRUNCATE 命令, 它可以释放占用的数据块表空间 <br />SQL&gt; TRUNCATE TABLE 表名; <br />此操作不可回退. <br /><br />5、 SQL语句的分类 <br />数据定义语言(DDL)：create、alter、drop（创建、修改结构、删除）（其他：rename） <br />数据操纵语言(DML)：insert、delete、select、update（增、删、查、改）（其他：truncate） <br />数据控制语言(DCL)：grant、revoke（授权、回收）、set role <br />事务控制：commit、rollback、savepoint（其他：lock table、set constraint(s)、set transaction） <br />审计控制：audit、noaudit <br />系统控制：alter system 会话控制：alter session <br />其他语句：comment（添加注释）、explain plan、analyze、validate、call </p><p>6、ORACLE里事务控制 <br />Commit 提交事务 <br />Rollback 回退事务 <br />Savepoint 设置断点, 在事务中标记位置, 事务结束, 断点释放 <br />事务结束的情况遇到commit或者rollback遇到DDL和DCL语句发现错误，如死锁用户退出SQL*PLUS系统重启或崩溃</p><p>6、事物控制和SAVEPOINT命令</p><p>7. DML操作的注意事项 <br />以上SQL语句对表都加上了行级锁, 确认完成后, 必须加上事物处理结束的命令COMMIT 才能正式生效, <br />否则改变不一定写入数据库里.行级锁也未能得到释放. <br />如果想撤回这些操作, 可以用命令 ROLLBACK 复原. <br />在运行INSERT, DELETE 和 UPDATE 语句前最好估算一下可能操作的记录范围, <br />应该把它限定在较小 (一万条记录) 范围内,. 否则ORACLE处理这个事物用到很大的回退段. <br />程序响应慢甚至失去响应. 如果记录数上十万以上这些操作, <br />可以把这些SQL语句分段分次完成, 其间加上COMMIT 确认事物处理. <br />太过频繁的commit不好</p><p>十二、改变表和约束条件 <br />1. 改变表的几种情况(1) 运行时会加表级锁 <br />改变表的名称 <br />SQL&gt; RENAME 表名1 TO 表名2; SQL&gt; ALTER TABLE 表名1 RENAME TO 表名2; <br />在表的后面增加一个字段 <br />SQL&gt; ALTER TABLE 表名 ADD 字段名 字段名描述 [ DEFAULT expr ][ NOT NULL ][ ,字段名2 ……]; <br />修改表里字段的定义描述 <br />SQL&gt; ALTER TABLE 表名 MODIFY 字段名1 字段名1描述 [ DEFAULT expr ][ NOT NULL ][ ,字段名2 ……]; 记录为空时，可以减少字段长度，改变字段类型修改DEFAULT值只作用于修改后的INSERT和UPDATE的记录修改NOT NULL约束只对现存含非空记录的字段起作用</p><p>1. 改变表的几种情况(2) 运行时会加表级锁 <br />删除表里的某个字段 <br />SQL&gt; ALTER TABLE 表名 DROP 字段名; <br />给表里的字段加上/禁止/启用约束条件 <br />SQL&gt; ALTER TABLE 表名 ADD | DISABLE | ENABLE CONSTRAINT 约束名 PRIMARY KEY (字段名1[,字段名2 ……]); <br />SQL&gt; ALTER TABLE 表名 ADD | DISABLE | ENABLE CONSTRAINT 约束名 UNIQUE (字段名1[,字段名2 ……]); <br />加唯一关键字或者唯一约束条件时自动建立索引 <br />说明：禁止唯一关键字和唯一约束时索引仍然存在，可以被使用.</p><p>1. 改变表的几种情况(3) 运行时会加表级锁 <br />删除表里的约束条件 <br />SQL&gt; ALTER TABLE 表名 DROP CONSTRAINTS 约束名 [CASCADE]; <br />会把约束相关的索引一起删除. CASCADE能同时删去外键的约束条件. <br />把表放在或取出数据库的内存区 <br />SQL&gt; ALTER TABLE 表名 CACHE; <br />SQL&gt; ALTER TABLE 表名 NOCACHE; <br />改变表存储的表空间 <br />SQL&gt; ALTER TABLE 表名 MOVE TABLESPACE 表空间名 ; <br />注意: 如果被转移表空间的表含有索引, 表转移后索引变得不可用. <br />我们要删除旧索引,建立新索引</p><p>2. 删除表及表里的数据 <br />删除表 <br />SQL&gt; DROP TABLE 表名 [CASCADE CONSTRAINTS]; <br />清空表里的记录 <br />SQL&gt; TRUNCATE TABLE 表名; <br />按时间清空日志表里的记录，使用重新命名的方法(应用程序可能有短暂出错, 可以选择在不繁忙的时间执行) <br />按原来表A的建表语句创建新表A1, <br />把表A重命名为A2（如果表A上有较频繁的DML操作,会对表加上行级锁，重命名过程用递归的方式循环做，直到DML操作结束，命名成功). <br />把创建新表A1重命名为A <br />历史记录表A2备份或删除</p><p>3. 删除表后应该注意的问题 <br />删除表后把表里的索引一起删去. <br />删除表后会结束基于它的悬而未决的事物 <br />删除表后根据表创建的views,synonym,stored procedure,stored function依然存在，但views,synonym变成非法的. 需要手工找出它们并删除. <br />如果用了CASCADE CONSTRAINTS会把与它相关的约束一起删除 <br />此操作不可回退</p><p>4. 给表加注释 <br />加注释的语法 <br />SQL&gt; COMMENT ON TABLE 表名 | COLUMN表名.字段名 IS ‘text‘ <br />加注释的例子 <br />SQL&gt; comment on table s_emp is ‘Enployee information‘; <br />SQL&gt; comment on column s_emp.last_name is ‘‘; <br />关于注释的数据库字典 <br />ALL_COL_COMMENTS <br />USER_COL_COMMENTS <br />ALL_TAB_COMMENTS <br />USER_TAB_COMMENTS</p><p>十三、创建序列号 <br />1. 创建序列号里各参数的解释 <br />SQL&gt; CREATE SEQUENCE name [INCREMENT BY n] <br />[START WITH n] [{MAXVALUE n | NOMAXVALUE}] <br />[{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}] <br />[{CACHE n | NOCACHE}] <br />INCREMENT BY n 一次增长n 个数字 <br />NOMAXVALUE 缺省值10E+27 <br />NOMINVALUE 缺省值1 <br />NOCYCLE 不循环, 常用于唯一关键字 <br />CACHE n 在内存里缓存n个序列,出错回退时会丢失 <br />oracle8i里默认的n是20</p><p>序列号的名称一般可以采用“表名_字段名”的命名规则</p><p>2. 插入自动增长序列号字段的方法 <br />INSERT时如果要用到从1开始自动增长的数字做唯一关键字, 应该先建立一个序列号. <br />CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记) INCREMENT BY 1 START WITH 1 MAXVALUE 99999 NOCYCLE NOCACHE; <br />其中最大的值按字段的长度来定,比如定义的自动增长的序列NUMBER(6) , 最大值为999999 <br />INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL <br />例子: SQL&gt; insert into s_dept(id, name, region_id) values (s_dept_id.nextval, 'finance', 2); <br />1 row created. <br />只有运行了序列号的名称. nextval后序列号的名称. currval 才有效才有值.</p><p>3. 查询序列号的情况 <br />SQL&gt; select sequence_name, min_value, max_value, increment_by, last_number from user_sequences; <br />其中last_number指的是序列号的下一个值.</p><p>4. 改变序列号 <br />SQL&gt; ALTER SEQUENCE sequence [INCREMENT BY n] [{MAXVALUE n | NOMAXVALUE}] <br />[{MINVALUE n | NOMINVALUE}] <br />[{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}]; <br />注意: 不能改变它的起始值 <br />如果要改变序列的起始值, 先把序列号删除掉, 再新建一个. <br /><br />5. 删除序列号 <br />SQL&gt;DROP SEQUENCE sequence;</p><p>6. 不能用序列号的nextval和currval的地方</p><p>视图的查询 <br />有distinct的查询 <br />有group by,having,order by的查询 <br />有子查询的查询 <br />表里的缺省值</p><p>十四、创建视图 <br />1. 视图的概念和优点 <br />视图是基于一个或多个表及视图的一些查询语句, 它象显示数据的视窗, 它本身是不存储数据的. <br /><br />视图可以限制数据库的访问, 更好的控制权限 <br />使用户使用简单的查询语句 <br />数据的非依赖性 <br />同一数据的不同表现形式</p><p>2. 创建视图的语法 <br />SQL&gt; CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view[(alias[, alias]...)] <br />AS subquery <br />[WITH CHECK OPTION [CONSTRAINT constraint]] <br />[WITH READ ONLY] <br />参数解释: <br />FORCE 表不存在时,视图仍然可以创建成功 <br />WITH CHECK OPTION 只有符合视图定义的记录才能被插入或修改 <br />WITH READ ONLY 不允许DML操作</p><p>Oracle8i以后创建视图可以用order by</p><p>3. 创建修改视图的例子 <br />SQL&gt; CREATE OR REPLACE VIEW salvu41 AS SELECT id, first_name FIRST, <br />last_name LAST, salary MONTHLY_SALARY <br />FROM s_emp WHERE dept_id = 41; <br />SQL&gt; CREATE VIEW dept_sum_vu (name, minsal, maxsal, avgsal) AS SELECT d.name, MIN(e.salary), MAX(e.salary), AVG(e.salary) FROM s_emp e, s_dept d WHERE e.dept_id = d.id GROUP BY d.name; <br />注意: 如果用select * from table_name创建的视图 <br />table_name的结构改变后 view要重建或compile后才能显示新的字段内容</p><p>4. 查询视图的数据字典 <br />SQL&gt; set long 1600; <br />SQL&gt; select view_name,text from user_views; <br />说明: 可以根据视图text_length来设置set long 数字; <br />User_updatable_columns视图能查询视图里能被修改的字段</p><p>5. 简单和复杂的视图对比 <br />特 性 简单视图 复杂视图 <br />表的数量 一个 多个 <br />有函数吗? 没有 有 <br />有分组操作吗? 没有 有 <br />有基于视图的DML操作吗? 有 没有 </p><p>6. 在视图上可以用DML命令吗? <br />可以, 但有一定的限制条件 <br />没有下面的情况, 可以删除view里的记录. group function, group by, distinct <br />没有上面和下面的情况, 可以修改view里的记录. 字段表达式, <br />例如: salary*12 含rownum的view <br />没有上面两种情况, 且view里含基表里所有非空字段的情况, 可以往view里插入记录. <br /><br />7. 在视图里使用 WITH CHECK OPTION约束条件 <br />SQL&gt; create or replace view empvu41 <br />as select * from s_emp where dept_id = 41 <br />with check option constraint empvu41_ck; <br />如果运行下面命令会出错ora-01402 <br />SQL&gt; update empvu41 set dept_id=42 where id=16; <br />原因: 视图empvu41里规定只能看部门号为41的记录 修改后会把记录排除在视图empvu41以外 <br />与它的约束条件冲突</p><p>8. 删除视图 <br />SQL&gt; DROP VIEW view_name;</p><p>十五、创建索引</p><p>1.索引的概念 <br />索引是数据库里的一种数据对象 <br />它利用B*树, hash, bitmap结构直接快速地访问数据 <br />它和表是分开存放的两个实体 <br />索引创建好了后, 由系统自动调用和管理</p><p>2. 什么时候创建索引? <br />自动创建的索引:唯一关键字, 唯一的约束条件 <br />手工需要创建的索引:大表查询时, sql语句where后经常用到的字段或字段组合 <br />字段内容差别很大有大量NULL值表很大, 返回记录数较少 </p><p>3. B*树索引的结构 每个索引由字段值和指针或ROWID组成</p><p>4.创建索引的语法 <br />CREATE INDEX 索引名 ON 表名 ( 字段1, [字段2, ……] ) TABLESPACE 表空间名; </p><p>5.创建索引的注意事项 <br />创建索引时会加行级独占锁 <br />一个表的索引最好不要超过三个 (特殊的大表除外) <br />最好用单字段索引 <br />索引最好和表分不同的表空间存放 <br />结合SQL语句的分析执行情况, 也可以建立多字段的组合索引和基于函数的索引 <br />大表的索引会占用很大的存储空间 <br />不要建唯一的索引, 而应该加唯一的约束条件</p><p>6.查询索引的方法 <br />查询数据字典user_indexes和user_ind_columns</p><p>例子: <br />SQL&gt; SELECT ic.index_name, ic.column_name, <br />2 ic.column_position col_pos,ix.uniqueness <br />3 FROM user_indexes ix, user_ind_columns ic <br />4 WHERE ic.index_name = ix.index_name <br />5 AND ic.table_name = 'S_EMP';</p><p>注意: 数据字典里存放的字符都是大写的.</p><p>7. 不用索引的地方 <br />表很小 <br />where后不经常使用的比较字段 <br />表被频繁修改 <br />返回记录数很多 <br />where后含IS NULL /IS NOT NULL/ like ‘%输入符%’等条件</p><p>8. 重建索引的语法 <br />ALTER INDEX 索引名 REBUILD TABLESPACE 原来表空间名 NOLOGGING; <br />定期重建索引可以减少索引的碎片, 更有效地使用表空间.</p><p>9. 删除索引 <br />SQL&gt; drop index 索引名; <br />SQL&gt; alter table 表名 drop constraint 约束名;</p><p>十六、控制用户访问 <br />1.权限的类别 <br />系统级权限: 针对整个系统操作的权限 <br />如: 用户名/密码, 使用表空间的限额等 <br />对象级权限: 针对某个具体object操作的权限 <br />如: 针对某个表, 视图, 表的某个字段的select, update, delete权限 <br />2. 查看当前数据库的用户信息 <br />SQL&gt;select username,default_tablespace,temporary_tablespace from dba_users; <br />查看在线用户信息 <br />SQL&gt;select count(*) “number”,username “current username” from v$session group by username; 用户查看自己的缺省表空间SQL&gt;select username,default_tablespace from user_users;</p><p>3. 创建新用户 <br />SQL&gt; create user username identified by password <br />default tablespace tablespace_name temporary tablespace temp <br />quota unlimited on tablespace_name <br />quota 1k on system <br />[quota 1k on other_tablespace_name ……] ; <br />给用户赋权限 <br />SQL&gt; grant connect, resource to username; <br />查看当前用户的权限角色 <br />SQL&gt; select * from user_role_privs; <br />查看当前用户的系统权限和表级权限 <br />SQL&gt; select * from user_sys_privs;SQL&gt; select * from user_tab_privs;</p><p>4 、常用的角色及其权限 <br />CONNECT 8 privs 连上Oracle,做最基本操作 <br />RESOURCE 8 privs 具有程序开发最的权限 <br />DBA 114 privs 数据库管理员所有权限 <br />EXP_FULL_DATABASE 5 privs 数据库整个备份输出的权限 <br />IMP_FULL_DATABASE 64 privs 数据库整个备份输入的权限 <br />查看角色明细的系统权限 <br />SQL&gt; select * from role_sys_privs;</p><p>5、改变老用户 可以改变老用户的密码, 缺省表空间, 临时表空间, 空间限额. <br />SQL&gt; alter user username identified by password <br />default tablespace tablespace_name <br />temporary tablespace temp <br />quota unlimited on tablespace_name <br />quota 1k on system <br />[quota 1k on other_tablespace_name ……] ; <br />撤销用户的角色或权限 <br />SQL&gt; revoke role_name or priv_name from username; <br />注意事项 <br />撤消用户的角色dba时, 同时撤消了用户unlimited tablespace的系统权限, 切记要再次赋予resource角色给此用户 <br />SQL&gt; grant resource to username;</p><p>6、删除用户 <br />如果用户下没有任何数据对象 <br />SQL&gt; drop user username; <br />如果用户下有数据对象 <br />SQL&gt; drop user username cascade; <br />注意事项 <br />如果用户下有含clob,blob字段的表, 应该先删除这些表后,才能用cascade选项完全删除.</p><p>7、角色的概念和管理 <br />角色是命名多个相关权限的组合. 能把它赋于其它的用户或角色我们能创建角色, 使权限管理更容易一些. </p><p>8、赋于系统的权限语法和例子 <br />语法: <br />SQL&gt; GRANT sys_priv TO {user|role|PUBLIC} [WITH ADMIN OPTION]; <br />例子: <br />SQL&gt; GRANT create session TO sue, rich; <br />SQL&gt; GRANT create table To scott, manager;</p><p>注意: 如果用WITH ADMIN OPTION通过中间用户赋于的系统权限 中间用户删除后, 系统权限仍然存在.</p><p>9、赋于数据对象级的权限语法和例子 <br />语法: <br />SQL&gt; GRANT object_priv [(columns)] ON object TO {user|role|PUBLIC} [WITH GRANT OPTION]; <br />例子: <br />SQL&gt; GRANT select ON s_emp TO sue, rich; <br />SQL&gt; GRANT update (name, region_id) <br />ON s_dept TO scott, manager;</p><p>注意: 如果用WITH GRANT OPTION通过中间用户赋于的对象权限 中间用户删除后,对象权限就不存在了. </p><img src ="http://www.blogjava.net/qsg1982/aggbug/233201.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qsg1982/" target="_blank">e全</a> 2008-10-08 18:39 <a href="http://www.blogjava.net/qsg1982/archive/2008/10/08/233201.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>超难的75道逻辑思维题[转载]</title><link>http://www.blogjava.net/qsg1982/archive/2008/08/03/219723.html</link><dc:creator>e全</dc:creator><author>e全</author><pubDate>Sun, 03 Aug 2008 10:12:00 GMT</pubDate><guid>http://www.blogjava.net/qsg1982/archive/2008/08/03/219723.html</guid><wfw:comment>http://www.blogjava.net/qsg1982/comments/219723.html</wfw:comment><comments>http://www.blogjava.net/qsg1982/archive/2008/08/03/219723.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qsg1982/comments/commentRss/219723.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qsg1982/services/trackbacks/219723.html</trackback:ping><description><![CDATA[
		<div class="postTitle"> </div>
		<span class="Apple-style-span" style="WORD-SPACING: 0px; FONT: 13px/16px Verdana; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2">
				<p style="FONT-SIZE: 13px; MARGIN: 10px 0px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%">【1】假设有一个池塘，里面有无穷多的水。现有2个空水壶，容积分别为5升和6升。问题是如何只用这2个水壶从池塘里取得3升的水。</p>
				<p style="FONT-SIZE: 13px; MARGIN: 10px 0px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%">
						<clk>【2】周雯的妈妈是水泥厂的化验员。一天，周雯来到化验室做作业。做完后想出去玩。“等等，妈妈还要考你一个题目。”她接着说，“你看这6只做化验用的玻璃杯，前面3只盛满了水，后面3只是空的。你能只<nobr oncontextmenu="return false" onmousemove="kwM(8)" id="clickeyekey8" onmouseover="kwE(event,8, this)" style="COLOR: rgb(102,0,255); BORDER-BOTTOM: rgb(102,0,255) 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="kwC(event,8)" onmouseout="kwL(event,this)">移动</nobr>1只玻璃杯，就把盛满水的杯子和空杯子间隔起来吗？”爱动脑筋的周雯是学校里有名的“小机灵”，她只想了一会儿就做到了。请你想想看，“小机灵”是怎样做的？</clk>
				</p>
				<p style="FONT-SIZE: 13px; MARGIN: 10px 0px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%">【3】三个小伙子同时爱上了一个姑娘，为了决定他们谁能娶这个姑娘，他们决定用手枪进行一次决斗。小李的命中率是30％，小黄比他好些，命中率是 50％，最出色的枪手是小林，他从不失误，命中率是100％。由于这个显而易见的事实，为公平起见，他们决定按这样的顺序：小李先开枪，小黄第二，小林最 后。然后这样循环，直到他们只剩下一个人。那么这三个人中谁活下来的机会最大呢？他们都应该采取什么样的策略？</p>
				<p style="FONT-SIZE: 13px; MARGIN: 10px 0px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%">【4】一间囚房里关押着两个犯人。每天监狱都会为这间囚房提供一罐汤，让这两个犯人自己来分。起初，这两个人经常会发生争执，因为他们总是有人认为 对方的汤比自己的多。后来他们找到了一个两全其美的办法：一个人分汤，让另一个人先选。于是争端就这么解决了。可是，现在这间囚房里又进来一个新犯人，现 在是三个人来分汤。必须寻找一个新的方法来维持他们之间的和平。该怎么办呢？</p>
				<p style="FONT-SIZE: 13px; MARGIN: 10px 0px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%">按：心理问题，不是逻辑问题</p>
				<p style="FONT-SIZE: 13px; MARGIN: 10px 0px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%">【5】在一张长方形的桌面上放了n个一样大小的圆形硬币。这些硬币中可能有一些不完全在桌面内，也可能有一些彼此重叠；当再多放一个硬币而它的圆心在桌面内时，新放的硬币便必定与原先某些硬币重叠。请证明整个桌面可以用4n个硬币完全覆盖。</p>
				<p style="FONT-SIZE: 13px; MARGIN: 10px 0px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%">【6】一个球、一把长度大约是球的直径2/3长度的直尺，你怎样测出球的半径？方法很多，看看谁的比较巧妙。</p>
				<p style="FONT-SIZE: 13px; MARGIN: 10px 0px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%">【7】五个大小相同的一元人民币硬币。要求两两相接触，应该怎么摆？</p>
				<p style="FONT-SIZE: 13px; MARGIN: 10px 0px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%">【8】猜牌问题</p>
				<p style="FONT-SIZE: 13px; MARGIN: 10px 0px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%">S先生、P先生、Q先生他们知道桌子的抽屉里有16张扑克牌：红桃A、Q、4，黑桃J、8、4、2、7、3，草花K、Q、5、4、6，方块A、5。 约翰教授从这16张牌中挑出一张牌来，并把这张牌的点数告诉P先生，把这张牌的花色告诉Q先生。这时，约翰教授问P先生和Q先生：你们能从已知的点数或花 色中推知这张牌是什么牌吗？于是，S先生听到如下的对话：</p>
				<p style="FONT-SIZE: 13px; MARGIN: 10px 0px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%">P先生：我不知道这张牌。</p>
				<p style="FONT-SIZE: 13px; MARGIN: 10px 0px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%">Q先生：我知道你不知道这张牌。</p>
				<p style="FONT-SIZE: 13px; MARGIN: 10px 0px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%">P先生：现在我知道这张牌了。</p>
				<p style="FONT-SIZE: 13px; MARGIN: 10px 0px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%">Q先生：我也知道了。</p>
				<p style="FONT-SIZE: 13px; MARGIN: 10px 0px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%">听罢以上的对话，S先生想了一想之后，就正确地推出这张牌是什么牌。</p>
				<p style="FONT-SIZE: 13px; MARGIN: 10px 0px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%">请问：这张牌是什么牌？</p>
				<p style="FONT-SIZE: 13px; MARGIN: 10px 0px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%">【9】一个教授逻辑学的教授，有三个学生，而且三个学生均非常聪明！</p>
				<p style="FONT-SIZE: 13px; MARGIN: 10px 0px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%">一天教授给他们出了一个题，教授在每个人脑门上贴了一张纸条并告诉他们，每个人的纸条上都写了一个正整数，且某两个数的和等于第三个！（每个人可以看见另两个数，但看不见自己的）</p>
				<p style="FONT-SIZE: 13px; MARGIN: 10px 0px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%">教授问第一个学生：你能猜出自己的数吗？回答：不能，问第二个，不能，第三个，不能，再问第一个，不能，第二个，不能，第三个：我猜出来了，是144！教授很满意的笑了。请问您能猜出另外两个人的数吗？</p>
				<p style="FONT-SIZE: 13px; MARGIN: 10px 0px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%">
						<clk>【10】某城市发生了一起<nobr oncontextmenu="return false" onmousemove="kwM(10)" id="clickeyekey10" onmouseover="kwE(event,10, this)" style="COLOR: rgb(102,0,255); BORDER-BOTTOM: rgb(102,0,255) 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="kwC(event,10)" onmouseout="kwL(event,this)">汽车</nobr>撞人逃跑事件</clk>
				</p>
				<p style="FONT-SIZE: 13px; MARGIN: 10px 0px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%">该城市只有两种颜色的车，蓝色15%，绿色85%。</p>
				<p style="FONT-SIZE: 13px; MARGIN: 10px 0px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%">事发时有一个人在现场看见了</p>
				<p style="FONT-SIZE: 13px; MARGIN: 10px 0px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%">他指证是蓝车</p>
				<p style="FONT-SIZE: 13px; MARGIN: 10px 0px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%">
						<clk>但是根据<nobr oncontextmenu="return false" onmousemove="kwM(12)" id="clickeyekey12" onmouseover="kwE(event,12, this)" style="COLOR: rgb(102,0,255); BORDER-BOTTOM: rgb(102,0,255) 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="kwC(event,12)" onmouseout="kwL(event,this)">专家</nobr>在现场分析，当时那种条件能看正确的可能性是80%</clk>
				</p>
				<p style="FONT-SIZE: 13px; MARGIN: 10px 0px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%">那么，肇事的车是蓝车的概率到底是多少？</p>
				<p style="FONT-SIZE: 13px; MARGIN: 10px 0px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%">
						<clk>【11】有一人有240公斤水，他想运往干