tbwshc

#

eclipse启动异常

1、eclipse启动异常jvm terminated.Exit code=-1错误的解决

解决方案:

打开安装目录下的eclipse.config配置文件,大致的内容如下,

-startup
plugins/org.eclipse.equinox.launcher_1.0.200.v20090520.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-product
org.eclipse.epp.package.jee.product
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platbform
--launcher.XXMaxPermSize
256m
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m

其中的“Xmx512m” 改成“Xmx256m”,OK搞定。

posted @ 2012-07-04 13:11 chen11-1 阅读(708) | 评论 (0)编辑 收藏

SQL Server 中的时间算法

     摘要: DECLARE @Date DATETIME SET @Date=GETDATE() --前一天,给定日期的前一天 SELECT DATEADD(DAY,-1,@Date) AS '前一天' --后一天,给定日期的后一天 SELECT DATEADD(DAY,1,@Date) AS '后一天' GO --月初,计算给定日期所在月的第一天 --这个计算的技巧是先计算当前日...  阅读全文

posted @ 2012-07-03 13:32 chen11-1 阅读(946) | 评论 (0)编辑 收藏

用户无操作自动跳转

<html> 
<
head>
<
script language="JavaScript">
<!--
 var meizz; //设置一个全局变量
var n = 30 * 1000; //时间设置(300秒)
meizz
= setTimeout("window.location.href='t.html'", n);
function
window.top.document.onmousemove() {
clearTimeout(meizz);
meizz
= setTimeout("window.location.href='t.html'", n);
}
function window.top.document.onkeydown()
{
clearTimeout(meizz);
meizz
= setTimeout("window.location.href='t.html'", n);
}
//-->
</
script>
</
head>
<
FRAMESET border=0 COLS="20%,80%">
<
FRAME SRC="11.html" NAME="left"> <FRAMESET Rows="50%,50%"> <FRAME SRC="22.html" NAME="main"> <FRAME SRC="TB.html" NAME="right"> </FRAMESET> </FRAMESET> </HTML>

posted @ 2012-07-03 13:29 chen11-1 阅读(749) | 评论 (0)编辑 收藏

该伙伴事务管理器已经禁止了它对远程/网络事务的支持

手上的项目快接近尾声了,这二天准备切换旧系统时,需要与其它数据库做一些同步的工作,以前的系统在中间层使用COM+组件做数据同步,这次本想偷 个懒,使用链接服务器做个视图,使用相应的触发器来同步,在提交数据时,总时报:“链接服务器"192.168.2.10"的 OLE DB 访问接口 "SQLNCLI" 返回了消息 "该伙伴事务管理器已经禁止了它对远程/网络事务的支持”错误。。花了半天时的时间,总算把问题解题了,现总结一下,希望对大家有所帮助。

   主要的问题还是MSDTBC的设置,找了一篇如下的文章,很帮助:

  关于“COM+ 无法与 Microsoft 分布式事务协调程序交谈

出现了“该伙伴事务管理器已经禁止了它对远程/网络事务的支持”的错误,一个很叫人郁闷的错误,找了很多资料,基本的解决方法整理如下:
  1. 单击“开始”,指向“控制面板”,然后单击“添加/删除程序”。
  2. 单击“添加/删除 Windows 组件”。
  3. 选择“应用程序服务器”,然后单击“详细信息”。
  4. 选择“启用网络 DTC 访问”,然后单击“确定”。
  5. 单击“下一步”。
  6. 单击“完成”。
  7. 停止分布式事务协调器服务,然后重新予以启动。
  8. 停止参与分布式事务的任何资源管理器服务(如 Microsoft SQL Server 或 Microsoft Message Queue Server),然后重新予以启动。
  9.检查MSDTC设置是否正确.
   1)打开命令提示,运行"net stop msdtc",然后运行"net start msdtc"。
   2)转至"组件服务管理工具"。
   3)浏览至"启动管理工具"。
   4)选择"组件服务"。
   a.展开"组件服务"树,然后展开"我的电脑"。
   b.右键单击"我的电脑",然后选择"属性"。
   c.在 MSDTC 选项卡中,确保选中了下列选项: 网络 DTC 访问
   网络管理
   网络事务
   XA 事务
   d.另外,"DTC 登录帐户"一定要设置为"NT Authority\NetworkService"。
   5)单击"确定"。这样将会提示您"MS DTC 将会停止并重新启动。
   所有的依赖服务将被停止。请按'是'继续"。单击"是"继续。
   6)单击"确定"关闭"我的电脑"属性窗口。
  10.关闭网络防火墙(或者开放相应的端口135)

