標籤:

sql中為什麼select要放在from之前?

sql執行的時候明明是先從from開始,如果fro放前面也會對只能提示等提供方便,而C#中LINQ表達式里也是將from放在前面而將select放在最後。那當初設計sql的時候為什麼要這樣設計呢?


就是個taste問題而已,不必太糾結。當年的語言設計者的taste普遍…呃。

這就跟C系語言在函數聲明裡把返回值寫在函數名之前一樣,為了讓返回內容更加受關注。

int add(int a, int b);

要是按照數據的流動方向,把函數聲明的返回值放後面,那就會得到Pascal系語法:

Function Add(A, B : Integer) : Integer;

當然我們現在都知道,C#的LINQ語法的順序寫起來更方便IDE實現自動提示;但當年沒這麼高端的東西啊,沒需求沒驅動力。


因為那個時候,語言看起來和自然語言差不多是一件非常NB的事情,所以SQL就給整成了這樣,看起來更像自然語言。


雖然不知道為什麼這麼做,但是這裡我把sql常用語句執行順序都寫出來:

1.from子句

2.where子句

3.group by子句

4.having子句

5.order by子句

6.select 子句


linq的順序是反的喲,是from xxx where xxx select xxx

就是興趣問題


你看過英語裡面有 from a select b 的用法么╮(╯_╰)╭


因為SQL的前身是SEQUEL (Structured English QUEry Language), 後來因為商標的問題改名為SQL。設計目標就是與自然語言(English)貼近。


我覺得是這樣的,最開始的話應該是符合他們的說話習慣。

而且最初設計者可能只考慮實用,如果他們現在把智能提示的元素加入進去的話可能會把from放到前面去,因為如果你手打按這個順序select A打下去的時候,它不知道要從哪個表裡拿欄位給你提示,而如果首先是from的話,就知道在哪個表裡面了,就可以給你提示是ABC,還是ABD了呀。

最後,扯一個,剛好之前項目做過解析sql語句,不過是單表的查詢(排除多表哈),

select A, B, C from tableName....比 from tableName select A, B, C.....更好寫正則解析,因為第二種不知道什麼時候欄位名會結束了,要去每個欄位名拿去匹配看是不是關鍵字,然後結束。


估計是因為看語句開頭就能認出來這是個select語句


題主一定是自問自答來騙贊的


關鍵詞前置方便記憶。

強調做什麼而不是誰被做更容易閱讀。


推薦閱讀:

如何優雅地寫SQL?
為什麼公司不準使用SQL語句查詢的「*」?
sql語句面試問題?
如何自學SQL?
SQL 查詢按照家庭住址進行分組時,組內平均年齡小於50歲的組中成員的姓名和年齡?

TAG:編程語言 | SQL |