mysql多表查询

一、通过select子句进行多表查询

准备两张表:一张users用户表,一张user_addr用户地址表,它们有共同的user_id

select 字段名 from 表1,表2... where 表1.字段=表2.字段 add其他查询条件

select addr_id,city,username,password
from users,user_addr 
where users.user_id=user_addr.user_id;

二、通过内连接inner join进行查询

select 字段名 from 表1 inner join 表2 on 表1.字段=表2.字段

select addr_id,city,username,password
from users
inner join user_addr
on users.user_id=user_addr.user_id;

三、通过外连接left join,left outer join,right join,right outer jion,union进行查询

  1. left join

    语法:select 字段名 from 表1 left join 表2 on 表1.字段=表2.字段

    select addr_id,city,username,password
    from users
    left join user_addr 
    on users.user_id=user_addr.user_id

  2. left outer join(相当于left join+[where表2.字段 is null])

    语法:select 字段名 from 表1 left join 表2 on 表1.字段=表2.字段 where 表2.字段is null

    select addr_id,city,username,password
    from users
    left join user_addr 
    on users.user_id=user_addr.user_id
    where user_addr is null

  3. right join

    语法:select 字段名 from 表1 right join 表2 on 表1.字段=表2.字段

    select addr_id,city,username,password
    from users
    right join user_addr 
    on users.user_id=user_addr.user_id

  4. right outer join(相当于right join+[where 表1.字段 is null])

    语法:select 字段名 from 表1 right join 表2 on 表1.字段=表2.字段 where 表1.字段is null

    select addr_id,city,username,password
    from users
    right join user_addr 
    on users.user_id=user_addr.user_id
    where users.user_id is null

  5. left join union right join

    语法:select 字段名 from 表1 left join 表2 on 表1.字段=表2.字段 union select 字段名 from 表1 right join 表2 on 表1.字段=表2.字段

    select addr_id,city,username,password
    from users
    left join user_addr 
    on users.user_id=user_addr.user_id
    union
    select addr_id,city,username,password
    from users
    right join user_addr 
    on users.user_id=user_addr.user_id

四、结果展示

两张备用表

select子句多表查询及内连接

 左连接

右连接

  union

两表数据查询

 准备表a、b

添加测试数据

b表

a表

 b表和a表的不同的数据:

b表特有

a表特有

案例1:查询表b有表a没有的数据

SELECT * FROM b WHERE NOT EXISTS (SELECT 1 FROM a WHERE b.name = a.name)

案例2:查询表a有表b没有的数据

SELECT * FROM a WHERE NOT EXISTS (SELECT 1 FROM b WHERE b.name = a.name)

案例3:INSERT IGNORE INTO 语句

  • 23
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值