| Уровень сложности | 🟠 Продвинутый |
|---|---|
| Рекомендуемые языки | Python, Java |
| Основные инструменты | ANTLR4 |
| Предметная область | Информатика, базы данных |
Учебный язык запросов к базам данных для обучения основам SQL: SELECT-запросы, фильтрация, сортировка, агрегация.
// Лексемы
SELECT : 'SELECT'
FROM : 'FROM'
WHERE : 'WHERE'
ORDER : 'ORDER'
BY : 'BY'
ASC : 'ASC'
DESC : 'DESC'
AND : 'AND'
OR : 'OR'
NOT : 'NOT'
LIKE : 'LIKE'
IN : 'IN'
COUNT : 'COUNT'
SUM : 'SUM'
AVG : 'AVG'
MIN : 'MIN'
MAX : 'MAX'
STAR : '*'
COMMA : ','
SEMI : ';'
LPAREN : '('
RPAREN : ')'
EQ : '='
NEQ : '!='
LT : '<'
GT : '>'
LEQ : '<='
GEQ : '>='
STRING : '\'' (~['\\] | '\\' .)* '\''
NUMBER : [0-9]+ ('.' [0-9]+)?
ID : [a-zA-Z_][a-zA-Z_0-9]*
WS : [ \t\r\n]+ -> skip
// Синтаксис
query : select from where? order? limit? SEMI
select : SELECT (STAR | column (COMMA column)*)
column : (aggregate LPAREN ID RPAREN | ID) (AS ID)?
aggregate : COUNT | SUM | AVG | MIN | MAX
from : FROM ID (AS ID)?
where : WHERE condition
condition : expression ( (AND | OR) expression )*
expression : column comparison value | column IN LPAREN value (COMMA value)* RPAREN
comparison : EQ | NEQ | LT | GT | LEQ | GEQ | LIKE
value : STRING | NUMBER | ID
order : ORDER BY order_item (COMMA order_item)*
order_item : ID (ASC | DESC)?
limit : LIMIT NUMBER
Задачи:
Задачи:
Задачи:
Задачи:
SELECT имя, оценка FROM студенты WHERE оценка >= 4 ORDER BY оценка DESC;
Использование в школе:
← К списку | ← 010 | 012 →