SQL99

268 阅读1分钟

交叉连接

采用CROSS JOIN

SQL: SELECT * FROM t1 CROSS JOIN t2 CROSS JOIN t3

ON连接

SELECT player_id, player.team_id, player_name, height, team_name FROM player JOIN team ON player.team_id = team.team_id

USING 连接

可以用 USING 指定数据表里的同名字段进行等值连接

SELECT player_id, team_id, player_name, height, team_name FROM player JOIN team USING(team_id)

同上面ON语句是相同的效果

外连接

  • 左外连接:LEFT JOIN 或 LEFT OUTER JOIN
  • 右外连接:RIGHT JOIN 或 RIGHT OUTER JOIN
  • 全外连接:FULL JOIN 或 FULL OUTER JOIN

全外连接的结果 = 左右表匹配的数据 + 左表没有匹配到的数据 + 右表没有匹配到的数据。

全外连接不仅 MySQL 不支持,Access、SQLite、MariaDB 等数据库软件也不支持。不过在 Oracle、DB2、SQL Server 中是支持的。

自连接

其实就是自己join自己

SELECT b.player_name, b.height FROM player as a JOIN player as b ON a.player_name = '布雷克-格里芬' and a.height < b.height

使用自连接而不是子查询

子查询实际上是通过未知表进行查询后的条件判断,而自连接是通过已知的自身数据表进行条件判断,因此在大部分 DBMS 中都对自连接处理进行了优化。


此文章为4月Day5学习笔记,内容来源于极客时间《SQL必知必会》