I can't resist having my little say on this "hot" topic.
We are kind of mixing multiple issues here. SQL itself is only a query language, originally developed for ad hoc reporting I believe and is not directly related to data integrity, rollback rollforward, transaction control etc.
Having said that most of the commonly available data base systems with these kinds of features use SQL as their query language but this is more an historical and marketing accident than anything else.
Efficient ISAM code should be significantly more efficient than SQL code in principle but the following applies:
Aside from products like ADS if you are using ISAM files you are doing individual queries and if these have to traverse a relatively slow data pipe that is not client-server then your performance will be poor vis-a-vis a good query languauge (SQL) client-server architecture.
Also many client-server products have features such as server side triggers and (often pre-compiled) stored procedures.
xBase files don't support variable field lengths which many client-server solutions do which can be space inefficient but then again so can client-server engines depending upon page sizes etc.
In my opinion SQL is ugly from an OO perspective because it is efficient only if you "bundle up" queries rather than a more atomic approach which is native to ISAM. The way forward in my opinion is OO databases.
It would be nice to write an xBase client server back end stub and spilt our code between client and server all in the language we love. That could be very efficient. Mine would have to run on Linux.
Nice thought but as I need speed for my users operating across an internet based VPN sooner rather than later I will probably just have to use SQL and something like Postgre.
Happy coding to all
xProgrammer.