1. 先在程序計算機上設置MSDTC:控制面板->管理工具->組件服務->我的電腦->右jiang->屬性 ->MSDTC->安全配置(Security Configuration)->打開Network DTC Access 同時打上
Allow Inbound ,Allow Outbound ,No Authentication Required,Enable Transaction Internet Protocol[TIP] Transaction
2.請在遠程數據庫計算機上做1同樣的事情

3.雙方計算機重新啟動MSDTC

4.這樣就可以了

其它的一些资料:

分布式事务在Windows 2003的配置比较麻烦,原来我就碰到过怎么设置也启动不了的情况,近日在别人指导下弄好了,顺便写个配置步骤,希望对大家有用
1、 添加/删除程序中,选择添加Windows组件,选择应用程序服务器,选择启用分布式事务网络访问
2、 在DTC所涉及的所有服务器中,启用NETBIOS,确保所有服务器能相互ping通对方,具体为修改所有服务器中的C:\Windows\System32\Drivers\etc\hosts文件(具体可参考hosts文件的内部帮助)。[注意]必须修改所有的服务器中的hosts文件
3、 禁用SQL Server 的DTC RPC安全,具体为在HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC下新建一个DWord键,名称为TurnOffRpcSecurity,设置其值为1
4、 重启MSDTC
5、 关闭网络防火墙(或者开放相应的端口)
6、 参考:
http://www.support.microsoft.com/?kbid=555017&SD=tech
http://support.microsoft.com/default.aspx?scid=kb;zh-tw;306843
http://support.microsoft.com/kb/250367/

posted @ 2012-07-03 13:28 chen11-1 阅读(2973) | 评论 (0)编辑 收藏

Oracle查询优化4大方面的主要途径

数据库最基本的任务是存储、管理数据,而终端用户唯一能看到的数据库特性就是其性能:数据库以何速度处理某一指定查询的结果,并且将结果返回到用户所用的工具和应用程序。从大多数系统的应用实例来看,查询操作在各种数据库操作中所占据的比重最大、查阅新闻、 查看文件、 查询统计信息等。因此,数据库查询操作的效率是影响一个应用系统响应时间的关键因素。随着一个应用系统中数据的动态增长,数据量变大,数据库查询效率就会有所降低,应用系统的响应速度也随之减慢,尤其对于海量数据的管理和查询问题就更加突出,Oracle查询优化就显得尤为重要。   

目前通用的数据库产品有很多种,其中Oracle数据库以其支持大数据库、多用户的高性能事务处理, 对业界各项工业标准的支持,完整的安全和完整性控制,支持分布式数据库利分布处理 具有可移植性、可兼容性和可连接性等突出优点倍受用户喜爱,应用较为广泛,在互联网数据库平台上处于领先地位、其Spatial技术能更加有效地管理地理信息,实现海量空间信息的存储和管理。本文结合Oracle数据库应用经验,从命中率提高、多表查询优化、大表查询优化和SQL优化等四个方面阐述Oracle查询优化的经验和方法。

Oracle查询优化第一方面:Oracle数据查询tb命中率的提高   

“命中率(HITRATIO) 是指直接从内存中取得数据而不从磁盘中取得数据的比率,也就是查询请求的数据块已经在内存中次数的百分比”。影响命中率的因素有四种:字典表活动、临时段活动、回滚段活动、表扫描, 应用DBA可以对这四种因素进行分析,找出数据库命中率低的症结所在。

1)字典表活动  

