首页 > 学院 > 开发设计 > 正文

MySQL数据库多表查询

2019-11-08 20:55:18
字体:
来源:转载
供稿:网友

查询语法: 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):<div class="se-PReview-section-delimiter"></div>

命令: 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):<div class="se-preview-section-delimiter"></div>

命令: 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):<div class="se-preview-section-delimiter"></div>

命令: 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)相交的部分。

总体来说,内连接显示两个表相交的部分。左外连接就是以左表为主,在内连接的基础上把左表的所有内容显示出来。右外链接就是以右表为主,在内连接的基础上把右表的所有内容显示出来。在执行命令时,那个表先写那个表就为左表。写在后面的表为右表。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表