MySQL数据库多表查询
来源:互联网 发布:面试官面试技巧知乎 编辑:程序博客网 时间:2024/06/06 23:19
查询语法: 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)相交的部分。
总体来说,内连接显示两个表相交的部分。左外连接就是以左表为主,在内连接的基础上把左表的所有内容显示出来。右外链接就是以右表为主,在内连接的基础上把右表的所有内容显示出来。在执行命令时,那个表先写那个表就为左表。写在后面的表为右表。
- mysql数据库,多表查询
- MySQL数据库多表查询
- mysql 数据库多表查询
- MySQL数据库多表查询
- mysql数据库涉及多表查询
- 关于数据库mysql多表查询
- mysql学习(5)数据库多表查询
- MySQL数据库的多表查询
- mysql数据库多表查询实例
- day-19-数据库-MySQL-多表查询
- mysql数据库常用的查询语句(多表查询)
- MySQL数据库的复杂查询技术-多表查询
- MySQL不同表查询,不同数据库查询
- Mysql查询数据库表结构
- Mysql数据库单表查询
- 【Mysql】Mysql数据库查询“表空间”
- Linux shell实现MySQL数据库简单查询&&MySQL多表联合查询
- MySQL数据库中的多表数据记录查询
- 搜索框智能提示ajax
- kafka增加topic 的partitions数量
- Java 实例说明 &&和&的区别
- java.lang.ClassCastException: oracle.sql.CLOB cannot be cast to oracle.sql.CLOB
- Lambda表达式
- MySQL数据库多表查询
- 优化UITableViewCell高度计算的那些事
- Keil代码整体偏移和查找功能
- TestNG入门——注解之@Test
- LeetCode 6. ZigZag Conversion(Python)兼翻译
- oracle导入空间数据
- SELinux/SEAndroid 实例简述(一) 基础概念
- Direct3D---纹理映射
- nodejs+bigpipe+angularjs技术实现