gpt4 book ai didi

java - 是每个数据库引擎 (jdbc) 的 Sql 语法

转载 作者:搜寻专家 更新时间:2023-10-30 19:56:19 25 4
gpt4 key购买 nike

假设有一个应用程序必须与多个类型的数据库(即 MySql、MSSQL 等)进行交互。去做这个。在应用程序和数据库(无论数据库是什么类型)之间有一个层负责处理与数据库的交互。该层有一些部分具有以下类型的 sql 语句(硬编码):

`"SELECT "+ obj.getName()+ "FROM TABLE_X WHERE NAME=?"` etc (trivial sample sql).  

我的问题是,所有数据库引擎(MySql、MSSQL 等)中的 SQL 语法是否相同?哪部分不同?

我问这个是因为我部分地在一个旧项目中工作,据我所知,它是有效的。sql 语句比包含连接和更新的示例复杂得多。
不过,我一直认为,SQL 语法因数据库类型而异。

最佳答案

完整支持的数据库语法因数据库服务器而异。

但是,大多数 VAST 支持两个基本子集标准之一:ANSI SQL(主要 SQL standard)和/或 Transact SQL(MS SQL/Sybase“增强”版本的 ANSI SQL)。

  • 真正基本的 SQL(SELECT/INSERT/UPDATE 查询)非常统一。

  • 与 SQL 语句不直接相关的功能可能会有更大程度的不同(存储过程调用、控制流语句、DDL 语法)。

  • 此外,每个数据库引擎都在普通 ANSI SQL 之上添加了自己的额外功能,从完整的超集(T-SQL、PLSQL)到到处都是次要的附加功能/关键字(参见 LIMIT/TOP 不同答案中的示例)。

如果你想让你的 SQL 代码尽可能可移植,你显然应该坚持使用 vanilla ANSI SQL,但是除此之外你可以使用哪些特定功能在很大程度上取决于 which engines you want to limit yourself to .

请注意,准备好的语句(示例中的“?”部分)与 SQL 语法无关,而是数据库连接 API 的属性/图书馆;因此,它们与您的语言库(以及它们使用的单个数据库服务器的 API)所允许的一样可移植。可移植性显然不如 ANSI SQL 语法普遍,但它们得到了相当广泛的支持。

关于java - 是每个数据库引擎 (jdbc) 的 Sql 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4750794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com