当一个SQL语句第一次到达Oracle内核时数据库对SQL语句进行分析,包含在查询中的数据字典对象被分解,产生SQL执行路径。如果SQL语句指向一个不在SGA中的对象??表或视图,Oracle执行SQL语句到数据典中查询有关对象的信息。数据块从数据字典表被读取到SGA的数据缓存中。由于每个数据字典都很小,因此,我们可缓存这些表以提高对这些表的命中率。但是由于数据字典表的数据块在SGA中占据空间,当增加全部的命中率时,它们会降低表数据块的可用空间, 所以若查询所需的时间字典信息已经在SGA缓存中,那么就没有必要递归调用。

2)临时段的活动   

当用户执行一个需要排序的查询时,Oracle设法对内存中排序区内的所有行进行排序,排序区的大小由数据库的init.ora文件的数确定。如果排序区域不够大,数据库就会在排序操作期间开辟临时段。临时段会人为地降低OLTP(online transaction processing)应用命中率,也会降低查询进行排序的性能。如果能在内存中完成全部排序操作,就可以消除向临时段写数据的开销。所以应将SORT_AREA_SIZE设置得足够大,以避免对临时段的需要。这个参数的具体调整方法是:查询相关数据,以确定这个参数的调整。  
select * from v$sysstat where name='sorts(disk)'or name='sorts(memory);

大部分排序是在内存中进行的,但还有小部分发生在临时段, 需要调整 值,查看init.ora文件的 SORT_AREA_SIZE值,参数为:SORT_AREA_SIZE=65536;将其调整到SORT_AREA_SIZE=131072、这个值调整后,重启ORACLE数据库即可生效。

3)回滚段的活动   

回滚段活动分为回滚活动和回滚段头活动。对回滚段头块的访问会降低应用的命中率, 对OLTP系统命中率的影响最大。为确认是否因为回滚段影响了命中率,可以查看监控输出报表中的“数据块相容性读一重写记录应用” 的统计值,这些统计值是用来确定用户从回滚段中访问数据的发生次数。

4)表扫描   

通过大扫描读得的块在数据块缓存中不会保持很长时间, 因此表扫描会降低命中率。为了避免不必要的全表扫描,首先是根据需要建立索引,合理的索引设计要建立人对各种查询的分析和预测上,笔者会在SQL优化中详细谈及;其次是将经常用到的表放在内存中,以降低磁盘读写次数。例如 Alter table your_table_name cathe。

posted @ 2012-06-30 23:02 chen11-1 阅读(1515) | 评论 (0)编辑 收藏

Oracle数据库索引的优点与缺点简介

以下的文章主要介绍的是Oracle数据库索引的优点与缺点,我们大家都知道Oracle数据库的索引可以分为:聚集索引,非聚集索引,以及唯一索引。其优点主要是方便查询,其在相关的数据量大时排序更易查询。

缺点:查询时需要进行重新排序,减少了效率。物理Oracle数据库索引缺点 建立索引效率低,只能建一个。

为什么要创建Oracle数据库索引呢?这是因为,创建索引可以大大提高系统的性能。第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。

第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。第四,在使用分组和排序子句进行数据检索时,同样可以显着减少查询中分组和排序的时间。第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

也许会有人要问:增加索引有如此多的优点,为什么不对表中的每一个列创建一个索引呢?这种想法固然有其合理性,然而也有其片面性。虽然,tb索引有许多优点,但是,为表中的每一个列都增加索引,是非常不明智的。这是因为,增加索引也有许多不利的一个方面。

第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

索引是建立在数据库表中的某些列的上面。因此,在创建Oracle数据库索引的时候,应该仔细考虑在哪些列上可以创建索引,在哪些列上不能创建索引。

一般来说,应该在这些列上创建索引,例如:在经常需要搜索的列上,可以加快搜索的速度;在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构;在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度;

在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的;在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间;在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。

同样,对于有些列不应该创建Oracle数据库索引。一般来说,不应该创建索引的的这些列具有下列特点:第一,对于那些在查询中很少使用或者参考的列不应该创建索引。这是因为,既然这些列很少使用到,因此有索引或者无索引,并不能提高查询速度。

