SQL 解析器的现有实现是一个手写的、递归下降解析器。与基于形式语法的生成解析器(例如,使用 ANTLR)相比,这种方法具有很大的优势。 这些优势包括:
- 它们可以轻松地进行性能调整
- 它们非常简单且易于维护
- 实现语法的边界情况很容易,这可能需要上下文(这对于 SQL 来说是一个很大的优势)
- 将语法绑定到现有的后备表达式树实现(这才是 jOOQ 的真正含义)是最简单的方法
尽管如此,这里提供了一个语法用于文档目的,并且包含在本手册中
batch ::=
query ::=
ddlStatement ::=
dmlStatement ::=
transactionStatement ::=
proceduralStatements ::=
proceduralStatement ::=
label ::=
blockStatement ::=
declarationStatement ::=
declareStatement ::=
assignmentStatement ::=
ifStatement ::=
ifSimpleBody ::=
ifBlockBody ::=
caseStatement ::=
loopStatement ::=
forStatement ::=
whileStatement ::=
repeatStatement ::=
executeStatement ::=
callStatement ::=
arguments ::=
argument ::=
gotoStatement ::=
continueStatement ::=
exitStatement ::=
returnStatement ::=
signalStatement ::=
nullStatement ::=
alterDatabaseStatement ::=
alterDomainStatement ::=
alterIndexStatement ::=
alterSchemaStatement ::=
alterSequenceStatement ::=
alterSessionStatement ::=
alterTableStatement ::=
alterTypeStatement ::=
alterViewStatement ::=
createDatabaseStatement ::=
createDomainStatement ::=
createFunctionStatement ::=
createIndexStatement ::=
createProcedureStatement ::=
createSchemaStatement ::=
createSequenceStatement ::=
createSynonymStatement ::=
createTableStatement ::=
createTriggerStatement ::=
createTypeStatement ::=
createViewStatement ::=
dropDatabaseStatement ::=
dropDomainStatement ::=
dropFunctionStatement ::=
dropIndexStatement ::=
dropProcedureStatement ::=
dropSequenceStatement ::=
dropSequenceStatement ::=
dropSchemaStatement ::=
dropTableStatement ::=
dropTriggerStatement ::=
dropTypeStatement ::=
dropViewStatement ::=
renameStatement ::=
setCatalogStatement ::=
setSchemaStatement ::=
useStatement ::=
truncateStatement ::=
grantStatement ::=
revokeStatement ::=
resultStatement ::=
selectStatement ::=
insertStatement ::=
values ::=
updateStatement ::=
setClauses ::=
setClause ::=
deleteStatement ::=
mergeStatement ::=
mergeMatched ::=
mergeNotMatched ::=
column ::=
attribute ::=
startTransactionStatement ::=
savepointStatement ::=
releaseSavepointStatement ::=
commitStatement ::=
rollbackStatement ::=
index ::=
indexType ::=
constraint ::=
constraintState ::=
constraintDeferrability ::=
constraintEnforcement ::=
reference ::=
identity ::=
identityProperty ::=
parameterDeclarations ::=
parameterDeclaration ::=
parameterMode ::=
with ::=
commonTableExpression ::=
select ::=
queryExpressionBody ::=
queryTerm ::=
queryPrimary ::=
distinct ::=
topSimple ::=
top ::=
selectList ::=
selectField ::=
tableExpression ::=
connectBy ::=
groupBy ::=
groupingSets ::=
groupingSet ::=
windows ::=
window ::=
windowSpecification ::=
orderBy ::=
seekFetch ::=
offsetFetch ::=
forUpdate ::=
forXML ::=
forJSON ::=
sortFields ::=
sortField ::=
tables ::=
table ::=
optionallyQualifiedJoin ::=
unqualifiedJoin ::=
innerJoin ::=
outerJoin ::=
semiAntiJoin ::=
joinHint ::=
lateral ::=
tableFactor ::=
jsonTableColumn ::=
openjsonColumn ::=
xmlTableColumn ::=
tableFunction ::=
tableHints ::=
pivot ::=
versions ::=
tablesample ::=
periodSpecification ::=
periodPortion ::=
periodSpecificationFromTo ::=
periodName ::=
joinQualification ::=
correlationName ::=
rowValueExpression ::=
fields ::=
field ::=
condition ::=
or ::=
xor ::=
and ::=
not ::=
predicate ::=
row2 ::=
concat ::=
collated ::=
op ::=
sum ::=
factor ::=
exp ::=
unaryOps ::=
term ::=
lambda1 ::=
lambda2 ::=
jsonNull ::=
jsonReturning ::=
jsonEntries ::=
jsonEntry ::=
truthValue ::=
datePart ::=
keep ::=
filter ::=
over ::=
withinGroup ::=
rangeBound ::=
case ::=
comparator ::=
castDataType ::=
dataType ::=
arrayType ::=
constraintName ::=
catalogName ::=
domainName ::=
schemaName ::=
tableName ::=
triggerName ::=
typeName ::=
functionName ::=
indexName ::=
parameterName ::=
procedureName ::=
sequenceName ::=
synonymName ::=
userName ::=
roleName ::=
fieldNames ::=
fieldName ::=
collation ::=
variableNames ::=
variableName ::=
labelName ::=
name ::=
binaryLiteral ::=
bitLiteral ::=
stringLiteral ::=
characterLiteral ::=
dateLiteral ::=
timeLiteral ::=
timestampLiteral ::=
intervalLiteral ::=
int ::=
signedInteger ::=
uint ::=
unsignedInteger ::=
signedNumericLiteral ::=
unsignedNumericLiteral ::=
signedFloatLiteral ::=
unsignedFloatLiteral ::=
identifiers ::=
identifier ::=
identifierStart ::=
identifierPart ::=
doubleQuotedIdentifierPart ::=
backtickQuotedIdentifierPart ::=
brackedQuotedIdentifierPart ::=
nonDoubleQuoteCharacter ::=
nonBacktickCharacter ::=
nonClosingBracketCharacter ::=
doubleQuote ::=
doubleBacktick ::=
doubleClosingBracket ::=
这些图表是用 Christopher Deckers 编写的简洁的 RRDiagram 库创建的。
反馈
您对此页面有任何反馈吗? 我们很乐意听到您的意见!