美文网首页
mysql表连接

mysql表连接

作者: Fa1se003 | 来源:发表于2016-05-20 22:42 被阅读329次

当同时要现实多张表中的数据库时,可以会用表连接来完成这样的需求。从大类上分,表连接分为内连接和外连接,他们的区别主要是,内连接可以选出两张表中互相匹配的记录,外连接会选出其他不匹配的记录。我们最常用的是内连接。

学生表
mysql> select * from student;
+----+--------+-------+---------+
| id | name   | score | classid |
+----+--------+-------+---------+
|  1 | 张三   |    99 |       3 |
|  2 | 李四   |    60 |       2 |
|  3 | 王五   |    88 |       2 |
|  4 | 赵6    |    22 |       1 |
+----+--------+-------+---------+
4 rows in set (0.00 sec)

班级表
mysql> select * from class;
+---------+-----------+
| classid | classname |
+---------+-----------+
|       1 | 快班      |
|       2 | 慢班      |
|       3 | 中等班    |
+---------+-----------+
3 rows in set (0.00 sec)
查询出所有学生的名字,和他们所在的班级。
mysql> select name,classname from student ,class where student.classid=class.classid;
+--------+-----------+
| name   | classname |
+--------+-----------+
| 张三   | 中等班    |
| 李四   | 慢班      |
| 王五   | 慢班      |
| 赵6    | 快班      |
+--------+-----------+
4 rows in set (0.00 sec)

外连接又分为左连接右连接

左连接:包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录。
右连接:包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录。

学生表
mysql> select * from student;
+----+--------+-------+---------+
| id | name   | score | classid |
+----+--------+-------+---------+
|  1 | 张三   |    99 |       3 |
|  2 | 李四   |    60 |       2 |
|  3 | 王五   |    88 |       2 |
|  4 | 赵6    |    22 |       1 |
|  5 | 神童   |   100 |    NULL |
+----+--------+-------+---------+
5 rows in set (0.00 sec)

班级表
mysql> select * from class;
+---------+-----------+
| classid | classname |
+---------+-----------+
|       1 | 快班      |
|       2 | 慢班      |
|       3 | 中等班    |
+---------+-----------+
3 rows in set (0.00 sec)

查出学生表中所有学生名字和他们所在的班级
mysql> select s.name,c.classname from student as s left join class as c on s.classid=c.classid;
+--------+-----------+
| name   | classname |
+--------+-----------+
| 赵6    | 快班      |
| 李四   | 慢班      |
| 王五   | 慢班      |
| 张三   | 中等班    |
| 神童   | NULL      |
+--------+-----------+
5 rows in set (0.00 sec)

右连接和左连接类似,两者可以互相转化,用student表作为右表查询如下。
mysql> select s.name,c.classname from class as c right join student as s on s.classid=c.classid;
+--------+-----------+
| name   | classname |
+--------+-----------+
| 赵6    | 快班      |
| 李四   | 慢班      |
| 王五   | 慢班      |
| 张三   | 中等班    |
| 神童   | NULL      |
+--------+-----------+
5 rows in set (0.01 sec)

右连接,用班级表作为右表,查询结果则没有神童这条记录。
mysql> select s.name,c.classname from student as s right join class as c on s.classid=c.classid;
+--------+-----------+
| name   | classname |
+--------+-----------+
| 张三   | 中等班    |
| 李四   | 慢班      |
| 王五   | 慢班      |
| 赵6    | 快班      |
+--------+-----------+
4 rows in set (0.00 sec)

相关文章

  • MySQL+关联(下)

    飞谷云 MySQL 第3讲 MySQL+表连接(下) 一、MySQL+表连接(下) 1、内连接(inner joi...

  • MySQL 临时表

    临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。 使用PHP脚本来创建MySQL临时表...

  • Mysql 语句

    Mysql 语句 Mysql 语句以考察各种常用连接为重点 几种常见连接 内连接(INNER JOIN):两个表都...

  • MySQL 基本内容

    MySQL的基础 MySQL 数据类型 SQL mode 多表查询代价高一张表——>两个表——>需要连接连接 需要...

  • mysq临时表

    MySQL 临时表 MySQL 临时表在我们需要保存一些临时数据时是非常有用的。临时表只在当前连接可见,当关闭连接...

  • Mysql的连接

    Mysql内连接=等值连接就相当于求两个表的相同处表1 表2 内连接语法 实例 left join on以左表为主...

  • mysql表连接

    当同时要现实多张表中的数据库时,可以会用表连接来完成这样的需求。从大类上分,表连接分为内连接和外连接,他们的区别主...

  • mysql表连接

    MySQL连接两张表的方法 1、内连接 select Name,Rating from movie m,ratin...

  • MySQL 表连接

    内连接 MySQL中INNER JOIN表示一个表中的一行数据和另一个表中的数据进行匹配。简单来说就是想查两个表的...

  • MySQL 相关问题

    一.MySQL远程连接 有时候在进行MySQL远程连接时,需要开启远程访问权限。可以通过查询mysql.user表...

网友评论

      本文标题:mysql表连接

      本文链接:https://www.haomeiwen.com/subject/lcwnrttx.html