SQL99的连接

连接

1.交叉连接
CROSS JOIN 支持多张表交叉连接
SELECT * FROM taA CROSS JOIN taB
2.自然连接
NATURAL JOIN
a NATURAL JOIN b = WHERE a.id=b.id
3.ON连接
a JOIN b ON a.id=b.id
需要连接的表会采用 JOIN 进行连接,ON 指定了连接条件,后面可以是等值连接,也可以采用非等值连接
4.Using连接
指定数据表里的同名字段进行等值连接
WHERE a.id=b.id = a JOIN b USING (id)
5.外连接
左外连接:LEFT JOINLEFT OUTER JOIN
右外连接:RIGHT JOINRIGHT OUTER JOIN
全外连接:FULL JOINFULL OUTER JOIN
	全外连接会返回左表和右表中的所有行。当表之间有匹配的行,会显示内连接的结果。当某行在另一个表中没有匹配时,那么会把另一个表中选择的列显示为空值。
	全外连接的结果 = 左右表匹配的数据 + 左表没有匹配到的数据 + 右表没有匹配到的数据
6.自连接
ta AS a JOIN ta AS b

SQL92和SQL99的区别

内连接:将多个表之间满足连接条件的数据行查询出来。它包括了等值连接、非等值连接和自连接。
外连接:会返回一个表中的所有记录,以及另一个表中匹配的行。它包括了左外连接、右外连接和全连接。
交叉连接:也称为笛卡尔积,返回左表中每一行与右表中每一行的组合。在 SQL99 中使用的 CROSS JOIN。

不同DBMS注意事项

1. 不是所有的 DBMS 都支持全外连接
2. Oracle 没有表别名 AS 直接写在表外
3. SQLite 的外连接只有左连接

性能问题注意

1. 控制连接表的数量
2. 在连接时不要忘记 WHERE 语句
3. 使用自连接而不是子查询
	子查询实际上是通过未知表进行查询后的条件判断,而自连接是通过已知的自身数据表进行条件判断

顺序

1、FROM子句组装数据(包括通过ON进行连接)
2、WHERE子句进行条件筛选
3、GROUP BY分组
4、使用聚集函数进行计算;
5、HAVING筛选分组;
6、计算所有的表达式;
7、SELECT 的字段;
8、ORDER BY排序
9、LIMIT筛选
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值