SQL语句之如何用JOIN连接多个表
作者:Olivia_Vang
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;
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。