SQL
SQL is the Structured Query Language. SQL provides a way to request data from a database without knowing the details of how the database stores the data. SQL also provides a way to update data, define data, and new extensions to SQL provide a procedural programming language.
SQL started in 1970 with a description of a relational database. The description included a data query language. SQL was developed to achieve the same result with a simpler query language.
SQL has a syntax for selecting data, a similar syntax for updating data, a similar syntax for defining data, and lots of additions that are specific to a brand of database. Some brand specific extensions are eventually added to SQL.
Versions of SQL are named after years, like SQL 2006. There are additional variations for different types of data. Dates were, for a very long time, extremely difficult.
Data problems
Relational databases are good at storing strings and integers. Everything else is, or was, a problem. Dates were so difficult that many people ignored the built in brand specific dates and used integers for each component of a date. while the date problems were worked on, there were new problems created by map references, GPS coordinates, and many other data types.
IBM solved some problems in their pioneering DB/2. PostgreSQL provided some really well thought out ideas. The Oracle database was supposed to be a brilliant leap forward with the first commercial SQL but when I had to use Oracle on a project many years ago, Oracle proved to be a real problem, way behind PostgreSQL.
The IBM DB/2 brilliant design ideas were internal to the database, producing consistent good performance for difficult SQL queries without requiring any changes to SQL. The Oracle "performance" improvements that screwed up a project where strange changes and required special alterations away from standard SQL. You should avoid databases that require non standard SQL for things that are already in the standard.
Criticism
There are several criticisms of SQL. Most are things that became important long after the first version of SQL was published and many were fixed in updates to SQL. As an example, GPS style location data was not available when SQL was created.
Unstructured data, including documents, were available before relational databases. Some complaints about SQL point to the lack of SQL support for this random data. Relational databases were not designed to solve the problem of accessing items inside random structures. Relational databases are designed to handle organised indexes into random structures with something else extracting the random data for the indexes.
A modern equivalent would be the Solr search engine which depends on separate procedures to extract indexing data from each type of data structure. You can easily replace Solr with an SQL database. You just need a common agreement on data to index, something you have to do with Solr. Solr does not fix the problem of indexing documents with random structures, or reduce the workload, Solr just replaces some of the difficulties with other difficulties.
A solution that works
SQL was supposed to be replaced by NoSQL, a big shift in fashion a decade ago. Now NoSQL databases are adding SQL layers on top to reduce the problem of accessing NoSQL data. SQL continues to work for most uses. The alternatives continue to work better for specific uses and fail to work better for the majority of data requests.