mysql中join用法解析
实例数据库如下:
student表:
mysql> select * from student;
+-----------+-----------+------+------+-------+
| sno       | sname     | ssex | sage | sdept |
+-----------+-----------+------+------+-------+
| 201215121 | 李勇      | 男   |   22 | cs    |
| 201215122 | 刘晨      | 女   |   19 | cs    |
| 201215123 | 王敏      | 女   |   18 | ma    |
| 201215125 | 张立      | 男   |   19 | is    |
| 201215128 | 陈冬      | 男   |   18 | is    |
| 201215126 | 张成民    | 男   |   18 | cs    |
+-----------+-----------+------+------+-------+6 rows in set (0.00 sec)
sc表:
mysql> select * from sc;
+-----------+------+-------+
| sno       | cno  | grade |
+-----------+------+-------+
| 201215121 |    1 |    92 |
| 201215121 |    2 |    85 |
| 201215121 |    3 |    88 |
| 201215122 |    2 |    90 |
| 201215122 |    3 |    80 |
| 201215128 |    1 |    78 |
+-----------+------+-------+6 rows in set (0.00 sec)
left join(左连接)
sql语句如下:
select * from student left join sc on student.sno=sc.sno;
运行结果如下:
+-----------+-----------+------+------+-------+-----------+------+-------+
| sno       | sname     | ssex | sage | sdept | sno       | cno  | grade |
+-----------+-----------+------+------+-------+-----------+------+-------+
| 201215121 | 李勇      | 男   |   22 | cs    | 201215121 |    1 |    92 |
| 201215121 | 李勇      | 男   |   22 | cs    | 201215121 |    2 |    85 |
| 201215121 | 李勇      | 男   |   22 | cs    | 201215121 |    3 |    88 |
| 201215122 | 刘晨      | 女   |   19 | cs    | 201215122 |    2 |    90 |
| 201215122 | 刘晨      | 女   |   19 | cs    | 201215122 |    3 |    80 |
| 201215128 | 陈冬      | 男   |   18 | is    | 201215128 |    1 |    78 |
| 201215123 | 王敏      | 女   |   18 | ma    |      null | null |  null |
| 201215125 | 张立      | 男   |   19 | is    |      null | null |  null |
| 201215126 | 张成民    | 男   |   18 | cs    |      null | null |  null |
+-----------+-----------+------+------+-------+-----------+------+-------+
在此例中left join 是以student表中的记录为基础,student表可以看成左表,sc表可以看成右表,左表中的记录会完全显示出来,加上匹配到的右表,如果左边没有匹配到,则其余部分显示为null。
using字句using字句和on字句,类似,但结果略有不同。
例如:
mysql> select student.sno,sname,grade from student left join sc on student.sno=sc.sno;
+-----------+-----------+-------+
| sno       | sname     | grade |
+-----------+-----------+-------+
| 201215121 | 李勇      |    92 |
| 201215121 | 李勇      |    85 |
| 201215121 | 李勇      |    88 |
| 201215122 | 刘晨      |    90 |
| 201215122 | 刘晨      |    80 |
| 201215128 | 陈冬      |    78 |
| 201215123 | 王敏      |  null |
| 201215125 | 张立      |  null |
| 201215126 | 张成民    |  null |
+-----------+-----------+-------+
9 rows in set (0.00 sec)
以上等价于
select sno,sname,grade from student left join sc using(sno);
+-----------+-----------+-------+
| sno       | sname     | grade |
+-----------+-----------+-------+
| 201215121 | 李勇      |    92 |
| 201215121 | 李勇      |    85 |
| 201215121 | 李勇      |    88 |
| 201215122 | 刘晨      |    90 |
| 201215122 | 刘晨      |    80 |
| 201215128 | 陈冬      |    78 |
| 201215123 | 王敏      |  null |
| 201215125 | 张立      |  null |
| 201215126 | 张成民    |  null |
+-----------+-----------+-------+
不同的地方,例如:
select * from student left join sc on student.sno=sc.sno;
+-----------+-----------+------+------+-------+-----------+------+-------+
| sno       | sname     | ssex | sage | sdept | sno       | cno  | grade |
+-----------+-----------+------+------+-------+-----------+------+-------+
| 201215121 | 李勇      | 男   |   22 | cs    | 201215121 |    1 |    92 |
| 201215121 | 李勇      | 男   |   22 | cs    | 201215121 |    2 |    85 |
| 201215121 | 李勇      | 男   |   22 | cs    | 201215121 |    3 |    88 |
| 201215122 | 刘晨      | 女   |   19 | cs    | 201215122 |    2 |    90 |
| 201215122 | 刘晨      | 女   |   19 | cs    | 201215122 |    3 |    80 |
| 201215128 | 陈冬      | 男   |   18 | is    | 201215128 |    1 |    78 |
| 201215123 | 王敏      | 女   |   18 | ma    |      null | null |  null |
| 201215125 | 张立      | 男   |   19 | is    |      null | null |  null |
| 201215126 | 张成民    | 男   |   18 | cs    |      null | null |  null |
+-----------+-----------+------+------+-------+-----------+------+-------+
select * from student left join sc using (sno);
+-----------+-----------+------+------+-------+------+-------+
| sno       | sname     | ssex | sage | sdept | cno  | grade |
+-----------+-----------+------+------+-------+------+-------+
| 201215121 | 李勇      | 男   |   22 | cs    |    1 |    92 |
| 201215121 | 李勇      | 男   |   22 | cs    |    2 |    85 |
| 201215121 | 李勇      | 男   |   22 | cs    |    3 |    88 |
| 201215122 | 刘晨      | 女   |   19 | cs    |    2 |    90 |
| 201215122 | 刘晨      | 女   |   19 | cs    |    3 |    80 |
| 201215128 | 陈冬      | 男   |   18 | is    |    1 |    78 |
| 201215123 | 王敏      | 女   |   18 | ma    | null |  null |
| 201215125 | 张立      | 男   |   19 | is    | null |  null |
| 201215126 | 张成民    | 男   |   18 | cs    | null |  null |
+-----------+-----------+------+------+-------+------+-------+
重复的sno列,如果用on字句会被输出两次
right join(右连接)同left join,只不过以右表为基础,例如:
select * from student right join sc using (sno);
+-----------+------+-------+--------+------+------+-------+
| sno       | cno  | grade | sname  | ssex | sage | sdept |
+-----------+------+-------+--------+------+------+-------+
| 201215121 |    1 |    92 | 李勇   | 男   |   22 | cs    |
| 201215121 |    2 |    85 | 李勇   | 男   |   22 | cs    |
| 201215121 |    3 |    88 | 李勇   | 男   |   22 | cs    |
| 201215122 |    2 |    90 | 刘晨   | 女   |   19 | cs    |
| 201215122 |    3 |    80 | 刘晨   | 女   |   19 | cs    |
| 201215128 |    1 |    78 | 陈冬   | 男   |   18 | is    |
+-----------+------+-------+--------+------+------+-------+
inner join(相等连接或内连接)
不会显示以谁为基础,只会显示符合条件的记录
select * from student inner join sc on student.sno=sc.sno;
+-----------+--------+------+------+-------+-----------+------+-------+
| sno       | sname  | ssex | sage | sdept | sno       | cno  | grade |
+-----------+--------+------+------+-------+-----------+------+-------+
| 201215121 | 李勇   | 男   |   22 | cs    | 201215121 |    1 |    92 |
| 201215121 | 李勇   | 男   |   22 | cs    | 201215121 |    2 |    85 |
| 201215121 | 李勇   | 男   |   22 | cs    | 201215121 |    3 |    88 |
| 201215122 | 刘晨   | 女   |   19 | cs    | 201215122 |    2 |    90 |
| 201215122 | 刘晨   | 女   |   19 | cs    | 201215122 |    3 |    80 |
| 201215128 | 陈冬   | 男   |   18 | is    | 201215128 |    1 |    78 |
+-----------+--------+------+------+-------+-----------+------+-------+
以上语句等同于:
select * from student,sc where student.sno=sc.sno;
+-----------+--------+------+------+-------+-----------+------+-------+
| sno       | sname  | ssex | sage | sdept | sno       | cno  | grade |
+-----------+--------+------+------+-------+-----------+------+-------+
| 201215121 | 李勇   | 男   |   22 | cs    | 201215121 |    1 |    92 |
| 201215121 | 李勇   | 男   |   22 | cs    | 201215121 |    2 |    85 |
| 201215121 | 李勇   | 男   |   22 | cs    | 201215121 |    3 |    88 |
| 201215122 | 刘晨   | 女   |   19 | cs    | 201215122 |    2 |    90 |
| 201215122 | 刘晨   | 女   |   19 | cs    | 201215122 |    3 |    80 |
| 201215128 | 陈冬   | 男   |   18 | is    | 201215128 |    1 |    78 |
+-----------+--------+------+------+-------+-----------+------+-------+
扩展如果只想从a表中取出一些记录,但不包含b表
可以在left join 后面加上一个where语句
select * from student left join sc using(sno) where sc.sno is null;
+-----------+-----------+------+------+-------+------+-------+
| sno       | sname     | ssex | sage | sdept | cno  | grade |
+-----------+-----------+------+------+-------+------+-------+
| 201215123 | 王敏      | 女   |   18 | ma    | null |  null |
| 201215125 | 张立      | 男   |   19 | is    | null |  null |
| 201215126 | 张成民    | 男   |   18 | cs    | null |  null |
+-----------+-----------+------+------+-------+------+-------+
求差集
可以结合union字句,由于本例中,右侧的已经全部对应的所以显示结果,和上一个一致。
select * from student left join sc using(sno) where student.sno is null union 
select * from student left join sc using(sno) where sc.sno is null;
+-----------+-----------+------+------+-------+------+-------+
| sno       | sname     | ssex | sage | sdept | cno  | grade |
+-----------+-----------+------+------+-------+------+-------+
| 201215123 | 王敏      | 女   |   18 | ma    | null |  null |
| 201215125 | 张立      | 男   |   19 | is    | null |  null |
| 201215126 | 张成民    | 男   |   18 | cs    | null |  null |
+-----------+-----------+------+------+-------+------+-------+
full join
select * from student left join sc on student.sno=sc.sno union  select * from student right join sc on student.sno=sc.sno;
+-----------+-----------+------+------+-------+-----------+------+-------+
| sno       | sname     | ssex | sage | sdept | sno       | cno  | grade |
+-----------+-----------+------+------+-------+-----------+------+-------+
| 201215121 | 李勇      | 男   |   22 | cs    | 201215121 |    1 |    92 |
| 201215121 | 李勇      | 男   |   22 | cs    | 201215121 |    2 |    85 |
| 201215121 | 李勇      | 男   |   22 | cs    | 201215121 |    3 |    88 |
| 201215122 | 刘晨      | 女   |   19 | cs    | 201215122 |    2 |    90 |
| 201215122 | 刘晨      | 女   |   19 | cs    | 201215122 |    3 |    80 |
| 201215128 | 陈冬      | 男   |   18 | is    | 201215128 |    1 |    78 |
| 201215123 | 王敏      | 女   |   18 | ma    |      null | null |  null |
| 201215125 | 张立      | 男   |   19 | is    |      null | null |  null |
| 201215126 | 张成民    | 男   |   18 | cs    |      null | null |  null |
+-----------+-----------+------+------+-------+-----------+------+-------+
注:a left join b 等同于 b right join a
mysql> select * from student left join sc using(sno);
+-----------+-----------+------+------+-------+------+-------+
| sno       | sname     | ssex | sage | sdept | cno  | grade |
+-----------+-----------+------+------+-------+------+-------+
| 201215121 | 李勇      | 男   |   22 | cs    |    1 |    92 |
| 201215121 | 李勇      | 男   |   22 | cs    |    2 |    85 |
| 201215121 | 李勇      | 男   |   22 | cs    |    3 |    88 |
| 201215122 | 刘晨      | 女   |   19 | cs    |    2 |    90 |
| 201215122 | 刘晨      | 女   |   19 | cs    |    3 |    80 |
| 201215128 | 陈冬      | 男   |   18 | is    |    1 |    78 |
| 201215123 | 王敏      | 女   |   18 | ma    | null |  null |
| 201215125 | 张立      | 男   |   19 | is    | null |  null |
| 201215126 | 张成民    | 男   |   18 | cs    | null |  null |
+-----------+-----------+------+------+-------+------+-------+
9 rows in set (0.00 sec)mysql> select * from sc right join student using(sno);
+-----------+-----------+------+------+-------+------+-------+
| sno       | sname     | ssex | sage | sdept | cno  | grade |
+-----------+-----------+------+------+-------+------+-------+
| 201215121 | 李勇      | 男   |   22 | cs    |    1 |    92 |
| 201215121 | 李勇      | 男   |   22 | cs    |    2 |    85 |
| 201215121 | 李勇      | 男   |   22 | cs    |    3 |    88 |
| 201215122 | 刘晨      | 女   |   19 | cs    |    2 |    90 |
| 201215122 | 刘晨      | 女   |   19 | cs    |    3 |    80 |
| 201215128 | 陈冬      | 男   |   18 | is    |    1 |    78 |
| 201215123 | 王敏      | 女   |   18 | ma    | null |  null |
| 201215125 | 张立      | 男   |   19 | is    | null |  null |
| 201215126 | 张成民    | 男   |   18 | cs    | null |  null |
+-----------+-----------+------+------+-------+------+-------+
mysql中join用法解析实例数据库如下:
student表:
mysql> select * from student;
+-----------+-----------+------+------+-------+
| sno       | sname     | ssex | sage | sdept |
+-----------+-----------+------+------+-------+
| 201215121 | 李勇      | 男   |   22 | cs    |
| 201215122 | 刘晨      | 女   |   19 | cs    |
| 201215123 | 王敏      | 女   |   18 | ma    |
| 201215125 | 张立      | 男   |   19 | is    |
| 201215128 | 陈冬      | 男   |   18 | is    |
| 201215126 | 张成民    | 男   |   18 | cs    |
+-----------+-----------+------+------+-------+
6 rows in set (0.00 sec)
sc表:
mysql> select * from sc;
+-----------+------+-------+
| sno       | cno  | grade |
+-----------+------+-------+
| 201215121 |    1 |    92 |
| 201215121 |    2 |    85 |
| 201215121 |    3 |    88 |
| 201215122 |    2 |    90 |
| 201215122 |    3 |    80 |
| 201215128 |    1 |    78 |
+-----------+------+-------+
6 rows in set (0.00 sec)
left join(左连接)
sql语句如下:
select * from student left join sc on student.sno=sc.sno;
运行结果如下:
+-----------+-----------+------+------+-------+-----------+------+-------+
| sno       | sname     | ssex | sage | sdept | sno       | cno  | grade |
+-----------+-----------+------+------+-------+-----------+------+-------+
| 201215121 | 李勇      | 男   |   22 | cs    | 201215121 |    1 |    92 |
| 201215121 | 李勇      | 男   |   22 | cs    | 201215121 |    2 |    85 |
| 201215121 | 李勇      | 男   |   22 | cs    | 201215121 |    3 |    88 |
| 201215122 | 刘晨      | 女   |   19 | cs    | 201215122 |    2 |    90 |
| 201215122 | 刘晨      | 女   |   19 | cs    | 201215122 |    3 |    80 |
| 201215128 | 陈冬      | 男   |   18 | is    | 201215128 |    1 |    78 |
| 201215123 | 王敏      | 女   |   18 | ma    |      null | null |  null |
| 201215125 | 张立      | 男   |   19 | is    |      null | null |  null |
| 201215126 | 张成民    | 男   |   18 | cs    |      null | null |  null |
+-----------+-----------+------+------+-------+-----------+------+-------+
在此例中left join 是以student表中的记录为基础,student表可以看成左表,sc表可以看成右表,左表中的记录会完全显示出来,加上匹配到的右表,如果左边没有匹配到,则其余部分显示为null。
using字句using字句和on字句,类似,但结果略有不同。
例如:
mysql> select student.sno,sname,grade from student left join sc on student.sno=sc.sno;
+-----------+-----------+-------+| sno       | sname     | grade |
+-----------+-----------+-------+| 201215121 | 李勇      |    92 |
| 201215121 | 李勇      |    85 |
| 201215121 | 李勇      |    88 |
| 201215122 | 刘晨      |    90 |
| 201215122 | 刘晨      |    80 |
| 201215128 | 陈冬      |    78 |
| 201215123 | 王敏      |  null |
| 201215125 | 张立      |  null || 201215126 | 张成民    |  null |
+-----------+-----------+-------+9 rows in set (0.00 sec)
以上等价于
select sno,sname,grade from student left join sc using(sno);
+-----------+-----------+-------+| sno       | sname     | grade |
+-----------+-----------+-------+| 201215121 | 李勇      |    92 |
| 201215121 | 李勇      |    85 |
| 201215121 | 李勇      |    88 |
| 201215122 | 刘晨      |    90 |
| 201215122 | 刘晨      |    80 |
| 201215128 | 陈冬      |    78 |
| 201215123 | 王敏      |  null |
| 201215125 | 张立      |  null || 201215126 | 张成民    |  null |
+-----------+-----------+-------+
不同的地方,例如:
select * from student left join sc on student.sno=sc.sno;
+-----------+-----------+------+------+-------+-----------+------+-------+
| sno       | sname     | ssex | sage | sdept | sno       | cno  | grade |
+-----------+-----------+------+------+-------+-----------+------+-------+
| 201215121 | 李勇      | 男   |   22 | cs    | 201215121 |    1 |    92 |
| 201215121 | 李勇      | 男   |   22 | cs    | 201215121 |    2 |    85 |
| 201215121 | 李勇      | 男   |   22 | cs    | 201215121 |    3 |    88 |
| 201215122 | 刘晨      | 女   |   19 | cs    | 201215122 |    2 |    90 |
| 201215122 | 刘晨      | 女   |   19 | cs    | 201215122 |    3 |    80 |
| 201215128 | 陈冬      | 男   |   18 | is    | 201215128 |    1 |    78 |
| 201215123 | 王敏      | 女   |   18 | ma    |      null | null |  null |
| 201215125 | 张立      | 男   |   19 | is    |      null | null |  null |
| 201215126 | 张成民    | 男   |   18 | cs    |      null | null |  null |
+-----------+-----------+------+------+-------+-----------+------+-------+
select * from student left join sc using (sno);
+-----------+-----------+------+------+-------+------+-------+
| sno       | sname     | ssex | sage | sdept | cno  | grade |
+-----------+-----------+------+------+-------+------+-------+
| 201215121 | 李勇      | 男   |   22 | cs    |    1 |    92 |
| 201215121 | 李勇      | 男   |   22 | cs    |    2 |    85 |
| 201215121 | 李勇      | 男   |   22 | cs    |    3 |    88 |
| 201215122 | 刘晨      | 女   |   19 | cs    |    2 |    90 |
| 201215122 | 刘晨      | 女   |   19 | cs    |    3 |    80 |
| 201215128 | 陈冬      | 男   |   18 | is    |    1 |    78 |
| 201215123 | 王敏      | 女   |   18 | ma    | null |  null |
| 201215125 | 张立      | 男   |   19 | is    | null |  null |
| 201215126 | 张成民    | 男   |   18 | cs    | null |  null |
+-----------+-----------+------+------+-------+------+-------+
重复的sno列,如果用on字句会被输出两次
right join(右连接)同left join,只不过以右表为基础,例如:
select * from student right join sc using (sno);
+-----------+------+-------+--------+------+------+-------+
| sno       | cno  | grade | sname  | ssex | sage | sdept |
+-----------+------+-------+--------+------+------+-------+
| 201215121 |    1 |    92 | 李勇   | 男   |   22 | cs    |
| 201215121 |    2 |    85 | 李勇   | 男   |   22 | cs    |
| 201215121 |    3 |    88 | 李勇   | 男   |   22 | cs    |
| 201215122 |    2 |    90 | 刘晨   | 女   |   19 | cs    |
| 201215122 |    3 |    80 | 刘晨   | 女   |   19 | cs    |
| 201215128 |    1 |    78 | 陈冬   | 男   |   18 | is    |
+-----------+------+-------+--------+------+------+-------+
inner join(相等连接或内连接)
不会显示以谁为基础,只会显示符合条件的记录
select * from student inner join sc on student.sno=sc.sno;
+-----------+--------+------+------+-------+-----------+------+-------+
| sno       | sname  | ssex | sage | sdept | sno       | cno  | grade |
+-----------+--------+------+------+-------+-----------+------+-------+
| 201215121 | 李勇   | 男   |   22 | cs    | 201215121 |    1 |    92 |
| 201215121 | 李勇   | 男   |   22 | cs    | 201215121 |    2 |    85 |
| 201215121 | 李勇   | 男   |   22 | cs    | 201215121 |    3 |    88 |
| 201215122 | 刘晨   | 女   |   19 | cs    | 201215122 |    2 |    90 |
| 201215122 | 刘晨   | 女   |   19 | cs    | 201215122 |    3 |    80 |
| 201215128 | 陈冬   | 男   |   18 | is    | 201215128 |    1 |    78 |
+-----------+--------+------+------+-------+-----------+------+-------+
以上语句等同于:
select * from student,sc where student.sno=sc.sno;
+-----------+--------+------+------+-------+-----------+------+-------+
| sno       | sname  | ssex | sage | sdept | sno       | cno  | grade |
+-----------+--------+------+------+-------+-----------+------+-------+
| 201215121 | 李勇   | 男   |   22 | cs    | 201215121 |    1 |    92 |
| 201215121 | 李勇   | 男   |   22 | cs    | 201215121 |    2 |    85 |
| 201215121 | 李勇   | 男   |   22 | cs    | 201215121 |    3 |    88 |
| 201215122 | 刘晨   | 女   |   19 | cs    | 201215122 |    2 |    90 |
| 201215122 | 刘晨   | 女   |   19 | cs    | 201215122 |    3 |    80 |
| 201215128 | 陈冬   | 男   |   18 | is    | 201215128 |    1 |    78 |
+-----------+--------+------+------+-------+-----------+------+-------+
扩展如果只想从a表中取出一些记录,但不包含b表
可以在left join 后面加上一个where语句
select * from student left join sc using(sno) where sc.sno is null;
+-----------+-----------+------+------+-------+------+-------+
| sno       | sname     | ssex | sage | sdept | cno  | grade |
+-----------+-----------+------+------+-------+------+-------+
| 201215123 | 王敏      | 女   |   18 | ma    | null |  null |
| 201215125 | 张立      | 男   |   19 | is    | null |  null |
| 201215126 | 张成民    | 男   |   18 | cs    | null |  null |
+-----------+-----------+------+------+-------+------+-------+
求差集
可以结合union字句,由于本例中,右侧的已经全部对应的所以显示结果,和上一个一致。
select * from student left join sc using(sno) where student.sno is null union 
select * from student left join sc using(sno) where sc.sno is null;
+-----------+-----------+------+------+-------+------+-------+
| sno       | sname     | ssex | sage | sdept | cno  | grade |
+-----------+-----------+------+------+-------+------+-------+
| 201215123 | 王敏      | 女   |   18 | ma    | null |  null |
| 201215125 | 张立      | 男   |   19 | is    | null |  null |
| 201215126 | 张成民    | 男   |   18 | cs    | null |  null |
+-----------+-----------+------+------+-------+------+-------+
full join
select * from student left join sc on student.sno=sc.sno union  select * from student right join sc on student.sno=sc.sno;
+-----------+-----------+------+------+-------+-----------+------+-------+
| sno       | sname     | ssex | sage | sdept | sno       | cno  | grade |
+-----------+-----------+------+------+-------+-----------+------+-------+
| 201215121 | 李勇      | 男   |   22 | cs    | 201215121 |    1 |    92 |
| 201215121 | 李勇      | 男   |   22 | cs    | 201215121 |    2 |    85 |
| 201215121 | 李勇      | 男   |   22 | cs    | 201215121 |    3 |    88 |
| 201215122 | 刘晨      | 女   |   19 | cs    | 201215122 |    2 |    90 |
| 201215122 | 刘晨      | 女   |   19 | cs    | 201215122 |    3 |    80 |
| 201215128 | 陈冬      | 男   |   18 | is    | 201215128 |    1 |    78 |
| 201215123 | 王敏      | 女   |   18 | ma    |      null | null |  null |
| 201215125 | 张立      | 男   |   19 | is    |      null | null |  null |
| 201215126 | 张成民    | 男   |   18 | cs    |      null | null |  null |
+-----------+-----------+------+------+-------+-----------+------+-------+
注:a left join b 等同于 b right join a
mysql> select * from student left join sc using(sno);
+-----------+-----------+------+------+-------+------+-------+
| sno       | sname     | ssex | sage | sdept | cno  | grade |
+-----------+-----------+------+------+-------+------+-------+
| 201215121 | 李勇      | 男   |   22 | cs    |    1 |    92 |
| 201215121 | 李勇      | 男   |   22 | cs    |    2 |    85 |
| 201215121 | 李勇      | 男   |   22 | cs    |    3 |    88 |
| 201215122 | 刘晨      | 女   |   19 | cs    |    2 |    90 |
| 201215122 | 刘晨      | 女   |   19 | cs    |    3 |    80 |
| 201215128 | 陈冬      | 男   |   18 | is    |    1 |    78 |
| 201215123 | 王敏      | 女   |   18 | ma    | null |  null |
| 201215125 | 张立      | 男   |   19 | is    | null |  null |
| 201215126 | 张成民    | 男   |   18 | cs    | null |  null |
+-----------+-----------+------+------+-------+------+-------+
9 rows in set (0.00 sec)mysql> select * from sc right join student using(sno);
+-----------+-----------+------+------+-------+------+-------+
| sno       | sname     | ssex | sage | sdept | cno  | grade |
+-----------+-----------+------+------+-------+------+-------+
| 201215121 | 李勇      | 男   |   22 | cs    |    1 |    92 |
| 201215121 | 李勇      | 男   |   22 | cs    |    2 |    85 |
| 201215121 | 李勇      | 男   |   22 | cs    |    3 |    88 |
| 201215122 | 刘晨      | 女   |   19 | cs    |    2 |    90 |
| 201215122 | 刘晨      | 女   |   19 | cs    |    3 |    80 |
| 201215128 | 陈冬      | 男   |   18 | is    |    1 |    78 |
| 201215123 | 王敏      | 女   |   18 | ma    | null |  null |
| 201215125 | 张立      | 男   |   19 | is    | null |  null |
| 201215126 | 张成民    | 男   |   18 | cs    | null |  null |
+-----------+-----------+------+------+-------+------+-------+
以上就是mysql中join用法解析的内容。
   
 
   