1) sous forme schématique vous procédez comme suit:
a) diviser la requête dans ses composants et créer un arbre de syntaxe abstraite (AST) de la requête. Il y a des outils pour le faire, autrefois lex et yacc étaient utilisés pour cela, maintenant il y a beaucoup plus de choix. B) Dans un premier temps, un optimiseur réorganisera l'arbre en appliquant des transformations égales connues afin que la requête soit la plus performante en utilisant des index, en faisant des requêtes qui retournent d'abord peu de résultats.
c) Vous pouvez parcourir cette arborescence pour implémenter les petites opérations sur la base de données et les données renvoyées. Typiquement, cela se traduit dans les tableaux « temporaires virtuels » dans les noeuds de votre AST
d) Recueillir les choses à partir de votre nœud supérieur et le retourner au client
2-3) Je ne pense pas qu'il ya des langues spéciales . Beaucoup sont en C, mais Java et d'autres langues sont aussi utilisées
4) Je pense que le meilleur environnement est un environnement silencieux pour ce genre de travail. ;-)
Le vrai travail n'est pas dans l'interpréteur/compilateur SQL, mais dans les structures de données détaillées et dans la simplicité de tout organiser de manière efficace et de régler dynamiquement la situation afin de maintenir la base de données performante.