﻿<?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-AntSoul-随笔分类-DataBase</title><link>http://www.blogjava.net/antsoul/category/20421.html</link><description>它总是在行走，行走，永远的行走……


行走是它生存的恒久姿态和最佳造型。


它似乎有一双不知疲倦的脚。


———我说的是蚂蚁。
</description><language>zh-cn</language><lastBuildDate>Wed, 07 Mar 2007 15:55:12 GMT</lastBuildDate><pubDate>Wed, 07 Mar 2007 15:55:12 GMT</pubDate><ttl>60</ttl><item><title>subQuery</title><link>http://www.blogjava.net/antsoul/archive/2007/03/07/102447.html</link><dc:creator>antsoul</dc:creator><author>antsoul</author><pubDate>Wed, 07 Mar 2007 09:39:00 GMT</pubDate><guid>http://www.blogjava.net/antsoul/archive/2007/03/07/102447.html</guid><wfw:comment>http://www.blogjava.net/antsoul/comments/102447.html</wfw:comment><comments>http://www.blogjava.net/antsoul/archive/2007/03/07/102447.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/antsoul/comments/commentRss/102447.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/antsoul/services/trackbacks/102447.html</trackback:ping><description><![CDATA[
		<p>    <font size="2">子查询是指在其它的SQL语句中的SELECT语句，也叫嵌套查询。但是，当在DDL语句中引用子查询时，可以带有ORDER BY子句；在WHERE子句，SET字句中不能带有ORDER BY子句。subQuery具有以下的一些作用：<br />    →  同坐在INSERT或CREATE TABLE语句中使用subQuery,可以将原表数据插入到目标表中。<br /><br />    →  通过在CAREATE VIEW或CREATE MATERIALIZED VIEW中使用subQuery，可以定义视图或者实例化视图所对应的SELECT语句。<br /><br /></font><font size="2">    →   通过在UPDATE语句中使用subQuery可以修改一列或者多列数据。<br /><br />    →   在WHERE,HAVING,START WITH子句中可以使用subQuery，可以提供条件值。<br /><br />一般来说根据返回的结果不同，subQuery被分为单行subQuery，多行subQuery和多列subQuery。<br /><br />单行subQuery： 只返回一行数据的subQuery。例如：<br /> SELECT name,salary,deptno, FROM employee WHERE deptno =(SELECT deptno FROM employee WHERE name ='antsoul');<br /><br /><br />多行subQuery：返回多行数据的subQuery。当在WHERE子句中使用的时候，必须使用多行比较符。(IN,ALL,ANY)  例如:<br />使用IN:<br />SELECT name,job,salary,deptno FROM employee WHERE job IN (SELECT distinct job FROM employee WHERE deptno = 10);<br /><br />使用ALL:<br />SELECT name,salary,deptno FROM employee WHERE salary &gt; ALL(SELECT salary  FROM employee WHERE deptno = 30);<br /><br />使用ANY:<br />SELECT name,salary,deptno FORM employee WHERE salary &gt;ANY(SELECT salary FOMR employee WHERE deptno =30);<br /><br />多列subQuery：当多列subQuery在WHERE子句中使用时候，必须运用多行比较符（IN,ALL,ANY）。例如:<br />显示与antsoul部门和岗位完全相同的职员。<br />SELECT name,job,salary,deptno FROM employee WHERE (deptno,job) = (SELECT deptno,job FORM employee WHERE name ='antsoul');<br /><br />相关subQuery: 需要引用主查询表列的子查询语句，相关子查询是通过关键字EXISTS来实现的。例如:<br />显示工作在“ShangHai ” 的所有职员。<br />SELECT name,job FORM employee WHERE EXISTS(SELECT 1 FROM dept WHERE deptno = emp.deptno AND dept.loc = 'ShangHai');<br /></font></p>
