Previous Next JavaScript must be enabled to correctly display this content

## EBNF Syntax

This specification uses EBNF meta-syntax to specify the grammar of SQL for Oracle NoSQL Database. The following EBNF notations apply:

- Upper-case words are used to represent keywords, punctuation characters, operator symbols, and other syntactical entities that are recognized by EBNF as terminals (aka tokens) in the query text. For example, `SELECT` stands for the "select" keyword in the query text. Notice that keywords are case-insensitive; "select" and "sELEct" are both the same keyword, represented by the SELECT terminal.
- Lower-case words are used for non-terminals. For example, `array_step : [expression]` means that array_step is an expression enclosed in square brackets.
- " " Anything enclosed in quotes is also considered a terminal. For example, the following production rule defines the value-comparison operators as one of the =, >= symbols: For example, `val_comp : "=" | ">="` .
- * means 0 or more of whatever precedes it. For example, `field_name*` means 0 or more field names.
- + means 1 or more of whatever precedes it. For example, `field_name+` means 1 or more field names.
- [] means optional, i.e., zero or 1 of whatever contained in it. For example, `[field_name]` means zero or one field names.
- | means this or that. For example, `INT | STRING` means an integer, or a string.
- () Parentheses are used to group EBNF sub-expressions together. For example, `(INT | STRING) [comment]` means an integer, or a string, followed by a comment, or just an integer, or a string, followed by nothing.