| select_statement::= SELECT [ JSON | DISTINCT ] ( select_clause | '*' ) |
| FROM `table_name` |
| [ WHERE `where_clause` ] |
| [ GROUP BY `group_by_clause` ] |
| [ ORDER BY `ordering_clause` ] |
| [ PER PARTITION LIMIT (`integer` | `bind_marker`) ] |
| [ LIMIT (`integer` | `bind_marker`) ] |
| [ ALLOW FILTERING ] |
| select_clause::= `selector` [ AS `identifier` ] ( ',' `selector` [ AS `identifier` ] ) |
| selector::== `column_name` |
| | `term` |
| | CAST '(' `selector` AS `cql_type` ')' |
| | `function_name` '(' [ `selector` ( ',' `selector` )_ ] ')' |
| | COUNT '(' '_' ')' |
| where_clause::= `relation` ( AND `relation` )* |
| relation::= column_name operator term |
| '(' column_name ( ',' column_name )* ')' operator tuple_literal |
| TOKEN '(' column_name# ( ',' column_name )* ')' operator term |
| operator::= '=' | '<' | '>' | '<=' | '>=' | '!=' | IN | CONTAINS | CONTAINS KEY |
| group_by_clause::= column_name ( ',' column_name )* |
| ordering_clause::= column_name [ ASC | DESC ] ( ',' column_name [ ASC | DESC ] )* |