|
NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
|
SQL语句的流式构建器实现 更多...
类 | |
| class | neforce::sql_builder |
| SQL语句构建器 更多... | |
枚举 | |
| enum class | neforce::sql_operate : uint8_t { sql_operate::SELECT , sql_operate::INSERT , sql_operate::UPDATE , sql_operate::DELETE , sql_operate::DROP_TABLE , sql_operate::CREATE_TABLE , sql_operate::CREATE_VIEW , sql_operate::DROP_VIEW , sql_operate::ALTER_TABLE , sql_operate::CREATE_INDEX , sql_operate::DROP_INDEX , sql_operate::TRUNCATE } |
| SQL操作类型枚举 更多... | |
| enum class | neforce::sql_join : uint8_t { sql_join::INNER , sql_join::LEFT , sql_join::RIGHT , sql_join::FULL } |
| JOIN类型枚举 更多... | |
| enum class | neforce::sql_order : uint8_t { sql_order::ASC , sql_order::DESC } |
| 排序方向枚举 更多... | |
| enum class | neforce::sql_dialect : uint8_t { sql_dialect::GENERIC , sql_dialect::MYSQL , sql_dialect::POSTGRESQL , sql_dialect::SQLITE , sql_dialect::MSSQL , sql_dialect::ORACLE } |
| 数据库方言 更多... | |
| enum class | neforce::sql_set_op : uint8_t { sql_set_op::UNION , sql_set_op::UNION_ALL , sql_set_op::INTERSECT , sql_set_op::INTERSECT_ALL , sql_set_op::EXCEPT_ , sql_set_op::EXCEPT_ALL } |
| 集合操作类型枚举 更多... | |
SQL语句的流式构建器实现
通过链式调用构建复杂的SQL语句,避免手动拼接SQL字符串的安全风险。
支持的语句类型:
本构建器生成的语法遵循以下国际标准:
同时覆盖以下事实标准(跨数据库厂商通用,非 ANSI 标准正文):
生成的 SQL 语句适用于以下主流关系型数据库:
以下 SQL 特性在标准中有定义但本构建器 **不提供 API 支持**。 用户可通过传入原始 SQL 字符串(如 where()、having() 等)自由使用这些特性。
| 特性 | 标准出处 | 不纳入原因 |
|---|---|---|
| GRANT / REVOKE | SQL-92 Entry | DCL(数据控制语言),属于运维授权范畴,与 DML/DDL 性质不同 |
| CREATE SCHEMA / DOMAIN / ASSERTION | SQL-92 Intermediate | 生产代码中极少使用;多数数据库实现不完整或语义差异大 |
| TRIGGER / 存储过程 / 函数 | SQL:1999 / SQL/PSM | 过程式代码(含控制流),超出声明式 SQL 构建器的设计范围 |
| SAVEPOINT / RELEASE SAVEPOINT | SQL:1999 | 事务控制原语,粒度与连接层绑定;使用频率低 |
| MERGE (UPSERT) | SQL:2003 | 各数据库方言差异极大(MySQL ON DUPLICATE KEY / PostgreSQL ON CONFLICT / SQLite INSERT OR REPLACE),统一 API 会掩盖方言行为差异 |
| CREATE SEQUENCE / ALTER SEQUENCE | SQL:2003 | 多数项目通过 ORM 或迁移脚本管理序列,不适合运行时 SQL 构建器 |
| MATCH / OVERLAPS / UNIQUE 谓词 | SQL-92 Full | 边缘用例;多数数据库未实现或语义不完整,生产代码中几乎不会使用 |
| LATERAL JOIN | SQL:1999 | 使用率极低;可通过子查询或 CROSS JOIN 改写 |
| IDENTITY 列 (GENERATED AS IDENTITY) | SQL:2003 | 与 AUTO_INCREMENT 功能重叠;各数据库语法差异大 (GENERATED ALWAYS AS IDENTITY / GENERATED BY DEFAULT AS IDENTITY / IDENTITY(1,1)) |
| TEMPORARY TABLE (会话临时表) | SQL-92 Full | 本构建器已支持 CREATE TEMP TABLE (事实标准语法) |
|
strong |
数据库方言
不同的数据库在语法和功能上存在差异,选择对应方言可生成最佳兼容的 SQL。
| 枚举值 | |
|---|---|
| GENERIC | ANSI SQL |
| MYSQL | MySQL / MariaDB |
| POSTGRESQL | PostgreSQL |
| SQLITE | SQLite |
| MSSQL | Microsoft SQL Server |
| ORACLE | Oracle Database |
在文件 sql_builder.hpp 第 142 行定义.
|
strong |
JOIN类型枚举
| 枚举值 | |
|---|---|
| INNER | INNER JOIN |
| LEFT | LEFT JOIN |
| RIGHT | RIGHT JOIN |
| FULL | FULL JOIN |
在文件 sql_builder.hpp 第 120 行定义.
|
strong |
SQL操作类型枚举
在文件 sql_builder.hpp 第 101 行定义.
|
strong |
|
strong |
集合操作类型枚举
| 枚举值 | |
|---|---|
| UNION | UNION |
| UNION_ALL | UNION ALL |
| INTERSECT | INTERSECT |
| INTERSECT_ALL | INTERSECT ALL |
| EXCEPT_ | EXCEPT |
| EXCEPT_ALL | EXCEPT ALL |
在文件 sql_builder.hpp 第 155 行定义.