开发者

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

开发者 https://www.devze.com 2022-12-22 09:08 出处:网络 作者: Olivia_Vang
目录SQL语句 用JOIN连接多个表SQL语句多表连接查询语法一、外连接二、内连接 三、交叉连接总结SQL语句 用JOIN连接多个表
目录
  • SQL语句 用JOIN连接多个表
  • SQL语句多表连接查询语法
    • 一、外连接
    • 二、内连接 
    • 三、交叉连接
  • 总结

    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语句多表连接查询语法

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

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

    一、外连接

    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 http://www.devze.comjoin 或 full outer join

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

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

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

    语法就是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 条件                              &nbpythonsp;           隐式连接使用别名:

    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

    举例:

    开发者_mssql2008

    三、交叉连接

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

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

    总结

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

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号