| 
	测试表用户表user: 
	 
	测试表密码表pwd: 
	 
	1、创建user表: 
	2、创建pwd表:
		
			  
			
				
					| 
							1 
							2 
							3 
							4 
							5 
							6 | 
							
								CREATE TABLE `user` ( 
								  `id` int(11) NOT NULL auto_increment, 
								  `name` varchar(255) default NULL, 
								  `password` varchar(255) default NULL, 
								  PRIMARY KEY  (`id`) 
								) ENGINE=InnoDB DEFAULT CHARSET=utf8; |  
	
		
			? 
			
				
					| 
							1 
							2 
							3 
							4 
							5 
							6 | 
							
								CREATE TABLE `pwd` ( 
								  `id` int(11) NOT NULL auto_increment, 
								  `userid` int(11) default NULL, 
								  `passwd` varchar(255) default NULL, 
								  PRIMARY KEY  (`id`) 
								) ENGINE=InnoDB DEFAULT CHARSET=utf8; |  
	3、使用inner join 将pwd表中的passwd填入到user表中的password列(根据userid),SQL语句: 
	  
	4、 left join(左联接) 查询user中的信息
		
			
				
					| 
							1 
							2 
							3 
							4 | 
							
								UPDATE `user` U 
								INNER JOIN `pwd` P 
								ON P.userid=U.id 
								SET U.password = P.passwd; |  
	  
	结果:
		
			  
			
				
					| 
							1 
							2 
							3 | 
							
								SELECT us.*,pw.* FROM `user` us  
								LEFT JOIN pwd pw 
								ON pw.userid=us.id; |  
	 
	说明: left join是以User表的记录为基础的,User可以看成左表,pwd可以看成右表,left join是以左表为准的.
 换句话说,左表(User)的记录将会全部表示出来,而右表(pwd)只会显示符合搜索条件的记录(例子中为: pw.userid=us.id).
 B表记录不足的地方均为NULL.
 
	5、left join(左联接) 查询pwd中的信息 
	  
	结果:
		
			
				
					| 
							1 
							2 
							3 | 
							
								SELECT us.*,pw.* FROM `user` us  
								RIGHT JOIN pwd pw 
								ON pw.userid=us.id; |  
	 
	说明: 
	和left join的结果刚好相反,这次是以右表(pwd)为基础的,user表不足的地方用NULL填充. 
 
 
 
 
	6、inner join(相等联接或内联接)  
	  
	结果:
		
			  
			
				
					| 
							1 
							2 
							3 | 
							
								SELECT us.*,pw.* FROM `user` us  
								inner JOIN pwd pw 
								ON pw.userid=us.id; |  
	 
	说明: 
	很明显,这里只显示出了 pw.userid=us.id的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.  
 (责任编辑:IT)
 |