mysql数据库7种_Mysql的7种join解析

Mysql的7种join,各种项目中,数据库经常用到,也是必不可少的,数据库查询中经常使用到两个表之间的查询甚至是多表之间的查询,以下列举了mysql的7种join语句。

建表语句

建两个表,有外键相关联的表。

create table user

(

id int primary key,

name char(11)

)engine=innodb;

create table role

(

rid int primary key,

rname char(11),

uid int,

constraint foreign key (uid) references user(id)

)engine=innodb;

insert into user values(1,'xiaohai');

insert into user values(2,'xiaolan');

insert into user values(3,'xiaoxiao');

insert into user values(4,'xiaolong');

insert into user values(5,'xiaolei');

insert into role values(1,'admin',1);

insert into role values(2,'user',2);

insert into role values(3,'vip1',3);

insert into role values(4,'vip2',4);

insert into role(rid,rname) values(5,'admin');

1.文氏图左外连接

20180817092801397.png

SQL语句

select u.*,r.* from user u left join role r on u.id = r.uid ;

查询结果:

20180817092801403.png

2.文氏图右外连接

20180817092802409.png

SQL语句

select u.*,r.* from user u right join role r on u.id = r.uid ;

查询结果

20180817092802413.png

3.文氏图左连接

20180817092802415.png

SQL语句:去掉表A表B都有的,单独显示表A的元素

select u.*,r.* from user u left join role r on u.id = r.uid where r.rid is null;

查询结果

20180817092802419.png

4.文氏图右连接

20180817092802424.png

SQL语句

select u.*,r.* from user u right join role r on u.id = r.uid where u.id is null;

查询结果

20180817092802432.png

5.文氏图内连接

20180817092802436.png

sql语句

select u.*,r.* from user u inner join role r on u.id = r.uid;

查询结果

20180817092802444.png

6.全连接:oracle数据库有full join ...on语句,mysql没有。

20180817092803446.png

SQL语句

select u.*,r.* from user u left join role r on u.id = r.uid where r.rid is null

union

select u2.*,r2.* from user u2 right join role r2 on u2.id = r2.uid;

查询结果

20180817092803448.png

7.两张表中都没有出现的数据集:就是两张表各自独立的那部分数据集,没有相同部分的数据集。

文氏图

20180817092803451.png

SQL语句

select u.*,r.* from user u left join role r on u.id = r.uid where r.rid is null

union

select u2.*,r2.* from user u2 right join role r2 on u2.id = r2.uid where u2.id is null;

查询结果

20180817092803452.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值