Pour la programmation à usage général, il existe littéralement des centaines de langages de programmation. Mais pour interagir/interroger les bases de données, pourquoi SQL est-il à peu près le seul langage utilisé?
En plus de la réponse de Basile, veuillez également reconnaître que SQL n'est pas un langage comme vous le pensez d'un langage orienté objet ou d'un langage procédural. À bien des égards, la norme ANSI SQL ressemble plus à un protocole ou à une série d'instructions généralement acceptées basées sur les principes mathématiques de théorie des ensembles , logique des prédicats et algèbre relationnelle .
Mais la façon dont les développeurs RDBMS implémentent ces normes varient considérablement d'un logiciel propriétaire à l'autre, de manière à presque classer chaque implémentation individuelle comme un langage qui lui est propre.
Par exemple, Oracle SQL est assez différent de Microsoft SQL Server SQL qui est différent de MySQL , etc. En plus de cela, chaque entreprise implémente ses propres fonctions uniques, moteur de base de données et (dans certains cas) procédural langages en plus des instructions standard ANSI SQL standard. Certains choisissent même d'abandonner la norme à certains moments au profit de leur propre mise en œuvre personnelle.
L'histoire de ce mariage de SQL avec le modèle relationnel est principalement due au fait que la technologie et le langage ont été développés côte à côte dans les années 1970 par EF Codd , Donald D. Chamberlin et Raymond F Boyce. Il y a quelques articles assez décents sur Wikipédia autour du sujet si vous avez la possibilité de lire à ce sujet.
Le premier SQL est principalement destiné aux bases de données relationnelles . Et il a plusieurs variantes ou dialectes.
Les bases de données non relationnelles ont donc d'autres langages de requête. Lisez à propos de NoSQL . Regardez MongoDB par exemple. Voir aussi Query language wikipage listant d'autres langages de requête.
SQL n'est pas un "langage" en soi, autant qu'il est un standard pour créer un langage. Voir The SQL Timeline pour référence. Plusieurs parties ont mis en œuvre des langages de requête de base de données spécifiques basés sur la norme, qui varient dans la mesure dans laquelle la norme est respectée.
En ce sens, il est faux de dire que SQL est le seul langage de requête de base de données, car il n'existe pas de "langage SQL"; vous disposez plutôt de plusieurs implémentations de langage, telles que Transact-SQL (par exemple, tel qu'utilisé par Microsoft SQL Server), MySQL, PostgreSQL, Oracle SQL, etc. étant conçu pour le domaine d'un moteur de base de données relationnelle spécifique.
Comme Basile Starynkevitch correctement souligné , il existe également plusieurs langages de base de données "NoSQL" qui peuvent être implémentés via des API qui peuvent être utilisées par la plupart des langages de programmation traditionnels.
Je vous encourage à considérer ce que Robert "Oncle Bob" Martin a à dire sur les bases de données . Je le trouve intéressant, en ce qui concerne certaines considérations qu'il discute concernant SQL et NoSQL.
La popularité de SQL a été influencée par des sociétés, la communauté open source, des piles technologiques comme LAMPE et les limitations de stockage physique des disques durs. Depuis 2016, vos trois premiers systèmes de base de données sont tous basés sur SQL (Oracle 12c, Microsoft SQL Server et MySQL). Il a également été souligné dans les commentaires ci-dessous que SQL a été une norme approuvée à la fois pour ANSI , (American National Standards Institute) et Organisation internationale de normalisation ISO pendant des décennies, ce qui a de vastes répercussions sur sa prévisibilité et sa qualité - une considération commerciale très importante pour de nombreuses entreprises.
Jusqu'à l'apparition généralisée des SSD et du cloud computing au cours de la dernière décennie, SQL était le leader prédominant des langages de bases de données; avec ces nouvelles technologies, cependant, une nouvelle évolution des langages de bases de données apparaît également. Il y a eu quelques articles discutant du combler l'écart de prix et augmenter à la fois la popularité et l'accessibilité des SSD sur les disques durs. Il existe un excellent site Web pour classement des technologies de base de données disponible, qui pourrait vous intéresser. Vous pouvez voir que les bases de données SQL et relationnelles ont toujours une emprise solide, mais les alternatives NoSQL telles que MongoDB sont rampant également .
SQL a gagné en popularité au cours des dernières décennies depuis son décollage au milieu des années 80. Aujourd'hui, la nature "concrète" de sa popularité peut être considérée en ce qui concerne deux des sociétés les plus influentes de la planète, dont les produits d'entreprise reposent largement sur des solutions tournant autour du langage SQL. Ces deux sociétés sont: Oracle et Microsoft. D'innombrables petites, moyennes et grandes entreprises utilisent des produits Oracle et Microsoft, tels que Oracle 12c, Microsoft SQL Server et MySQL . Il est également important de noter l'impact de la communauté open source, qui au cours des 20 dernières années environ, où il était très courant de voir de nombreux développeurs utiliser PHP et MySQL ensemble à travers des choses comme la LAMPE, MAMP , XAMPP , et WAMP piles.
Les deux sociétés, Microsoft et Oracle, sont des goliaths logiciels, et les langages de programmation OOP qu'ils fournissent) sont deux des plus populaires: Java et C #.
Java, acquis par Oracle il y a environ 6 ans, est l'un des langages de programmation les plus populaires au monde. Par conséquent, Oracle a tout intérêt à s'assurer que son langage de programmation est utilisé en tandem avec MySQL, qui est la source d'un revenu très élevé pour l'entreprise.
C #, appartenant à Microsoft, s'intègre très bien avec SQL Server via les différentes offres de bases de données de Microsoft, telles que le stockage cloud dans Azure ainsi que les installations locales de Windows Server, qui s'exécutent généralement avec une instance de SQL Server Management Studio .
D'autres langages populaires comme PHP s'intègrent aussi bien avec MySQL, en raison de la nature open source de ces langages. Le LAMP (Linux, Apache, MySQL et PHP), ainsi que MAMP, XAMP et WAMP, ont également fourni une incursion dans un mélange de technologies open source prêtes à l'emploi qui étaient à la mode il y a environ 20 ans (et qui sont toujours très populaires à ce jour).
La communauté open-source autour de ces langages (en particulier SQL) est énorme, il est donc assez facile de trouver du support.
La langue elle-même est également très facile à comprendre et à lire, étant donné qu'elle est très proche de la façon dont vous structureriez une phrase logique en anglais (s'il y a une telle chose!).
Cependant, alors que SQL et d'autres bases de données relationnelles sont solides, d'autres technologies alternatives de stockage de documents, comme NoSQL, MongoDB , CouchDB et les implémentations NoSQL de Microsoft deviennent de plus en plus populaires ainsi .
Une partie de cette augmentation de l'utilisation des plates-formes de type NoSQL peut être due aux technologies matérielles physiques qui se sont installées sur le marché. Alors que les SSD et les disques durs deviennent plus comparables en prix , stockant les données sous la forme de gros documents JSON et dans le référentiel et systèmes de stockage d'objets , tels que Amazon Stockage S devient relativement moins cher, physiquement et financièrement, que vous envisagiez de le stocker sur votre propre disque dur localement ou quelque part dans le cloud.
Les offres cloud deviennent de moins en moins chères de jour en jour, et 1 To de stockage dans le cloud est pratiquement très bon marché aussi . J'ai personnellement 1 To de stockage Google Drive pour 1,99 $ par mois (environ 25 $ par an).
L'espace de stockage (physiquement) était auparavant un problème crucial, où de nombreuses bases de données SQL répondaient à un besoin d'un langage de données qui pourrait être utilisé pour maintenir le stockage des données aussi efficace que possible. C'est là que vous obtenez les applications de style CRUD (Créer, Lire, Mettre à jour, Supprimer). Lorsque vous stockez d'énormes quantités de données dans une base de données SQL, vous voulez éviter autant que possible la duplication grâce à un processus connu sous le nom de normalisation, qui a à voir avec la conception de la base de données de manière à avoir un mappage relationnel aussi efficace que possible . Cela aiderait la vitesse de recherche physique (également améliorée grâce à l'indexation), mais tout était centré sur une préoccupation majeure, qui était l'espace physique. Vous ne pouviez tout simplement pas vous permettre d'avoir d'énormes quantités de données en double. Sans parler de la nécessité de réplication et de sauvegarde de la base de données, pour se protéger contre des choses comme les catastrophes naturelles ou les pannes de courant, les terroristes, etc.
Les énormes entreprises avec d'énormes quantités de données de cartes de crédit ou d'informations sur la santé ne pouvaient pas se permettre de baisser pendant une minute, elles devaient donc répliquer et distribuer géographiquement leurs centres de données pour protéger les données de leurs utilisateurs. Cela était extrêmement coûteux, car chaque base de données avait besoin d'un point de terminaison physique, d'un ordinateur et d'un disque dur pour stocker la masse d'informations.
Avance rapide jusqu'à aujourd'hui, le besoin de taille physique est moins cher. Nous verrons probablement un changement de SQL au cours des prochaines années, mais il a une si grande base d'utilisateurs, et de nombreuses grandes entreprises sont si solidement ancrées, que cela prendra probablement un certain temps.
Cependant, de nouvelles industries, telles que l'infrastructure en tant que service, fournies par des entreprises comme Amazon avec leurs Amazon Web Services (AWS) - ainsi que Microsoft Azure , grands centres de données évolutifs remplis à ras bord avec des disques durs SSD haute capacité et moins gourmands en énergie, il est de plus en plus possible pour ces grandes entreprises de migrer vers des technologies plus récentes et plus efficaces. En conséquence, nous verrons probablement le changement de langage de base de données pour refléter de nouvelles limitations physiques, logiques et scientifiques.
Ce n'est pas le seul langage de requête ... Les langages de requête ont différentes variantes d'implémentation. Fondamentalement, SQL est considéré comme des normes de référence ou en interne, d'autres langages sont convertis en SQL.
Certains des langages de requête sont répertoriés ici .
Les développeurs C # utilisent très souvent le langage de requête LINQ .
C'est une très bonne question, mais vous pourriez plus généralement demander:
Pourquoi toutes les bases de données relationnelles sont-elles si remarquablement similaires?
Hormis les variantes plus petites qui viennent avec une interface graphique comme Access et Filemaker et les moteurs à utilisateur unique quelque peu spéciaux, les bases de données relationnelles partagent toutes un nombre étonnant de particularités:
En bref, même s'ils sont tous à la fois incroyablement incroyables et indispensables pour de nombreuses tâches de stockage et de traitement de données, ils sont également tous confus et originaux d'une manière étonnamment similaire. Vous pouvez voir comment après que le premier a été écrit, tout le monde l'a copié, et au fil du temps, les gens ont ajouté juste la fonctionnalité qui était cool à l'époque et qui a ensuite été copiée pour tous les joueurs.
Ceci est très différent des plates-formes de programmation, où il existe des paradigmes très différents et même des syntaxes très différentes au sein de chaque paradigme. De nouvelles idées sont également piratées sur une langue plus ancienne, mais le plus souvent, les gens créent de nouvelles langues et plates-formes. Java était un pas en avant en 1990. .NET était un pas en avant en 2002. Un langage à peu près aussi ancien que la base de données relationnelle serait C++, et cela montre. Seulement avec les bases de données relationnelles, on a pas d'autre choix que de les utiliser.
Je sais qu'il existe des bases de données "NoSQL", mais le paradigme relationnel est toujours extrêmement important. C'est triste qu'il y ait si peu de pluralisme là-bas.