相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求。第二,对于那些只有很少数据值的列也不应该增加索引。这是因为,由于这些列的取值很少,例如人事表的性别列,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大。

增加索引,并不能明显加快检索速度。第三,对于那些定义为text, image和bit数据类型的列不应该增加索引。这是因为,这些列的数据量要么相当大,要么取值很少。第四,当修改性能远远大于检索性能时,不应该创建索引。

这是因为,修改性能和检索性能是互相矛盾的。当增加索引时,会提高检索性能,但是会降低修改性能。当减少索引时,会提高修改性能,降低检索性能。因此,当修改性能远远大于检索性能时,不应该创建Oracle数据库索引。

posted @ 2012-06-30 22:51 chen11-1 阅读(1327) | 评论 (0)编辑 收藏

Oracle SQL执行缓慢的原因以及解决方案

以下的文章抓哟是对Oracle SQL执行缓慢的原因的分析,如果Oracle数据库中的某张表的相关数据已是2亿多时,同时此表也创建了相关的4个独立的相关索引。由于业务方面的需要,每天需分两次向此表中插入300万条记录。

 

由于数据量大,每次插入耗时3个小时以上,严重影响效率。

因此,修改了系统的算法,将此表中只存储当天新增记录。将此表truncate后,第二天执行对此表的update操作时,非常耗时。表中有2亿多条数据的时候,此Oracle sql语句耗时59秒;表中有300万条数据的时候,此Oracle sql语句耗时几个小时。

咨询DBA后,得出结论,需重建索引。重建后,6秒完成此操作。但第三天问题依然出现。DBA正在查找原因。难道每次truncate表,都需要重建tb索引?

对于这个问题,DBA也没有给出合理的解释,推测主要原因是Oracle复杂的查询优化算法。

最终,DBA给出的解决方案:


  1. truncate table ....  
  2. drop index.....  
  3. insert data .....  
  4. create index ...  
  5. analyze table table_name compute statistics;

 

重新生成统计数据

调整后,整个操作耗时非常少。 

以上的相关内容就是对Oracle SQL执行缓慢的分析的介绍,望你能有所收获。

 

posted @ 2012-06-30 22:46 chen11-1 阅读(926) | 评论 (0)编辑 收藏

强大SQL的日期格式化函数

Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06
Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16
Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06
Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06
Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06
Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06
Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06
Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46
Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM
Select CONVERT(varchar(100), GETDATE(), 10): 05-16-06
Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16
Select CONVERT(varchar(100), GETDATE(), 12): 060516
Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937
Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47
Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157
Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AMtb
Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47
Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250
Select CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 101): 05/16/2006
Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16
Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006
Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2006
Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2006
Select CONVERT(varchar(100), GETDATE(), 106): 16 05 2006
Select CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006
Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49
Select CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM
Select CONVERT(varchar(100), GETDATE(), 110): 05-16-2006
Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16
Select CONVERT(varchar(100), GETDATE(), 112): 20060516
Select CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513
Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49
Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700
Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827
Select CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM
Select CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM

posted @ 2012-06-29 13:46 chen11-1 阅读(798) | 评论 (0)编辑 收藏

SQL的内连接、外连接、左连接、右连接、全连接【转】

