MYSQL表连接

一、内连接

内连接称之为普通连接或自然连接,按照连接条件,返回两张表中的满足条件的记录。

内连接查询的特征:只关联表与表中能够匹配到的数据信息,才能有对应的查询结果,如图所示:

内连接提供了两种表与表之间的连接方式:

1、通过where关键字进行关联

格式一:
select 表1.列名1,表2.列名1 
from 表名1,表名2 
where 表1.列名1=表2.列名1;

注意:

表与表之间建立起关联的列,列名可以不一样,但是这两个列的数据类型和内容必须保持一致
要查询的字段,必须要在字段的前面加上表名或者表的别名

2、通过inner join on进行关联

inner是可以省略的,可写可不写。

格式二:
select 表1.列名1,表2.列名1 
from 表名1 [inner] join 表名2 
on 表1.列名1=表2.列名1;

一般用inner join  on 关键字进行的内连接,又可分为等值连接,非等值连接。

等值连接:条件中只包含“=”时的连接,称之为等值连接。

非等值连接:连接条件中除了等号外,还用了其它的比较运算符(>,<,...),来比较连接列的列值。

二、外连接:

外连接特征:至少会返回出一个表的所有内容。

外连接又分为左连接和右连接。

在from的后面,先写的表为左表、后写的表为右表。

1.左连接(left join)

左连接是对左表不加限制,以左表中的数据为基准;使用left outer join 关键字对多个表进行连接,outer可省略不写,左连接的查询结果中包含左表的所有行和右表中的匹配行。若是在右表中找不到匹配行,则使用NULL代替显示。

格式:
select 表名.列名
from 表名1     
left [outer] join 表名2
on <连接条件>;

表1 是左表,连接条件可以是表1.列名1=表2.列名

2.右连接right join

右连接是对右表不加限制,以右表的数据为基准;使用right outer join 关键字对多个表进行连接,右连接返回的是右表的所有行和左表的匹配行,若在左表找不到匹配行,则返回NULL代替显示。

格式:
select 表名.列名
from 表名1     
right [outer] join 表名2
on 表1.列=表2.列;

三、子查询

子查询:指的是在查询语句里面嵌套查询语句,子查询语句放在where条件中,子查询的select语句总是使用圆括号括起来。

格式:
嵌套一个子查询语句:

select 列名 from 表名 where 列名 in(
  select 列名 from 表名 where 条件);
  
嵌套两个子查询语句:
select 列名 from 表名 where 列名 in(
  select 列名 from 表名 where 列名 in(
    select 列名 from 表名 where 条件));

参考;https://blog.csdn.net/qq_49129184/article/details/126574879?ops_request_misc=&request_id=&biz_id=102&utm_term=mysql%E8%BF%9E%E6%8E%A5%E8%A1%A8&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-7-126574879.142^v93^chatgptT3_1&spm=1018.2226.3001.4187 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值