C'est en partie subjectif. C'est donc mon opinion :
SQL a un style pseudo-naturel . Les inventeurs ont cru qu'ils pouvaient créer une langue comme l'anglais et que les requêtes de base de données seraient très simples. Une terrible erreur. SQL est très difficile à comprendre, sauf dans des cas triviaux.
Le langage SQL est déclaratif. Vous ne pouvez pas dire à la base de données cómo il devrait faire des choses, juste ce que vous voulez comme résultat. Ce serait parfait et très puissant - si vous n'aviez pas à vous soucier des performances. Vous vous retrouvez donc à écrire du SQL - lire des plans d'exécution - reformuler du SQL en essayant d'influencer le plan d'exécution, et vous vous demandez pourquoi vous ne pouvez pas écrire le plan d'exécution vous-même .
Un autre problème du langage déclaratif est que certains problèmes sont plus faciles à résoudre de manière impérative. Ainsi, vous pouvez soit l'écrire dans un autre langage (vous aurez besoin de SQL standard et probablement d'une couche d'accès aux données), soit utiliser des extensions de langage spécifiques au fournisseur, par exemple en écrivant procédures stockées et autres. En procédant ainsi, vous vous rendrez probablement compte que vous utilisez l'un des pires langages que vous ayez jamais vus, car il n'a jamais été conçu pour être utilisé comme un langage impératif.
SQL est très vieux . SQL a été normalisé, mais trop tard, de nombreux fournisseurs avaient déjà développé leurs extensions de langage. Ainsi, SQL s'est retrouvé dans des dizaines de dialectes. C'est pourquoi les applications ne sont pas portables et c'est l'une des raisons pour lesquelles il faut disposer d'une couche d'abstraction de la base de données.
Mais c'est vrai - il n'y a pas d'alternatives réalisables. Nous utiliserons donc tous SQL au cours des prochaines années.