从两个或更多个表中组合数据的过程称为连接表。数据库管理程序从指定的表中形成行的所有组合。对于每个组合,它都测试连接条件。连接条件是带有一些约束的搜索条件。有关约束的列表,参考 SQL Reference。
  

  注意:连接条件涉及的列的数据类型不必相同;然而,这些数据类型必须相容。计算连接条件的方式与计算其他搜索条件的方式相同,并且使用相同的比较规则。
  
  如果未指定连接条件,则返回在 FROM 子句中列出的表中行的所有组合,即使这些行可能完全不相关。该结果称为这两个表的交叉积。
  
  本节中的示例基于下面两个表。这两个表只是样本数据库中表的简化形式,在样本数据库中并不存在。这tb两个表一般用来概述关于连接的重点。 SAMP_STAFF 列出未作为合同工雇用的雇员的姓名以及这些雇员的职务说明,而 SAMP_PROJECT 则列出雇员(合同工和全职人员)的姓名以及这些雇员所参与的项目。
  
  这些表如下:
  
  图 5. SAMP_PROJECT 表
  
   sql入门:连接(图一)
  
  图 6. SAMP_STAFF 表
  
   sql入门:连接(图二)
  
  下列示例产生两个表的交叉积。因未指定连接条件,所以给出了行的所有组合:
  
   SELECT SAMP_PROJECT.NAME,
      SAMP_PROJECT.PROJ, SAMP_STAFF.NAME, SAMP_STAFF.JOB
    FROM SAMP_PROJECT, SAMP_STAFF
  
  此语句产生下列结果:
  
   sql入门:连接(图三)
  
  两个主要的连接类型是内连接和外连接。到目前为止,所有示例中使用的都是内连接。tb内连接只保留交叉积中满足连接条件的那些行。如果某行在一个表中存在,但在另一个表中不存在,则结果表中不包括该信息。
  
  下列示例产生两个表的内连接。该内连接列出分配给某个项目的全职雇员信息:
  
   SELECT SAMP_PROJECT.NAME,
      SAMP_PROJECT.PROJ, SAMP_STAFF.NAME, SAMP_STAFF.JOB
    FROM SAMP_PROJECT, SAMP_STAFF
    WHERE SAMP_STAFF.NAME = SAMP_PROJECT.NAME
  
  或者,也可以指定如下内连接:
  
   SELECT SAMP_PROJECT.NAME,
      SAMP_PROJECT.PROJ, SAMP_STAFF.NAME, SAMP_STAFF.JOB
    FROM SAMP_PROJECT INNER JOIN SAMP_STAFF
     ON SAMP_STAFF.NAME = SAMP_PROJECT.NAME
  
  结果是:
  
   sql入门:连接(图四)
  
  注意:该内连接的结果由右表和左表中姓名列的值匹配的行组成- 'Haas' 和 'Thompson' 都包括在列出所有全职雇员的 SAMP_STAFF 表中以及列出分配给某个项目的专职和合同雇员的 SAMP_PROJECT 表中。
  
  外连接是内连接和左表和/或右表中未包括内连接中的那些行的并置。当对两个表执行外连接时,可任意将一个表指定为左表而将另一个表指定为右表。外连接有三种类型:
  
  
  左外连接包括内连接和左表中未包括在内连接中的那些行。
  
  右外连接包括内连接和右表中未包括在内连接中的那些行。
  
  全外连接包括内连接以及左表和右表中未包括在内连接中的行。
  使用 SELECT 语句来指定要显示的列。在 FROM 子句中,列出后跟关键字 LEFT OUTER JOIN、RIGHT OUTER JOIN 或 FULL OUTER JOIN 的第一个表的名称。接着需要指定后跟 ON 关键字的第二个表。在 ON 关键字后面,指定表示要连接的表之间关系的连接条件。
  
  在下列示例中,将 SAMP_STAFF 指定为右表,而 SAMP_PROJECT 则被指定为左表。通过使用 LEFT OUTER JOIN,列出所有全职和合同雇员(在 SAMP_PROJECT 中列出)的姓名和项目编号,如果是全职雇员(在 SAMP_STAFF 中列出),还列出这些雇员的职位:
  
   SELECT SAMP_PROJECT.NAME, SAMP_PROJECT.PROJ,
      SAMP_STAFF.NAME, SAMP_STAFF.JOB
    FROM SAMP_PROJECT LEFT OUTER JOIN SAMP_STAFF
     ON SAMP_STAFF.NAME = SAMP_PROJECT.NAME
  
  此语句产生下列结果:
  
   sql入门:连接(图五)
  
  所有列中都具有值的那些行是该内连接的结果。这些都是满足连接条件的行: 'Haas' 和 'Thompson' 既在 SAMP_PROJECT(左表)中列出又在 SAMP_STAFF(右表)中列出。对于不满足连接条件的行,右表的列上出现空值: 'Lutz' 和 'Walker' 都是在 SAMP_PROJECT 表中列出的合同雇员,因而未在 SAMP_STAFF 表中列出。注意:左表中的所有行都包括在结果集中。
  
  在下一个示例中,将 SAMP_STAFF 指定为右表而 SAMP_PROJECT 则被指定为左表。通过使用 RIGHT OUTER JOIN 列出所有专职雇员(在 SAMP_STAFF 中列出)的姓名和工作职位,如果将这些雇员分配给了某个项目(在 SAMP_PROJECT 中列出),还列出他们的项目编号:
  
   SELECT SAMP_PROJECT.NAME,
      SAMP_PROJECT.PROJ, SAMP_STAFF.NAME, SAMP_STAFF.JOB
    FROM SAMP_PROJECT RIGHT OUTER JOIN SAMP_STAFF
     ON SAMP_STAFF.NAME = SAMP_PROJECT.NAME
  
  结果为:
  
   sql入门:连接(图六)
  
  象在左外连接中一样,所有列中都具有值的那些行是内连接的结果。这些都是满足连接条件的行: 'Haas'和'Thompson'既在 SAMP_PROJECT(左表)中列出又在 SAMP_STAFF(右表)中列出。对于不满足连接条件的行,右表的列上出现空值: 'Lucchessi'和'Nicholls'都是未分配项目的专职雇员。虽然他们在 SAMP_STAFF 中列出,但未在 SAMP_PROJECT 中列出。注意:右表中的所有行都包括在结果集中。
  
  下一个示例对 SAMP_PROJECT 表和 SAMP_STAFF 表使用 FULL OUTER JOIN。该示例列出所有专职雇员(包括未分配项目的雇员)和合同雇员的姓名:
  
   SELECT SAMP_PROJECT.NAME, SAMP_PROJECT.PROJ,
      SAMP_STAFF.NAME, SAMP_STAFF.JOB
    FROM SAMP_PROJECT FULL OUTER JOIN SAMP_STAFF
     ON SAMP_STAFF.NAME = SAMP_PROJECT.NAME
  
  结果为:
  
  sql入门:连接(图七)
  
  此结果包括左外连接、右外连接以及内连接。列出所有专职雇员和合同雇员。正如左外连接和右外连接一样,对于不满足连接条件的值,相应列中出现空值。 SAMP_STAFF 和 SAMP_PROJECT 中的每一行都包括在结果集中。

