NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
载入中...
搜索中...
未找到
SQL

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字符串的安全风险。

支持的语句类型:

  • DML: SELECT, INSERT, UPDATE, DELETE
  • DDL: CREATE TABLE, ALTER TABLE, DROP TABLE, TRUNCATE TABLE
  • 视图: CREATE VIEW, DROP VIEW
  • 索引: CREATE INDEX, DROP INDEX
  • 集合操作: UNION / UNION ALL / INTERSECT / INTERSECT ALL / EXCEPT / EXCEPT ALL
  • CTE: WITH / WITH RECURSIVE
  • 窗口函数: ROW_NUMBER, RANK, DENSE_RANK, NTILE, LEAD, LAG, FIRST_VALUE, LAST_VALUE
  • 表达式工具: CASE, CAST
  • 聚合: COUNT, SUM, AVG, MAX, MIN

遵循的国际标准

本构建器生成的语法遵循以下国际标准:

同时覆盖以下事实标准(跨数据库厂商通用,非 ANSI 标准正文):

  • CREATE INDEX / DROP INDEX
  • CREATE [OR REPLACE] VIEW
  • IF [NOT] EXISTS 修饰子句
  • AUTO_INCREMENT 自增列 (MySQL/SQLite)
  • LIMIT / OFFSET 分页 (MySQL/PostgreSQL/SQLite)

数据库兼容性

生成的 SQL 语句适用于以下主流关系型数据库:

  • MySQL 5.7+
  • PostgreSQL 9.0+
  • SQLite 3.0+
  • Microsoft SQL Server 2008+
  • Oracle Database 10g+
  • 所有其他遵循 ANSI SQL 标准的数据库
注解
  • LIMIT/OFFSET 是事实标准,被除 Oracle 外的多数数据库支持。 对 Oracle 12c+,建议使用 fetch_first() 生成 FETCH FIRST n ROWS ONLY
  • 构建器生成的 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 (事实标准语法)

枚举类型说明

◆ sql_dialect

enum class neforce::sql_dialect : uint8_t
strong

数据库方言

不同的数据库在语法和功能上存在差异,选择对应方言可生成最佳兼容的 SQL。

枚举值
GENERIC 

ANSI SQL

MYSQL 

MySQL / MariaDB

POSTGRESQL 

PostgreSQL

SQLITE 

SQLite

MSSQL 

Microsoft SQL Server

ORACLE 

Oracle Database

在文件 sql_builder.hpp142 行定义.

◆ sql_join

enum class neforce::sql_join : uint8_t
strong

JOIN类型枚举

枚举值
INNER 

INNER JOIN

LEFT 

LEFT JOIN

RIGHT 

RIGHT JOIN

FULL 

FULL JOIN

在文件 sql_builder.hpp120 行定义.

◆ sql_operate

enum class neforce::sql_operate : uint8_t
strong

SQL操作类型枚举

枚举值
SELECT 

SELECT查询

INSERT 

INSERT插入

UPDATE 

UPDATE更新

DELETE 

DELETE删除

DROP_TABLE 

DROP TABLE删除表

CREATE_TABLE 

CREATE TABLE建表

CREATE_VIEW 

CREATE VIEW创建视图

DROP_VIEW 

DROP VIEW删除视图

ALTER_TABLE 

ALTER TABLE修改表

CREATE_INDEX 

CREATE INDEX创建索引

DROP_INDEX 

DROP INDEX删除索引

TRUNCATE 

TRUNCATE TABLE截断表

在文件 sql_builder.hpp101 行定义.

◆ sql_order

enum class neforce::sql_order : uint8_t
strong

排序方向枚举

枚举值
ASC 

升序

DESC 

降序

在文件 sql_builder.hpp131 行定义.

◆ sql_set_op

enum class neforce::sql_set_op : uint8_t
strong

集合操作类型枚举

枚举值
UNION 

UNION

UNION_ALL 

UNION ALL

INTERSECT 

INTERSECT

INTERSECT_ALL 

INTERSECT ALL

EXCEPT_ 

EXCEPT

EXCEPT_ALL 

EXCEPT ALL

在文件 sql_builder.hpp155 行定义.