Mysql表的连接方式

                                     Mysql表的连接方式

1.交叉连接(笛卡尔积)

交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。    
sql语句:select * from 表1,表2; 隐士笛卡尔积 

select * from 表1 crross join 表2;  显示笛卡尔积 

不带条件的内连接也是笛卡尔积:select * from 表1 inner join 表2;

2.内连接 inner join  on

Sql语句:select * from 表1 inner join 表2  on 表1.id=表2.id;

 注意:隐士笛卡尔积可以在后面跟where查询条件,查询结果和内连接相同(查询条件相   同),不能用on查询条件。显示笛卡尔积where和on都不能用,内连接inner join   后面可跟where查询条件和on查询条件,此处也可以说成笛卡尔带有查询条件后           是内连接。

3.自然连接Natural join(natural join在sql server 中不支持).....查询后的结果没看明白

是一种特殊的等值连接,要求两个关系表中进行比较的属性组必须是名称相同的属性组,并且在结果中把重复的属性列去掉(即:留下名称相同的属性组中的其中一组)。两张表中的名称和类型完全一致的列进行内连接

Sql语句:select *  from 表1 natrual  join 表2;

4.外连接分为全外连接,左外连接,右外连接on后面跟查询条件,不能用where等

全外连接 :select * from 表1 full join 表2  on 表1.id=表2.id;

全外连接在mysql中不能用,在oracle中可以使用;查询结果为左右的数据都显示,如果左边对应的右边没有与之相匹配的数据,则为null,同理左边的为nul。l

左外连接:select * from 表1 left join 表2  on 表1.id=表2.id;

查询结果为:左边的全部显示,右边的如果全部满足左边话,就和左边的显示数据条数相同;如果右边的不完全满足左边的话,则左边的表数据对应的右边为null;

右外连接:select * from 表1 right  join 表2  on 表1.id=表2.id;

查询结果为:右边的全部显示,左边的如果全部满足右边话,就和右边的显示数据条数相同;如果左边的不完全满足右边的话,则右边的表数据对应的左边为null;

5.Union 和Union all

Union和union all是联合查询,union联合查询的条件是两个表的字段个数都是相同的

Union Sql语句:select * from 表1 union select * from 表2;

Union all Sql语句:select * from 表1 union all select * from 表2;

Union的查询结果为,如果两个表中右相同数据的话,则之显示一条,将两个表合称为一个表。

Union all的查询结果为,如果两个表中右相同数据的话,则全部显示,将两个表合称为一个表。

以上内容由本人亲自整理,通过Windows下mysql,进行建表,写sql语句,亲自测试总结,在自然连接这块不是很明白,欢迎熟悉自然连接的留言,探讨,也欢迎其他朋友提出建议。

 

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值