1#ifndef NEFORCE_DATABASE_SQL_BUILDER_HPP__
2#define NEFORCE_DATABASE_SQL_BUILDER_HPP__
13NEFORCE_BEGIN_NAMESPACE__
143 void clear_data() noexcept;
624 NEFORCE_NODISCARD
bool is_empty() const noexcept {
return table_.empty(); }
633 NEFORCE_NODISCARD
string build()
const;
638NEFORCE_END_NAMESPACE__
NEFORCE_NODISCARD constexpr basic_string_view view(const size_type off, size_type count=npos) const
获取子视图
sql_builder & reset() noexcept
重置构建器状态
sql_builder & where_exists(string subquery)
添加EXISTS条件
sql_builder & columns(vector< string > fields)
设置INSERT字段列表
sql_builder & set_decrement(string field, int value=1)
添加自减赋值
sql_builder & delete_from(string table)
设置DELETE FROM表名
sql_builder & offset(int count)
添加OFFSET偏移
sql_builder & where_gt(string field, string value)
添加大于条件
sql_builder & select_subquery(string subquery, string alias)
添加子查询作为SELECT字段
sql_builder & inner_join(string table, string on_condition)
添加INNER JOIN子句
NEFORCE_NODISCARD sql_operate type() const noexcept
获取当前SQL操作类型
sql_builder & left_join(string table, string on_condition)
添加LEFT JOIN子句
sql_builder & select_sum(string field, string alias)
SUM聚合
sql_builder & remove()
设置DELETE操作
sql_builder & from(string table) noexcept
设置主表
NEFORCE_NODISCARD string build() const
构建最终的SQL语句
sql_builder & where_in(string field, vector< string > values)
添加IN条件
sql_builder & insert_into(string table, vector< string > fields)
设置INSERT INTO表名和字段
sql_builder & set(string assignment)
添加SET赋值
sql_builder & select_avg(string field, string alias)
AVG聚合
sql_builder & where_not_in(string field, vector< string > values)
添加NOT IN条件
sql_builder & from_subquery(string subquery, string alias)
使用子查询作为FROM表
sql_builder & join(sql_join type, string table, string on_condition)
添加JOIN子句
sql_builder & select_all() noexcept
选择所有字段(SELECT *)
sql_builder & update(string table)
设置UPDATE表名
sql_builder & where_not_exists(string subquery)
添加NOT EXISTS条件
sql_builder & where_lt(string field, string value)
添加小于条件
sql_builder & order_by_desc(string field)
添加降序排序
sql_builder & select_distinct(string field)
添加DISTINCT字段
NEFORCE_NODISCARD bool is_empty() const noexcept
检查构建器是否为空
NEFORCE_NODISCARD string_view table() const noexcept
获取当前表名
sql_builder & distinct()
添加DISTINCT关键字
sql_builder & group_by(string field)
添加GROUP BY字段
sql_builder & where(string condition)
添加WHERE条件
sql_builder & where_ge(string field, string value)
添加大于等于条件
sql_builder()=default
默认构造函数
sql_builder & select_min(string field, string alias)
MIN聚合
sql_builder & where_not_like(string field, string pattern)
添加NOT LIKE条件
sql_builder & where_le(string field, string value)
添加小于等于条件
sql_builder & select(vector< string > fields)
列表设置SELECT字段
sql_builder & right_join(string table, string on_condition)
添加RIGHT JOIN子句
sql_builder & where_eq(string field, string value)
添加相等条件
sql_builder & or_where(string condition)
添加OR条件(与上一个条件组合)
sql_builder & values(vector< string > values)
设置VALUES占位符
sql_builder & having(string condition)
添加HAVING条件
sql_builder & full_join(string table, string on_condition)
添加FULL JOIN子句
sql_builder & where_is_null(string field)
添加IS NULL条件
sql_builder & select_count(string field, string alias)
COUNT聚合
sql_builder & order_by(string field, sql_order order=sql_order::ASC)
添加ORDER BY子句
sql_builder & where_like(string field, string pattern)
添加LIKE条件
sql_builder & where_ne(string field, string value)
添加不等条件
sql_builder & where_is_not_null(string field)
添加IS NOT NULL条件
sql_builder & where_between(string field, string start, string end)
添加BETWEEN条件
sql_builder & select_max(string field, string alias)
MAX聚合
sql_builder & where_not_between(string field, string start, string end)
添加NOT BETWEEN条件
sql_builder & limit(int count)
添加LIMIT限制
sql_builder & order_by_asc(string field)
添加升序排序
sql_builder & set_increment(string field, int value=1)
添加自增赋值
sql_builder & page(int page_num, int page_size)
添加分页
constexpr iter_difference_t< Iterator > count(Iterator first, Iterator last, const T &value)
统计范围内等于指定值的元素数量
basic_string_view< char > string_view
字符字符串视图
NEFORCE_NODISCARD NEFORCE_ALWAYS_INLINE constexpr decltype(auto) end(Container &cont) noexcept(noexcept(cont.end()))
获取容器的结束迭代器
vector< string > fields
插入字段列表
vector< string > fields
查询字段列表
vector< string > having_conditions
HAVING条件列表
vector< string > group_by_fields
GROUP BY字段列表
vector< string > order_by_clauses
ORDER BY子句列表
vector< string > join_clauses
JOIN子句列表
vector< string > assignments
赋值表达式列表