Here is a summary of difference between inner join and outer join:
http://stackoverflow.com/questions/38549/sql-difference-between-inner-and-outer-join
A Visual Explanation of SQL Joins – by Coding Horror.
有两个表,如下:
mysql> SELECT * FROM Class;
+———-+——–+
| Class_ID | Name |
+———-+——–+
| 1 | 2008A |
| 2 | 2008B |
| 3 | 2008C |
+———-+——–+
3 rows in set (0.00 sec)
mysql> SELECT * FROM Student;
+————+——-+———-+——— —-+
| Student_ID | Name | Class_ID | Student_Age |
+————+——-+———-+——- ——+
| 1 | Jack | 1 | NULL |
| 2 | Lucy | 0 | NULL |
| 3 | Join | 1 | NULL |
| 4 | Tom | 2 | NULL |
+————+——-+———-+————- +
4 rows in set (0.00 sec)
即: 有三个班级 分别为2008A, 2008B.,2008C 有4个学生 , 其中, Jack, Join为2008A班的学生,Tom为2008B班的学生, 而Lucy则不在任何班级中.
mysql> SELECT * FROM Student s INNER JOIN Class c ON s.Class_ID = c.Class_ID;
+————+——+———-+————-+———-+——-+
| Student_ID | Name | Class_ID | Student_Age | Class_ID | Name |
+————+——+———-+————-+———-+——-+
| 1 | jack | 1 | NULL | 1 | 2008A |
| 3 | Join | 1 | NULL | 1 | 2008A |
| 4 | Tom | 2 | NULL | 2 | 2008B |
+————+——+———-+————-+———-+——-+
3 rows in set (0.06 sec)
Left Outer Join:左外连接
mysql> SELECT * FROM Student s LEFT OUTER JOIN Class c ON s.Class_ID = c.Class_ID;
+————+——+———-+————-+———-+——-+
| Student_ID | Name | Class_ID | Student_Age | Class_ID | Name |
+————+——+———-+————-+———-+——-+
| 1 | jack | 1 | NULL | 1 | 2008A |
| 2 | Lucy | 0 | NULL | NULL | NULL |
| 3 | Join | 1 | NULL | 1 | 2008A |
| 4 | Tom | 2 | NULL | 2 | 2008B |
+————+——+———-+————-+———-+——-+
4 rows in set (0.00 sec)
Right Outer Join:右外连接
mysql> SELECT * FROM Student s RIGHT OUTER JOIN Class c ON s.Class_
+————+——+———-+————-+———-+——-+
| Student_ID | Name | Class_ID | Student_Age | Class_ID | Name |
+————+——+———-+————-+———-+——-+
| 1 | jack | 1 | NULL | 1 | 2008A |
| 3 | Join | 1 | NULL | 1 | 2008A |
| 4 | Tom | 2 | NULL | 2 | 2008B |
| NULL | NULL | NULL | NULL | 3 | 2008C |
+————+——+———-+————-+———-+——-+
4 rows in set (0.00 sec)
Full Outer Join:
// Proudly powered by Apache, PHP, MySQL, WordPress, Bootstrap, etc,.