1. What tables are being pulled from? This speaks to the potential domain of the query. 2. What data is being selected (I can now know what is or isn't being pulled from the aforementioned tables...) 3. What operations, aggregations, groupings, etc. are being performed to work on the pulle data
Of course from vs select ordering is completely arguable, but my thinking process seems to follow that of the auto complete--in other words that my cognitive load of looking at the select statement is lessened when I know from what the columns are being selected.
It also follows (at least to me) the mental process of writing the query. First look at the tables, then decide what columns, then decide what functions to apply.
The language should be right for human understanding, not automated mad-lib generation.
I understand this is just an opinion but it's an opinion held by everyone in my org who writes both.
Theoretical correctness loses to pragmatism a lot and I'd read the KQL every day. Look at the examples at https://docs.microsoft.com/en-us/azure/data-explorer/kusto/q... - look at the examples at https://docs.microsoft.com/en-us/azure/data-explorer/write-q... and tell me they're not more readable than comparable SQL?
(I can see the result type both by hovering on the query but also by just looking at the end of it - and in SQL most of the SELECTed items in complex queries are from subqueries anyway - at least in my use case)
If you want nice autocomplete too, that's fine, but if there is a tradeoff, human understanding is the primary concern.
C#'s LINQ (really powerful tool similar to SQL) works the same way
look:
var list = new List<int>{1,2,3}
var extracted = list
.............................Where(x => x > 1)
.............................Select(x => $"my number: {x})
.............................ToList();
or
var extarcted =
........................from x in list
........................where x > 1
........................select $"my number: {x};
Toilets are absolutely designed to make the dispenser placement convenient. You just don’t think about it because 95% of toilets get it right, so it just doesn’t bother you that much that it can be wrong.
In SQL, some decisions are right about 10% of the time and are annoying and awkward the other 90%.
That’s why the order matters. Because everything else got it right.
Then, the ide could basically fill my from out for me, based on what I'm asking for. Can even suggest what join I will need, if I list columns from multiple tables.
Every table has more than one column
So there's always more columns to remember than tables and generally tables are pretty easy like user invoices blabla
I worked with systems that had like 500 tables and some of them with 20-50 columns
you really want good intellisense in such a environment
Good intelligent suggestions is, of course, helpful. And I agree that suggesting one of 500 is easier than the other. That said, neither is hard for a computer. And even asking friends what table I want will often be done with starting with the actual columns I want.
if you start query with
SELECT MiddleName then you could receive auto complete thats adds "FROM Users" and moves your cusor after MiddleName.
if you start query with
FROM Users SELECT _ and know intellisense drops list of columns
If you want an interesting example of how a query language built for developer experience and autocompletions looks definitely check it out!.