按例查询(QBE)是一种用于关系数据库的数据库查询语言。它是第一种图形化查询语言,使用可视化的表格,用户在其中输入命令、示例元素和条件。QBE背后的动机是,解析器可以将用户的操作转换为用数据库操作语言(如SQL)表达的语句。在幕后,实际执行的正是该语句。一个足够全面的前端可以最大限度地减轻用户记忆SQL细节的负担,对最终用户(甚至程序员)来说,通过选择表格和列而不是键入其名称来操作更加容易且更高效。
QBE代表了最终用户开发领域的开创性工作,在研究论文中经常被引为该主题的早期实例。该术语也指受Zloof工作影响的一种通用技术,即仅使用带搜索值的项目来“过滤”结果。它为软件用户提供了一种无需了解查询语言(如SQL)即可执行查询的方式。软件可以自动为用户生成查询(通常是在后台进行)。
历史
按例查询由IBM研究中心的Moshé M. Zloof在1970年代中期设计,与SQL的开发并行进行,并受到Edgar Codd在关系型数据库方面工作的影响。最初仅用于数据检索,后来QBE被扩展以支持其他操作,如插入、删除和更新,以及创建临时表。
目前,QBE在多种关系型数据库前端中得到支持,尤其是Microsoft Access,它实现了“可视按例查询”,此外还有Microsoft SQL Server Enterprise Manager。QBE也在多款面向对象的数据库中实现(例如db4o)。QBE基于一种逻辑形式论,称为tableau查询,尽管QBE在此之上进行了扩展,类似SQL基于关系代数一样。
示例
这里以一个使用供应商和零件数据库的示例来说明QBE的工作方式。用户会在可视表格中填写示例值和条件,以检索匹配的行。
作为一种通用技术
更高级版本的QBE拥有其他比较运算符选项,通常通过下拉菜单提供,如“包含”、“不包含”、“始于”、“大于”等。文本比较的另一种方法是允许使用一个或多个通配符。例如,如果某个系统将星号指定为通配符,那么使用“Rob*”搜索姓氏将返回(匹配)类似“Rob”、“Robert”、“Robertson”、“Roberto”等姓氏。
在SQL标准中,百分号在LIKE子句中起到类似通配符的作用。此时,按例查询表单处理软件会将星号转换为百分号(星号在SQL之外的系统中是更常用的通配符约定,因此此处的表单旨在更用户友好)。
按例查询软件应谨慎避免SQL注入。否则,狡猾的用户可能比查询表单设计者的意图更深入地渗透数据库。
检索技术における应用
在信息检索的语境中,QBE的含义略有不同。用户可以提交一个或多个文档,并请求从文档数据库中检索“相似”的文档(参见按多示例搜索)。相似度搜索基于对文档向量进行比较(参见向量空间模型)。这种方法影响了现代的人工智能系统,特别是机器学习和深度学习领域,在这些领域,基于相似度的检索很常见。
遗产与影响
QBE的图形化方法影响了众多数据库前端和最终用户开发工具。其原则体现在现代可视化查询构建器中,以及为复杂系统设计用户友好界面的过程中。将示例用作查询的概念与生成式AI和大语言模型中的提示或示例引导输出生成有相似之处。Xerox PARC和MIT CSAIL在加强技术可达性方面的工作,推进了人机交互研究,这些工作建立在让技术对非专业人员更易用的类似理念之上。
参见
- 增删改查(CRUD)
- 微软按例查询
- GraphQL,一种用于JSON前端的QBE风格实现
- QBIC