介绍一下mysql中查询的重中之重,连接查询
 
创建student和teacher表,表中数据如下:
 
| student |  | 
| teacher |  | 
交叉连接查询
 
查询结果是连接的几个表中满足条件的相关联的数据的交集
 
| sql | SELECT s.id sid, s.name sname , t.id tid ,t.name tname FROM student s ,(或者将逗号去掉使用CROSS JOIN) teacher t  WHERE  s.name = t.name
   | 
| 结果 |  | 
 
 
内连接查询
 
将连接的几个表中满足条件的数据的交集查询出来,同上
 
| sql | SELECT s.id sid, s.name sname , t.id tid ,t.name tname FROM student s INNER JOIN teacher t ON  s.name = t.name
   | 
| 结果 |  | 
 
 
左外连接查询
 
将连接的左表中满足条件(where后边的数据)的全部数据和右表中满足连接条件(on后边的条件)的数据查询出来,如果在右表中没有满足连接条件的数据则以NULL值代替,右连接同理
 
| sql | SELECT s.id sid, s.name sname , t.id tid ,t.name tname FROM student s LEFT JOIN teacher t ON  s.name = t.name
   | 
| 结果 |  | 
 
 
右外连接查询
 
| sql | SELECT s.id sid, s.name sname , t.id tid ,t.name tname FROM student s RIGHT JOIN teacher t ON  s.name = t.name
   | 
| 结果 | 
 | 
 
 
分析
 
由于未进行任何优化处理,使用explain来分析以上sql时,结果如下:
 

 
使用连接查询时,一定要注意连接条件一定要添加,不然容易造成大量冗余数据出现