<img src ="http://www.blogjava.net/antsoul/aggbug/102447.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/antsoul/" target="_blank">antsoul</a> 2007-03-07 17:39 <a href="http://www.blogjava.net/antsoul/archive/2007/03/07/102447.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 的入门心得【转】</title><link>http://www.blogjava.net/antsoul/archive/2007/03/07/102352.html</link><dc:creator>antsoul</dc:creator><author>antsoul</author><pubDate>Wed, 07 Mar 2007 03:43:00 GMT</pubDate><guid>http://www.blogjava.net/antsoul/archive/2007/03/07/102352.html</guid><wfw:comment>http://www.blogjava.net/antsoul/comments/102352.html</wfw:comment><comments>http://www.blogjava.net/antsoul/archive/2007/03/07/102352.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/antsoul/comments/commentRss/102352.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/antsoul/services/trackbacks/102352.html</trackback:ping><description><![CDATA[
		<div style="FONT-SIZE: 12px">oracle的体系太庞大了，对于初学者来说，难免会有些无从下手的感觉，什么都想学，结果什么都学不好，所以把学习经验共享一下，希望让刚刚入门的人对oracle有一个总体的认识，少走一些弯路。 <br />  <br />一、定位 <br />oracle分两大块，一块是开发，一块是管理。开发主要是写写存储过程、触发器什么的，还有就是用Oracle的Develop工具做form。有点类似于程序员，需要有较强的逻辑思维和创造能力，个人觉得会比较辛苦，是青春饭J；管理则需要对oracle数据库的原理有深刻的认识，有全局操纵的能力和紧密的思维，责任较大，因为一个小的失误就会down掉整个数据库，相对前者来说，后者更看重经验。 <br />  <br />因为数据库管理的责任重大，很少公司愿意请一个刚刚接触oracle的人去管理数据库。对于刚刚毕业的年轻人来说，可以先选择做开发，有一定经验后转型，去做数据库的管理。当然，这个还是要看人个的实际情况来定。<br /><br />二、学习方法  <br />我的方法很简单，就是：看书、思考、写笔记、做实验、再思考、再写笔记 <br />  <br />     看完理论的东西，自己静下心来想想，多问自己几个为什么，然后把所学和所想的知识点做个笔记；在想不通或有疑问的时候，就做做实验，想想怎么会这样，同样的，把实验的结果记下来。思考和做实验是为了深入的了解这个知识点。而做笔记的过程，也是理清自己思路的过程。 <br />  <br />     学习的过程是使一个问题由模糊到清晰，再由清晰到模糊的过程。而每次的改变都代表着你又学到了一个新的知识点。 <br />  <br />     学习的过程也是从点到线，从线到网，从网到面的过程。当点变成线的时候，你会有总豁然开朗的感觉。当网到面的时候，你就是高手了 <br />  <br />     很多网友，特别是初学的人，一碰到问题就拿到论坛上来问，在问前，你有没有查过书，自己有没有研究过，有没有搜索一下论坛？这就叫思维惰性。由别人来回答你的问题，会让你在短时间内不费劲地弄懂这个知识点，然而通过自己的努力去研究它，不但会更深入的了解这个知识点，更重要的是在研究的过程会提高你解决问题和分析问题的能力。总的来说，没有钻研的学习态度，不管学什么东西，都不会成功的。 <br />  <br />     当然，初学的人很多时候是因为遇到问题时，无从下手，也不知道去哪里找资料，才会到论坛上提问题的。但我认为，在提问的时候，是不是可以问别人是如何分析这个问题？从哪里可以找到相关的资料？而不是这个问题的答案是什么？授人以鱼不如授人以渔。<br /><br />   下面我讲下我处理问题的过程<br /><br />   首先要知道oracle的官方网站：www.oracle.com 这里有oracle的各种版本的数据库、应用工具和权威的官方文档。其次，还要知道<a href="http://metalink.oracle.com/" target="_blank">http://metalink.oracle.com/</a>这里是买了oracle服务或是oracle的合作伙伴才可以进去的，里面有很多权威的解决方案和补丁。然后就是一些著名网站：asktom.oracle.com <a href="http://www.orafaq.net/" target="_blank">www.orafaq.net</a>, <a href="http://www.dbazine.com/" target="_blank">www.dbazine.com</a>。这里有很多经验之谈。<br /><br />    遇到问题了。如果是概念上的问题，第一时间可以找tahiti.oracle.com，这里会给你最详细的解释。如果在运行的过程中出了什么错误。可以去metalink看看。如果是想知道事务的处理的经验之谈。可以去asktom。当然。这里只是相对而言。<br /><div style="FONT-SIZE: 12px">三、oracle的体系 <br />oracle的体系很庞大，要学习它，首先要了解oracle的框架。在这里，简要的讲一下oracle的架构，让初学者对oracle有一个整体的认识。 <br />  <br />1、物理结构（由控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件组成） <br />控制文件：包含维护和验证数据库完整性的必要信息、例如，控制文件用于识别数据文件和重做日志文件，一个数据库至少需要一个控制文件 <br />数据文件：存储数据的文件 <br />重做日志文件：含对数据库所做的更改记录，这样万一出现故障可以启用数据恢复。一个数据库至少需要两个重做日志文件 <br />参数文件：定义Oracle 例程的特性，例如它包含调整SGA 中一些内存结构大小的参数 <br />归档文件：是重做日志文件的脱机副本，这些副本可能对于从介质失败中进行恢复很必要。 <br />密码文件：认证哪些用户有权限启动和关闭Oracle例程 <br />  <br />2、逻辑结构（表空间、段、区、块） <br />表空间：是数据库中的基本逻辑结构，一系列数据文件的集合。 <br />段：是对象在数据库中占用的空间 <br />区：是为数据一次性预留的一个较大的存储空间 <br />块：ORACLE最基本的存储单位，在建立数据库的时候指定 <br />  <br />3、内存分配（SGA和PGA） <br />SGA：是用于存储数据库信息的内存区，该信息为数据库进程所共享。它包含Oracle 服务器的数据和控制信息, 它是在Oracle 服务器所驻留的计算机的实际内存中得以分配，如果实际内存不够再往虚拟内存中写。 <br />PGA：包含单个服务器进程或单个后台进程的数据和控制信息，与几个进程共享的SGA 正相反PGA 是只被一个进程使用的区域，PGA 在创建进程时分配在终止进程时回收 <br />  <br />4、后台进程（数据写进程、日志写进程、系统监控、进程监控、检查点进程、归档进程、服务进程、用户进程） <br />数据写进程：负责将更改的数据从数据库缓冲区高速缓存写入数据文件 <br />日志写进程：将重做日志缓冲区中的更改写入在线重做日志文件 <br />系统监控：检查数据库的一致性如有必要还会在数据库打开时启动数据库的恢复 <br />进程监控：负责在一个Oracle 进程失败时清理资源 <br />检查点进程：负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库状态信息。 <br />归档进程：在每次日志切换时把已满的日志组进行备份或归档 <br />服务进程：用户进程服务。 <br />用户进程：在客户端，负责将用户的SQL 语句传递给服务进程，并从服务器段拿回查询数据。 <br />  <br />5、oracle例程：Oracle 例程由SGA 内存结构和用于管理数据库的后台进程组成。例程一次只能打开和使用一个数据库。 <br />  <br />6、SCN(System Change Number)：系统改变号，一个由系统内部维护的序列号。当系统需要更新的时候自动增加，他是系统中维持数据的一致性和顺序恢复的重要标志。<br /><br /><div style="FONT-SIZE: 12px">四、深入学习  <br />管理：可以考OCP证书，对oracle先有一个系统的学习，然后看Oracle Concepts、oracle online document,对oracle的原理会有更深入的了解，同时可以开始进行一些专题的研究如：RMAN、RAS、STATSPACT、DATAGUARD、TUNING、BACKUP&amp;RECOVER等等。 <br />  <br />开发：对于想做Oracle开发的，在了解完Oracle基本的体系结构之后，可以重点关注PL/SQL及Oracle的开发工具这一部分。 PL/SQL主要是包括怎么写SQL语句，怎么使用Oracle本身的函数，怎么写存储过程、存储函数、触发器等。 Oracle的开发工具主要就是Oracle自己的Developer Suite（Oracle Forms Developer and Reports Developer这些），学会如何熟练使用这些工具。<br /><br /><div style="FONT-SIZE: 12px">介绍几本oracle入门的好书<br /><br />oracle官方文档：《concept》上面讲了oracle的体系和概念，很适合初学者看。<br /><br />OCP的教学用书，也就是STUDY GUIDE(SG)。<br />Oracle8i 备份恢复手册<br />Oracle8高级管理与优化<br />Oracle8i PLSQL程序设计<br />Oracle8数据库管理员手册<br />以上书本都是机械工业出版社出版。<br />  <br />介绍几个网站 <br /><a href="http://tahiti.oracle.com/" target="_blank">http://tahiti.oracle.com</a> oracle的官方文档 <br />现在<a href="http://www.oracle.com.cn/onlinedoc/index.htm" target="_blank">http://www.oracle.com.cn/onlinedoc/index.htm</a>也有官方文档，速度奇快<br /><a href="http://metalink.oracle.com/" target="_blank">http://metalink.oracle.com/</a> oracle的技术支持网站。需要购买Oracle服务才能有一个帐号，才能登陆，有大量的Knowledge Base，大量问题解决经验。 <br /><a href="http://www.oracle.com/" target="_blank">http://www.oracle.com</a> oracle的官方网站，可以在这里down oracle的软件、官方文档和获得最新的消息 <br /><a href="http://www.dbazine.com/" target="_blank">http://www.dbazine.com/</a> Oracle的杂志 <br /><a href="http://asktom.oracle.com/" target="_blank">http://asktom.oracle.com</a>  <br /><a href="http://www.orafaq.net/" target="_blank">http://www.orafaq.net/</a>  <br /><a href="http://www.ixora.com.au/" target="_blank">http://www.ixora.com.au/</a><br /><a href="http://www.oracle-base.com/" target="_blank">http://www.oracle-base.com</a><br /><a href="http://www.dba-oracle.com/oracle_links.htm" target="_blank">http://www.dba-oracle.com/oracle_links.htm</a></div></div></div></div>
<img src ="http://www.blogjava.net/antsoul/aggbug/102352.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/antsoul/" target="_blank">antsoul</a> 2007-03-07 11:43 <a href="http://www.blogjava.net/antsoul/archive/2007/03/07/102352.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>