从人类可读的描述构造 SQL 查询
问题:
每当面对人类可读的描述时查询时,开发人员通常依靠启发式方法和头脑风暴将其转换为 SQL 查询。然而,这个翻译过程有系统的数学方法吗?
答案:
是的,有一种系统的方法可以根据人类可读的描述构建 SQL 查询。它涉及理解自然语言表达式、逻辑表达式、关系代数表达式和 SQL 表达式之间的对应关系。
将人类可读的描述翻译为 SQL 的步骤
- 识别每个表的谓词: 表的谓词是一个自然语言语句模板,描述该表中的行
- 用表谓词表达查询:使用关系运算符(JOIN、WHERE、IN 等)组合和过滤表谓词来表达所需的行。
- 翻译为 SQL: 使用每个关系运算符的 SQL 语法将关系代数表达式翻译为SQL 查询。
SQL 中的关系运算符
- JOIN: 根据公共列组合多个表中的行(例如 INNER JOIN、LEFT JOIN)。
- WHERE: 根据条件过滤行(例如,WHERE COLUMN = VALUE)。
- IN: 检查值是否列的匹配值列表(例如,WHERE COLUMN IN (VALUE1, VALUE2)).
- UNION: 合并来自多个表或子查询的行(例如 UNION、UNION CORRESPONDING)。
- VALUES: 创建一个具有一组特定行和列的表(例如 VALUES (VALUE1, VALUE2))。
示例
考虑以下人类可读的描述:
查找所有被某人喜欢但不喜欢的人就像 Ed。
喜欢的谓词表:
[人]喜欢[喜欢]
关系代数表达式:
对于某些x,喜欢(人,x) AND 喜欢(x,喜欢) AND person = 'Bob' AND NOT 喜欢(x, 'Ed')
SQL 查询:
SELECT DISTINCT l1.liker AS person, l2.liked AS liked FROM Likes l1 INNER JOIN Likes l2 ON l1.liked = l2.liker WHERE l1.liker = 'Bob' AND NOT (l1.liked, 'Ed') IN (SELECT * FROM Likes)
以上是系统方法能否将人类可读的查询描述转换为 SQL?的详细内容。更多信息请关注PHP中文网其他相关文章!

本文讨论了使用MySQL的Alter Table语句修改表,包括添加/删除列,重命名表/列以及更改列数据类型。

文章讨论了为MySQL配置SSL/TLS加密,包括证书生成和验证。主要问题是使用自签名证书的安全含义。[角色计数:159]

文章讨论了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比较了它们对初学者和高级用户的功能和适合性。[159个字符]

本文讨论了使用Drop Table语句在MySQL中放下表,并强调了预防措施和风险。它强调,没有备份,该动作是不可逆转的,详细介绍了恢复方法和潜在的生产环境危害。

本文讨论了在PostgreSQL,MySQL和MongoDB等各个数据库中的JSON列上创建索引,以增强查询性能。它解释了索引特定的JSON路径的语法和好处,并列出了支持的数据库系统。

文章讨论了使用准备好的语句,输入验证和强密码策略确保针对SQL注入和蛮力攻击的MySQL。(159个字符)


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Atom编辑器mac版下载
最流行的的开源编辑器

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器