SQL语句实例:
(1) 右连接

     select * from ry_jbxx, ry_rxzp where ry_jbxx.gmsfhm(+) = ry_rxzp.gmsfhm

     等价

     select * from ry_jbxx right OUTER JOIN ry_rxzp on ry_jbxx.gmsfhm = ry_rxzp.gmsfhm

(2) 左连接

      select * from ry_jbxx, ry_rxzp where ry_jbxx.gmsfhm = ry_rxzp.gmsfhm(+)

      等价

     select * from ry_jbxx LEFT OUTER JOIN ry_rxzp on ry_jbxx.gmsfhm = ry_rxzp.gmsfhm

posted @ 2012-06-29 13:44 chen11-1 阅读(4834) | 评论 (0)编辑 收藏

使用DOM解析XML文档

由于学习ajax要使用到xml,因此对xml文档的解析工作就变得相当的重要。可是我对xml文档中出现的各种术语很是模糊,今天花点时间整理一下这些概念。

    PS:概念待整理

    解析步骤:DOM(Document Object Model)--文档对象模型
    1、创建解析的XML文档文件对象
    2、声明一个DocumentBuilder对象,由于这个对象是一个抽象类,不能直接实例化,可以用过DocumentBuilderFactory对象来构建。
    3、声明一个DocumentBuilderFactory对象,通过单例模式创建
    4、取得DocumentBuilder实例
    5、通过DocumentBuilder对象的prase(File file)方法tb解析XML文档
    6、取得文档的根元素,通过调用Document的getDocumentElement()方法取得
    7、取得根元素后就可以通过递归遍历元素中的子元素,然后通过条件判断输出相对应的信息。

posted @ 2012-06-28 13:25 chen11-1 阅读(847) | 评论 (0)编辑 收藏

仅列出标题
共20页: First 上一页 12 13 14 15 16 17 18 19 20 下一页