数据库命令详解——数据表连接查询和子查询(嵌套查询)

1. 两张表连接查询

  • 应用场景
  • 想要查询总金额超过30块钱的用户信息(姓名、手机号、身份证号等)
  • 下单金额在订单表中(只有user_id)存放,用户信息在用户表中存放,此时就需要连接两张表进行查询
1.1 内连接 INNER JOIN

获取两个表中字段匹配关系的行的所有信息(即两个表中共同都有的内容)

//内连接语法
select * from 表名 a INNER JOIN 表名 b ON a.列名=b.列名
//举例
select * from user_info_table a INNER JOIN 
order_table b on a.user_id=b.user_id; 
//将用户信息表和订单表使用两张表共有的用户ID连接起来

在这里插入图片描述

1.2 左连接 LEFT JOIN

获取左表所有行的信息,右表没有匹配部分用null代替(以左表为基准,左表内容全部展示,右表只展示匹配上的,匹配不上的用null填充)

//左连接语法
select * from 表名 a  LEFT JOIN 表名 b ON a.列名=b.列名
//举例
select * from user_info_table a LEFT JOIN order_table b on a.user_id=b.user_id;
//使用左连接,用户信息表中内容全部展示,订单表中与用户信息表能够匹配的用户ID全部展示,匹配不上的用null填充

在这里插入图片描述

select * from user_info_table a LEFT JOIN order_table b 
on a.user_id=b.user_id where b.user_id is null;
//要查找用户存在,但没有下单记录的用户信息

在这里插入图片描述

1.3 右连接 RIGHT JOIN

获取右表所有行的信息,左表没有匹配部分用null代替

//右连接语法
select * from 表名a RIGHT JOIN 表名b ON a.列名=b.列名
//举例
select * from user_info_table a RIGHT JOIN order_table b on a.user_id=b.user_id;

在这里插入图片描述

select * from user_info_table a LEFT JOIN order_table b 
on a.user_id=b.user_id where a.user_id is null;
//查找下过单,但是用户不存在(可能已经注销)的人

在这里插入图片描述

select a.user_name,b.price from user_info_table a 
right join order_table b on a.user_id=b.user_id 
where price>10;
//查找价格大于10的user_name
//(如果列名user_name在两张表中是不重复的,可以不加表名,如果有重复,则需要加上)

在这里插入图片描述

  • 说明
    上述语句可以连接2张表,连接之后可以视为1张表,若是需要连接多张表,可先两两相连,再依次关联

2. 子查询(嵌套查询)

嵌套在其他查询中的查询。

//子查询语法
select 列名1 from1 where 列名2 in 
(select 列名2 from2  where 列名3=某某);
//举例
select user_name  from user_info_table where user_id in (select user_id from order_table where price>10); 
//先执行括号里面的语句

在这里插入图片描述

  • 注意
    一般在子查询中,程序先运行在嵌套在最内层的语句,再运行外层。因此,在写子查询语句时,可以先测试下内层的子查询语句是否输出了想要的内容,再一层层往外测试,增加子查询正确率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓晓白的软件测试进阶之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值