1) В схематической форме вы должны действовать следующим образом:
a) Разделить запрос на его компоненты и создать абстрактное синтаксическое дерево (AST) запроса.Для этого есть инструменты, в былые времена для этого использовались lex и yacc, теперь есть гораздо больший выбор.
b) На первом этапе оптимизатор реорганизует дерево, применяя известные равные преобразования.таким образом, запрос будет наиболее производительным путем использования индексов, выполнения запросов, которые вначале возвращают небольшие результаты, поэтому вам нужно меньше присоединяться и т. д. ...
в) Вы можете пройтись по этому дереву, чтобы реализовать небольшие операции надбаза данных и данные возвращены.Обычно это приводит к появлению «виртуальных временных» таблиц в узлах вашего AST
d) Соберите материал из вашего верхнего узла и верните его клиенту
2-3) Я не думаю, чтоЕсть специальные языки.Многие из них на C, но есть Java и другие языки, которые тоже используются
4) Я думаю, что лучшая среда - это тихая среда для такой работы.; -)
Настоящая тяжелая работа заключается не в интерпретаторе / компиляторе SQL, а в подробных структурах данных и в мельчайших подробностях, позволяющих эффективно организовать и динамически настраивать все для поддержания производительности базы данных.