SQL与其他DBMS的关系是什么?



根据我从上一个问题中学到的内容,SQL查询受到所用DBMS的限制。例如,如果DBMS是MySQL,则不可能使用full outer join进行SQL查询。从这里,我有更多的问题,我感到困惑。

如果SQL完全依赖于DBMS,为什么它被表示为用于从数据库中检索数据的编程语言 我看到的每个定义都表明SQL是在数据库中操作数据的标准编程语言,但正如刚才所说,这并不总是可能的

为什么SQL不是sqlfiddle.com等网站的有效选项,您只能使用特定的DBMS,如MySQL或SQLite SQL语法是否意味着在所有这些选项中都是有效的,但其中一些选项也有自己独特的语法

当我学习SQL时,我发现像w3schools这样的网站非常有用,例如,我觉得这是学习完整外部联接方法的一个很好的起点。如前所述,这对使用MySQL制作的数据库无效,那么这么多宣传教授SQL的网站实际上是在教授什么版本/DMSM呢

将SQL称为"主要"编程语言和其他类似于"自定义"SQL的DBMS是否正确,它们采用自己的语法,添加/删除一些功能等

SQL注入这个术语是否不完全准确,比如说,一个网站很容易受到他们使用的DBMS的特定语法的影响

人们应该在简历上写SQL,还是总是写MySQL、Oracle等细节

如果解释太长,请提供一个有用的链接,这样我就可以阅读了。我对这些东西感到困惑了几个小时,我找到的每个网页都只是重述了同样的东西,但并不能真正解决我的困惑。我完全有能力写SQL代码,我也有很好的理解,但这些概念让我感到困惑。我想知道所有这些联系之间的全部关系。

免责声明:这更多的是我之前问题的延续,但我还有更多的问题要问,如果我只是编辑我的旧帖子等,我不知道StackOverflow是否会发出通知

SQL是关系数据库查询语言的行业标准规范。该标准不是一个软件,它只是一个文档。

每个品牌的RDBMS都是SQL规范的一个实现。他们可以自由地以不同的方式编写代码。实现细节不是由标准SQL语言文档规定的。

SQL还有另一个细微之处,即有多个级别的合规性:入口中间完整。一家公司可以实现SQL的入门级部分,并声称他们支持它。他们可以从中级和完整级别中选择要实现的功能。

目前还没有一个品牌的SQL数据库可以实现SQL规范的所有功能!

此外,每个品牌的RDBMS都提供了许多功能,这些功能在规范中不是。每个实现SQL的供应商都有关于如何增强标准SQL以提供额外价值的想法。还有一些补充功能是RDBMS软件的一部分,但与SQL语言无关。

  • 存储格式
  • 加密
  • 压缩
  • DBA工具
  • GUI管理控制台和查询生成器
  • JDBC、ODBC、Ruby、Python、PHP、Perl、Go等的客户端驱动程序
  • 日志记录
  • 监控
  • 调试
  • 索引

没错——标准SQL规范对索引只字未提,尽管每个品牌的RDBMS都支持某种索引语法。但在规范中,索引是留给实现者的主题。

您可以将其与C++之类的语言进行比较。ISO标准中也描述了C++语言,但标准中没有描述每个C++编译器的许多额外功能。图形IDE、调试器、编译器优化、构建工具、嵌入式文档等等

SQL注入一词是否不完全准确?

SQL注入技术适用于任何支持动态SQL的实现。也就是说,在运行时而不是编译时解析SQL。事实上,SQL注入只是称为代码注入的更广泛类型的安全问题的一个特例。这适用于甚至不是SQL的语言。任何可以在运行时解析和执行代码的东西,使用类似eval()的函数。

人们应该在简历上写SQL,还是总是写MySQL、Oracle等细节。。?

当然可以。使用RDBMS的人在简历或简历中列出他们有经验的车辆时,应该明确他们有经验使用哪一种RDBMS。就像汽车修理工一样,他们应该清楚自己有维修经验的车辆品牌。毫无疑问,他们的技能是可以转移的,如果需要的话,这可以让他们快速学习一个新品牌

这么多宣传教授SQL的网站实际上是在教授什么版本的/DBMS?

这取决于网站。您可以在网站上找到任何一个主要品牌的RDBMS教程。你得问问他们。我认为最常见的是Oracle、Microsoft SQL Server和MySQL。培训网站自然希望吸引最大的潜在客户群,而这些都是最受欢迎的RDBMS产品。

最新更新