SQL Prompt教程:旧式联接语法(ST001)

SQL Prompt是一款提升SQL编码效率的工具,它提倡使用ANSI标准JOIN语法替代旧式联接,以提高代码可读性和可移植性。旧式外部联接在SQL Server 2008后被弃用,可能导致查询失败。使用ANSI标准语法可以简化代码,避免错误,并适应更多数据库系统。
摘要由CSDN通过智能技术生成

SQL Prompt是一款实用的SQL语法提示工具。SQL Prompt根据数据库的对象名称、语法和代码片段自动进行检索,为用户提供合适的代码选择。自动脚本设置使代码简单易读–当开发者不大熟悉脚本时尤其有用。SQL Prompt安装即可使用,能大幅提高编码效率。此外,用户还可根据需要进行自定义,使之以预想的方式工作。

点击下载SQL Prompt正式版

使用旧式联接语法没有任何优势。如果SQL提示标识了它在旧版代码中的使用,则重写语句以使用ANSI标准的连接语法将简化和改进代码。

SQL Prompt实现了一个静态代码分析规则ST001,该规则将在开发和测试工作期间自动检查代码是否出现非ANSI标准的JOIN语法。

SQL的“旧样式” Microsoft / Sybase JOIN样式已使用= =语法,已弃用,不再使用。当数据库引擎级别为10(SQL Server 2008)或更高版本(兼容级别100)时,使用此语法的查询将失败。ANSI-89表引用列表(FROM表A,表B)仍然仅是INNER JOIN的ISO标准。这些样式都不值得使用。自ANSI SQL-92发布以来,就一直最好指定所需的连接类型:INNER,LEFT OUTER,RIGHT OUTER,FULL OUTER和CROSS。尽管可以选择任何受支持的JOIN样式,而不会影响SQL Server使用的查询计划,但使用ANSI标准语法将使您的代码更易于理解,更一致,并且可移植到其他关系数据库系统中。

旧式外部联接已过时

当SQL Server从Sybase派生时,它继承了其旧的非标准Transact-SQL语法用于联接,其中分别包括左和右外部联接的=和=语法。

从第一个表(外部联接的“外部成员”)中选择的左外部联接运算符* =,满足语句限制的所有行。仅当该行的连接条件匹配时,第二个表(“内部成员”)才会生成值;否则,它提供空值。相反,对于右外部联接运算符= *,第二个表成为“外部成员”,从中选择所有符合条件的行。

即使支持这些语法,也存在一些限制。您不能在HAVING子句中包含Transact-SQL外部联接,也不能在与旧式外部联接相同的表达式中执行其他INNER JOIN。此外,外部连接语法(* =或= *)并不总是给出正确的结果,有时在指定外部连接时使用交叉连接。

无论如何,此语法在SQL Server 2005及更高版本中已被弃用,并在SQL Server 2008中停止工作。清单1的目的是查询pubs数据库,其目的是返回没有相应作者的所有标题。

--all titles without an author
SELECT ti.title + Coalesce( ' (' + ti.type + ') -' + ti.pub_id,' (Unknown category)') AS publication
  FROM dbo.titles AS ti, dbo.titleauthor AS Ta
     where ti.tit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值