查询语法:
SELECT * FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona
注:使用ON关键字来设定连接条件,使用WHERE关键字进行结果集记录的过滤
多表查询主要分为三类:
- INNER JOIN 内连接,取两个表中的共有部分。
- LEFT(OUTER)JOIN 左外连接,显示左表中的全部内容和与右表相交部分。
- RIGHT(OUTER)JOIN 右外连接,显示右表中的全部内容和与左表相交部分。
接下来给大家一个例子:
在一个数据库中建了两个表:
student(左表)
+----+--------+-------+------+
| id | name | score | tid |
+----+--------+-------+------+
| 1 | 张三 | 88 | 2 |
| 2 | 李四 | 99 | NULL |
| 3 | 王五 | 67 | 1 |
| 4 | 李狗蛋 | 44 | 3 |
| 5 | 萧炎 | 100 | 4 |
+----+--------+-------+------+
teacher(右表)
+----+--------+-----+
| id | name | sex |
+----+--------+-----+
| 1 | 王老师 | 男 |
| 2 | 张老师 | 男 |
| 3 | 李老师 | 女 |
| 4 | 赵老师 | 女 |
| 5 | 严老师 | 男 |
+----+--------+-----+
注:student.tid为外键和teacher中id对应。
通过内连接查询(INNER JOIN):
命令:
SELECT * FROM student INNER JOIN teacher ON student.tid=teacher.id;
结果:
+—-+——–+——-+—–+—-+——–+—–+
| id | name | score | tid | id | name | sex |
+—-+——–+——-+—–+—-+——–+—–+
| 1 | 张三 | 88 | 2 | 2 | 张老师 | 男 |
| 3 | 王五 | 67 | 1 | 1 | 王老师 | 男 |
| 4 | 李狗蛋 | 44 | 3 | 3 | 李老师 | 女 |
| 5 | 萧炎 | 100 | 4 | 4 | 赵老师 | 女 |
+—-+——–+——-+—–+—-+——–+—–+
通过左外连接查询(LEFT JOIN):
命令:
SELECT * FROM student LEFT JOIN teacher ON student.tid=teacher.id;
结果:
+—-+——–+——-+——+——+——–+——+
| id | name | score | tid | id | name | sex |
+—-+——–+——-+——+——+——–+——+
| 1 | 张三 | 88 | 2 | 2 | 张老师 | 男 |
| 2 | 李四 | 99 | NULL | NULL | NULL | NULL |
| 3 | 王五 | 67 | 1 | 1 | 王老师 | 男 |
| 4 | 李狗蛋 | 44 | 3 | 3 | 李老师 | 女 |
| 5 | 萧炎 | 100 | 4 | 4 | 赵老师 | 女 |
+—-+——–+——-+——+——+——–+——+
通过右外连接查询(RIGHT JOIN):
命令:
SELECT * FROM student RIGHT JOIN teacher ON student.tid=teacher.id;
结果:
+——+——–+——-+——+—-+——–+—–+
| id | name | score | tid | id | name | sex |
+——+——–+——-+——+—-+——–+—–+
| 3 | 王五 | 67 | 1 | 1 | 王老师 | 男 |
| 1 | 张三 | 88 | 2 | 2 | 张老师 | 男 |
| 4 | 李狗蛋 | 44 | 3 | 3 | 李老师 | 女 |
| 5 | 萧炎 | 100 | 4 | 4 | 赵老师 | 女 |
| NULL | NULL | NULL | NULL | 5 | 严老师 | 男 |
+——+——–+——-+——+—-+——–+—–+
“`注:查询结果为右表(teacher)的全部内容和右表(teacher)左表(student)相交的部分。
总体来说,内连接显示两个表相交的部分。左外连接就是以左表为主,在内连接的基础上把左表的所有内容显示出来。右外链接就是以右表为主,在内连接的基础上把右表的所有内容显示出来。在执行命令时,那个表先写那个表就为左表。写在后面的表为右表。
热点新闻
前端开发技术库