MySQL多表连接查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL多表连接查询相关的知识,希望对你有一定的参考价值。

mysql多表连接查询

多表连接查询:

 

create table class(

   cid int primary key auto_increment,

   cname varchar(20)

)default charset=‘utf8‘;

 

create tablr stu(

   sid int primary key auto_increment,

   sname varchar(20).

   cid int

);default charset=‘utf8‘;

 

    insert into class(name) values(‘一班‘);

    insert into class(name) values(‘二班‘);

    insert into class(name) values(‘三班‘);

    insert into class(name) values(‘四班‘);

 

    insert into class(name) values(‘张三‘,1);

    insert into class(name) values(‘李四‘,2);

    insert into class(name) values(‘王五‘,2);

    insert into class(name) values(‘杨六‘,3);

    insert into class(name) values(‘赵七‘,5);

    insert into class(name) values(‘周八‘,6);

 

    select * from class;

    select * from stu;

 

 

-------------------------------------

    交叉连接:--没有任何条件,只需要将多张表的所有数据排列显示出来

select * from class,stu;

 

    内连接:建立在两张或多张表之间,存在数据的关联关系

inner join

 

    select * from 表A INNER JOIN 表B on 连接条件;

    等价于

    select * from 表A,表B where 表A.字段=表B.字段;

 

两张表:

select * from class INNER JOIN stu ON class.cid=stu.cid;

 

select * from class,stu, 表C WHERE class.cid=stu.cid AND 表A.字段=表C.字段;

 

三张表:

select * from student s,course c,score sc WHERE s.sid=sc.sid AND c.cid=sc.cid;

 

外连接:

左外连接 LEFT JOIN / LEFT OUTER JOIN

右外连接 RIGHT JOIN / RIGHT OUTER JOIN

 

外连接:左表或右表作为主表的情况下,主表的全部内容都会显示,而另一张表没有对应的数据则会补null

 

select * from class c LEFT JOIN stu s ON c.cid=s.cid;

select * from class c RIGHT JOIN stu s ON c.cid=s.cid;

以上是关于MySQL多表连接查询的主要内容,如果未能解决你的问题,请参考以下文章

MySQL数据库多表查询

MySQL数据库多表查询

TypeORM 无关联关系的mysql多表连接查询

MySQL学习10 - 多表查询

MySQL 基础 -- 多表关系(一对一1对多(多对一)多对多)多表查询(内连接外连接自连接子查询(嵌套查询)联合查询 union)笛卡儿积

MySQL多表连接查询