`SqlSelect` 类,继承自 `SqlCall` 类。`SqlSelect` 类表示一个 SQL SELECT 查询语句的语法树节点。下面是每个方法的解释:
1. `public SqlSelect(SqlParserPos pos, SqlNodeList keywordList, SqlNodeList selectList, SqlNode from, SqlNode where, SqlNodeList groupBy, SqlNode having, SqlNodeList windowDecls, SqlNodeList orderBy, SqlNode offset, SqlNode fetch)`: 这是 `SqlSelect` 类的构造方法,用于创建 `SqlSelect` 对象。它接受多个参数,包括语法树节点的位置信息和 SELECT 查询的各个部分(关键字、SELECT 列表、FROM 子句、WHERE 子句、GROUP BY 子句、HAVING 子句、窗口声明、ORDER BY 子句、OFFSET 子句和 FETCH 子句)。
2. `public SqlOperator getOperator()`:返回一个 `SqlOperator` 对象,用于表示 `SqlSelect` 对象的运算符。
3. `public SqlKind getKind()`:返回一个 `SqlKind` 枚举值,表示该对象的类型为 `SqlKind.SELECT`,即表示 SELECT 查询。
4. `public List<SqlNode> getOperandList()`:返回一个包含所有操作数的列表,这些操作数包括关键字列表、选择列表、FROM 子句、WHERE 子句、GROUP BY 子句、HAVING 子句、窗口声明、ORDER BY 子句、OFFSET 子句和 FETCH 子句。
5. `setOperand(int i, @Nullable SqlNode operand)` 方法:根据给定的索引 `i`,设置相应位置上的操作数为指定的 `operand`。
6. `public final boolean isDistinct()`:检查查询是否使用了 DISTINCT 关键字来去重。
7. `public final SqlNode getModifierNode(SqlSelectKeyword modifier)`: 获取指定的修饰符节点。修饰符节点是指 SELECT 查询中的关键字节点,如 DISTINCT、ALL 等。
8. `public final SqlNode getFrom()`: 获取 FROM 子句中指定的节点。
9. `public void setFrom(@Nullable SqlNode from)` 方法:设置 FROM 子句的节点。
10. `public final SqlNodeList getGroup()` 方法:获取 GROUP BY 子句中指定的节点列表。
11. `public void setGroupBy(@Nullable SqlNodeList groupBy)` 方法:设置 GROUP BY 子句的节点列表。
12. `public final SqlNode getHaving()` 方法:获取 HAVING 子句中指定的节点。
13. `public void setHaving(@Nullable SqlNode having)` 方法:设置 HAVING 子句的节点。
14. `public final SqlNodeList getSelectList()` 方法:获取 SELECT 子句中指定的节点列表。
15. `public void setSelectList(SqlNodeList selectList)` 方法:设置 SELECT 子句的节点列表。
16. `public final SqlNode getWhere()` 方法:获取 WHERE 子句中指定的节点。
17. `public void setWhere(@Nullable SqlNode whereClause)` 方法:设置 WHERE 子句的节点。
18. `public final SqlNodeList getWindowList()` 方法:获取窗口声明的节点列表。
19. `public final SqlNodeList getOrderList()` 方法:获取 ORDER BY 子句中指定的节点列表。
20. `public void setOrderBy(@Nullable SqlNodeList orderBy)` 方法:设置 ORDER BY 子句的节点列表。
21. `public final SqlNode getOffset()` 方法:获取 OFFSET 子句中指定的节点。
22. `public void setOffset(@Nullable SqlNode offset)` 方法:设置 OFFSET 子句的节点。
23. `public final SqlNode getFetch()` 方法:获取 FETCH 子句中指定的节点。
24. `public void setFetch(@Nullable SqlNode fetch)` 方法:设置 FETCH 子句的节点。
25. `public void setHints(@Nullable SqlNodeList hints)` 方法:设置提示列表的节点。
26. `public SqlNodeList getHints()` 方法:获取提示列表的节点列表。
27. `public boolean hasHints()` 方法:检查是否存在提示列表。
28. `public void validate (SqlValidator validator, SqlValidatorScope scope)` 方法:通过给定的验证器和作用域验证查询。
29.`public void unparse(SqlWriter writer, int leftPrec, int rightPrec)` 方法:将查询解析为字符串并写入给定的 `SqlWriter`。
30.`public boolean hasOrderBy()` 方法:检查是否存在 ORDER BY 子句。
31. `public boolean hasWhere()` 方法:检查是否存在 WHERE 子句。
32.`public boolean isKeywordPresent(SqlSelectKeyword targetKeyWord)` 方法:检查是否存在指定的关键字。
这些方法用于操作和访问 `SqlSelect` 对象的各个部分,包括关键字列表、子句节点、选择列表等。它们提供了对查询对象的属性和结构进行操作和查询的能力。