I think any time SQL is involved in a hate, you need to hate the people who designed SQL for trying to make it "user-friendly" and english-like instead of defining a statement syntax that clearly distinguished components of a statement and sticking to it.

None of these optional "noise" words and other english-likeness nonsense.

I'd love to access a database using code like:

(select column-list selector-expression)
(with table selector-expression)
(group column-list query grouping-expression)
(order query order-list)
(join query-list join-expression)
...

So instead of "SELECT crust,count(fillings) AS fillings FROM menu WHERE cheese='extra' AND topping='liver' GROUP BY crust;"

You get (group ('crust ('fillings (count fillings))) (with 'menu (select ('crust 'fillings) (and (eq cheese 'extra) (eq topping 'liver)))) ('crust))

Yes, it's longer, but it's unambiguous what it means and it describes the transaction declaratively, and you're not mixing up the selection with the grouping and the whole namespace issues about where you can use "column-name" and where you need "table.column-name" go away, because they're explicit in the "with" expression or they apply to the *single* selection in scope.

Reply via email to