数据库连接整理

连接可以分为内连接、外连接、交叉连接、自连接。

1.       Cross join

1)  支持的数据库:ORACLEMYSQLSQLServerDB2

2)  功能说明:交叉连接返回结果包含了所连接两表的记录两两组合。其返回结果所包含记录数为两表满足条件记录行数的乘积。CROSS JOIN后限制条件只能用WHERE 不能用ON

3)  底层实现和性能:CROSS JOIN首先生产两张表的笛卡尔乘积表,如果包含WHERE则根据限制条件从笛卡尔乘积表(临时表)筛选出结果,如果不包含WHERE则直接返回笛卡尔乘积表。因为CROSS JOIN要生产笛卡尔乘积,所以查询速度比较慢,而且没有实际意义,所以很多时候,使用外连接和内连接来代替。

2.       LEFT JOIN/RIGHT JOIN、FULL JOIN

1)  支持的数据库:ORACLEMYSQLSQLServerDB2

2)  功能说明:LEFT JOIN/RIGHT JOINFULL JOIN属于外连接,在很多数据库,也可以写作LEFT OUTER JOIN/RIGHT OUTER JOINFULL OUTER JOINLEFT JOINRIGHT JOIN)返回结果不管左(右)表记录是否满足条件,都会对左(右)表记录返回,左(右)连接包含了两表所有满足条件的记录以及左(右)表中不满足条件的记录,右(左)表中没有对应的记录则显示NULLFULL JOIN返回结果,将包含两表所有满足条件的记录,同时包含两表中不满足条件的记录,相应的空缺显示为NULL

3)  底层实现:左连接/右连接根据左表/右表生产临时表。

3.       NATURAL JOIN

1)  支持的数据库:ORACLE

2)  功能说明:如果两表中的字段名和数据类型都相同,那么NATURAL JOIN自动连接两表。如果字段名相同而类型不相同,则返回错误。

4.       INNER JOIN

1)  支持的数据库:ORACLEMYSQLSQLServerDB2

2)  功能说明:一般数据库,默认的连接就是内连接inner join,只返回两表同时满足条件的记录。

3)  底层实现和性能:inner joinon联合起来使用,生产的只是满足条件的临时表,因此innner join的性能是比较高的。

5.       自连接

1)  支持的数据库:ORACLEMYSQLSQLServerDB2

2) 功能说明:SELF JOIN通过一张表自己和自己连接,得到比较特殊的功能,事实上,自连接是对其他连接的使用,只不过使用对象只有一张表。可以用别名来实现同一张表的连接。

 

例子未完善,待完善……

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值