SQL92标准

434 阅读1分钟

SQL92 就是 92 年提出的标准规范。

笛卡尔积

假设我有两个集合 X 和 Y,那么 X 和 Y 的笛卡尔积就是 X 和 Y 的所有可能组合,也就是第一个对象来自于 X,第二个对象来自于 Y 的所有可能。

等值连接

两张表的等值连接就是用两张表中都存在的列进行连接。

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

非等值连接

如果连接多个表的条件是等号时,就是等值连接,其他的运算符连接就是非等值查询。

SELECT p.player_name, p.height, h.height_level
FROM player AS p, height_grades AS h
WHERE p.height BETWEEN h.height_lowest AND h.height_highest

外连接

除了查询满足条件的记录以外,外连接还可以查询某一方不满足条件的记录。两张表的外连接,会有一张是主表,另一张是从表。如果是多张表的外连接,那么第一张表是主表,即显示全部的行,而第剩下的表则显示对应连接的信息。

在 SQL92 中采用(+)代表从表所在的位置,而且在 SQL92 中,只有左外连接和右外连接,没有全外连接。

自连接

查询条件使用了当前表的字段。

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

Oracle 对 SQL92 支持较好,而 MySQL 则不支持 SQL92 的外连接。

执行顺序

查询顺序是:FROM > WHERE > GROUP BY > HAVING > SELECT 的字段 > DISTINCT > ORDER BY > LIMIT

连接查询执行的顺序会先进行ON连接,然后进行WHERE筛选。ON连接是一般连接表的方式,当我们得到数据之后,再会对数据行进行条件筛选。


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