今天又有小进步,^_^!
         来源:赛迪网    作者:Alizze
		
				
				
		
		
				
						
				
		
		关联在Oracle数据查询时会经常用到,灵活的应用关联可以解决很多实际应用的问题.下面给出一些示例: 
		
		
		
				建表
		
		
		
		
				
				
				
						
								
										
												
														create table ab ( ab_id  number(5), ab_name varchar2(30) );
  create table bb ( bb_id  number(5), bb_name varchar2(30) );
												 
										 | 
								
						
				
		
		
		
		
		
		
				插入数据
		
		
		
		
				
				
				
						
								
										
												
														insert into ab(ab_id,ab_name) values(1,'1ab_name'); insert into ab(ab_id,ab_name) values(2,'2ab_name'); insert into ab(ab_id,ab_name) values(3,'3ab_name');
  insert into bb(bb_id,bb_name) values(1,'1bb_name'); insert into bb(bb_id,bb_name) values(2,'2bb_name'); insert into bb(bb_id,bb_name) values(4,'4bb_name'); insert into bb(bb_id,bb_name) values(6,'6bb_name');
												 
										 | 
								
						
				
		
		
				等值关联(全关联)
		
		
				
				
				
						
								
										
												
														select a.ab_id,a.ab_name,b.bb_name from ab a,               bb b where a.ab_id=b.bb_id;
												 
										 | 
								
						
				
		
		
				返回结果
		
		
				
				
				
						
								
										
												
														AB_ID AB_NAME BB_NAME 1 1ab_name 1bb_name 2 2ab_name 2bb_name
												 
										 | 
								
						
				
		
		
		
		返回两个表中所有能匹配的记录,不能匹配的记录不返回。 
		
				左关联
		
		
				
				
				
						
								
										
												
														select ab_id,ab_name, bb_name  from ab a left join  bb b on a.ab_id=b.bb_id; 同 select ab_id,ab_name, bb_name  from ab a , bb b where a.ab_id=b.bb_id(+);
												 
										 | 
								
						
				
		
		
				返回结果
		
		
				
				
				
						
								
										
												
														AB_ID AB_NAME BB_NAME 1 1ab_name 1bb_name 2 2ab_name 2bb_name 3 3ab_name
												 
										 | 
								
						
				
		
		返回左边表的左右记录,在右边表中没有对应记录的右表字段显示为空。 
		
				右关联
		
		
				
				
				
						
								
										
												
														select ab_id,ab_name, bb_name  from ab a right join  bb b on a.ab_id=b.bb_id; 同 select ab_id,ab_name, bb_name  from ab a , bb b where a.ab_id(+)=b.bb_id;
												 
										 | 
								
						
				
		
		
				返回结果:
		
		
				
				
				
						
								
										
												
														AB_ID AB_NAME BB_NAME 1 1ab_name 1bb_name 2 2ab_name 2bb_name 4bb_name 6bb_name
												 
										 | 
								
						
				
		
		返回右边表中所有的记录,在右边表不能匹配的记录行上,左边表对应的字段显示为空。 
		
				完全外关联
		
		
				
				
				
						
								
										
												
														select ab_id,ab_name, bb_name  from ab a full join  bb b on a.ab_id=b.bb_id;
												 
										 | 
								
						
				
		
		
				返回结果
		
		
				
				
				
						
								
										
												
														AB_ID AB_NAME BB_NAME 1 1ab_name 1bb_name 2 2ab_name 2bb_name 3 3ab_name  6bb_name 4bb_name
												 
										 | 
								
						
				
		
		
		
		返回两个表所有的结果,如果在关联条件上没有对应的记录,那么将在该列上显示为空。 
		
		
		全关联返回的结果集范围最小。完全外关联返回的结果范围最大,是否左关联和右关联并集;全关联是左关联和右关联的交集。
	posted on 2008-03-18 15:32 
Tiger1102 阅读(333) 
评论(0)  编辑  收藏  所属分类: 
每日进阶