Une expression régulière peut analyser uniquement un regular language. Autrement dit, un langage qui peut être exprimé avec une machine à états finis.
La plupart des langages de programmation, y compris SQL, ne peuvent pas être exprimés en tant que langage régulier et ne peuvent donc pas être analysés avec des expressions régulières. Même faire des tâches limitées comme la séparation d'expressions SQL va être terriblement difficile avec des expressions régulières.
Vous aurez besoin d'utiliser un générateur d'analyse syntaxique plus robuste capable de gérer des grammaires plus complexes. Vous étiquetez votre question avec PHP, vous devriez donc regarder dans Lime.
Vous devrez également trouver un fichier de grammaire pour PHP compatible avec le générateur d'analyseur que vous choisissez. Je ne sais pas où en trouver un pour PHP et Lime, mais il y a un pur projet Perl appelé DBIx::MyParsePP qui est basé sur la grammaire de MySQL.