Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > SQL语句 用JOIN连接多个表

SQL语句之如何用JOIN连接多个表

作者:Olivia_Vang

这篇文章主要介绍了SQL语句之如何用JOIN连接多个表,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

SQL语句 用JOIN连接多个表

连接两个数据表的用法 :

SELECT * FROM actor INNER JOIN film_actor ON actor.actor_id = film_actor.actor_id ;

语法格式可以概括为:

FROM 表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号

连接三个数据表的用法:

SELECT * FROM (actor INNER JOIN film_actor ON actor.actor_id = film_actor.actor_id) INNER JOIN film ON film_actor.film_id = film.film_id;

语法格式可以概括为:

FROM (表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号

连接四个数据表的用法:

SELECT * FROM ((actor INNER JOIN film_actor ON actor.actor_id = film_actor.actor_id) INNER JOIN film ON film_actor.film_id = film.film_id) INNER JOIN film_category ON film_actor.film_id = film_category.film_id;

语法格式可以概括为:

FROM ((表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号) INNER JOIN 表4 ON Member.字段号=表4.字段号

还可以使用 USING

USING要求,负责连接的两个实体之间的字段名称一致。

建议是,在两个表中,有同名字段时,使用USING;而在通用条件时,使用ON。

SELECT * FROM actor INNER JOIN film_actor USING(actor_id);

语法格式概括为:

FROM 表1 INNER JOIN 表2 USING(同名字段名);

SQL语句多表连接查询语法

总结:内连接就是两个表的交集 ,左外连接就是左边表加两表交集 ,右外连接就是右边表加两表交集

一、外连接

1.左连接  left join 或 left outer join

SQL语句:select * from student left join score on student.Num=score.Stu_id;

2.右连接  right join 或 right outer join

SQL语句:select * from student right join score on student.Num=score.Stu_id;

3.完全外连接  full join 或 full outer join

SQL语句:select * from student full join score on student.Num=score.Stu_id;

通过上面这三种方法就可以把不同的表连接到一起,变成一张大表,之后的查询操作就简单一些了。

交叉连接查询,这种查询方式基本不会使用,原因就是这种查询方式得到的是两个表的乘积(笛卡儿集)

语法就是select * from a,b;则尽量不使用此语句,产生的结果过于繁琐。

内连接查询,可以有效的去除笛卡尔集现象

内连接查询分为两类:

二、内连接 

join 或 inner join

SQL语句:select * from student inner join score on student.Num=score.Stu_id;

此时的语句就相当于:select * from student,score where student.ID=course.ID;

内连接查询分为两类:

隐式内连接

select * from A,B where 条件                                          隐式连接使用别名:

select * from A 别名1,B 别名2 where 别名1.xx=别名2.xx;

显示内连接

select * from A inner join B on 条件 (inner可以省略)  显示连接使用别名:

select * from A 别名1 inner join B 别名2 on 别名1.xx=别名2.xx

举例:

三、交叉连接

cross join,没有where指定查询条件的子句的交叉联接将产生两表的笛卡尔积。

SQL语句:select * from student cross join score;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文