SQL标准最新进展,哪些是你期待的功能?
2026/7/4 20:55:00 网站建设 项目流程

自从发布 SQL:2023 标准以来,ISO SQL 标准工作组(WG3)仍在不断致力于 SQL 以及 GQL 标准的更新。

该组织于 2026年 6 月在瑞典斯德哥尔摩召开会议,多项备受关注的新功能正式进入 SQL:202y 草案。

以下是相关特性的简单介绍。

QUALIFY 子句

QUALIFY 子句用于对窗口函数(Window Function)的结果进行过滤,相当于窗口函数版的 WHERE 或 HAVING。

例如,为了找出价格高于所属分类平均价格的商品,我们需要这样实现:

SELECT*FROM(SELECT*,avg(price)OVER(PARTITIONBYcategory)ASavg_priceFROMproducts)tWHEREprice>avg_price;

为了筛选窗口函数计算结果,通常需要额外嵌套一层子查询。因为 WHERE 在窗口函数之前执行,窗口函数结果不能直接出现在 WHERE 子句中。

新的 QUALIFY 子句可以直接在同一查询中完成筛选:

SELECT*FROMproducts QUALIFY price>avg(price)OVER(PARTITIONBYcategory);

一些数据仓库(例如 Snowflake、BigQuery 等)支持类似语法,但一直不是标准 SQL。如今被正式写入标准后,未来数据库产品跟进的可能性大大增加。

INSERT BY NAME

新标准接纳了 INSERT … BY NAME 语法,允许插入数据时按照列名匹配。例如:

INSERTINTOusers(name,age)BYNAMESELECTage,nameFROMtmp_users;

与此同时,传统按照字段顺序匹配的方式可以使用 SELECT … BY POSITION 显式指定。

SELECT * EXCLUDE

这是近些年来 SQL 标准最热门的需求之一,可以指定查询结果中排除的字段,极大地方便我们编写 SQL 查询。

例如,为了查询用户表中除了 password 字段之外的其他字段,我们需要依次编写字段名称:

SELECTid,name,email,phone,created_at,updated_at...FROMusers;

这种方式不但效率低下,增加字段时也需要同步修改查询语句。

新的语法则可以简化我们的工作:

SELECT*(EXCLUDE(password))FROMusers;

新语法不仅支持字段排除,还可以进行替换和重命名。例如:

SELECT*(EXCLUDE(a,b)REPLACE(cWITHx+y,dWITHz*2)RENAME(eASee,fASfoo))FROMt...

JOIN TO ONE

JOIN TO ONE 语法可以帮助我们发现 JOIN 编写错误,确保左表每行最多只能匹配右表一行;如果某一行匹配出多条记录,则抛出异常。

例如:

SELECTro.room_number,ro.room_type,ro.price,re.guest_nameFROMreservations reINNERJOINTOONE rooms roONro.room_number=re.room_numberWHEREre.id=16354;

如果我们在以上 JOIN 查询的关联条件中错写成 ro.room_number = ro.room_number,查询可能返回大量重复记录,此时 JOIN TO ONE 会发现这个问题并返回错误。

基于外键的连接检查

这是一个尚在讨论中的特性,还没有通过提案。

它的目标比 JOIN TO ONE 更进一步,不是运行时检查,而是在语义层面验证 JOIN 是否与外键约束一致。

可能的实现如下:

SELECTro.room_number,ro.room_type,ro.price,re.guest_nameFROMreservationsASreJOINroomsASroFORKEY(room_number)<-re(room_number)WHEREre.reservation_id=16354;

此时,数据库会验证 reservations 表中以下定义是否存在:

FOREIGNKEY(room_number)REFERENCESrooms(room_number)

如果没有这样的外键定义,数据库会返回错误。

总结

SQL 已经诞生超过半个世纪,很多程序员都以为 SQL 标准早就定型了。但实际上,ISO 标准委员会仍在持续进化这门语言;而这一次的方向则是提高查询语义表达能力,减少用户犯错的机会。

原计划 2027 年中发布新的 SQL 标准版本,不过目前还存在一些变化因素。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询