古舊的sql應該有點新樣子

 

sql曾經讓人驚喜。一個初哥剛剛寫程序的時候,發現需要連接兩張表,並且做些排序之類的工作。在不知道sql的情況下,覺得真的很麻煩:需要自己做循環,裝入A和b兩張表,

 

循環一個,然後根據鍵值和另一個表的鍵值匹配,然後自己做排序。想起來好頭痛。我和他說,OK,這是sql可以搞定的。

只要select * from a join b on a.id =b.aid order by c 。就這麼簡單。別笑他,他覺得興奮而雀躍。

 

10年過去了,一點點發現sql真的很有改進空間。試着舉例。

 

1. 單表查詢可以更加簡潔。

   當我們需要帶條件的查詢一個表的時候,需要

    select * from A where b = '' and c = 0 

   難道不可以

    A?b=''&c=0 

   看起來是不是同樣的效果,但是清爽的多呢?

 

2. 多表查詢可以更簡潔。

   當我需要join的時候,比如

   select * from a join b on a.id =b.aid order by c  

   好,我就這樣寫吧。

   然後當我在其他地方需要a和b的時候,我還是一樣的需要

    a join b on a.id =b.aid 

   一個系統,這樣的join非常多,於是這個on條件就要到處寫。

   可真實情況是:一旦表設計確定,a和b的鏈接基本上都是用a.id ,b.aid這樣的主鍵和外鍵來鏈接的。

   這樣在系統中就有大量的重複了。

 

   爲什麼不一次配置,然後到處使用這樣的on條件呢?

 

    比如:

     set a join b on a.id =b.aid 

     select * from a ,b order by c

 

3. sql很笨。

  有時候,我希望來一個select a* from b 把b表的所有a開頭的字段都選擇出來,可是sql不行。它一定要select ad,ae,af from b 一板一眼的把所有需要的字段寫完。

  或者我希望把b表的除了a字段外的其他字段選擇出來,比如select [ all field except a] from b 。當然這樣也是不行的。

 

可見,sql是冗餘的,是不夠清爽的。

 

有人說,hi,語法嗎?關係不大了。請問爲什麼很多人喜歡c的語法,而不喜歡pascal的呢?爲什麼大量的語言都採用了c的語法,而不是pascal,或者該死的cobol呢?程序員總是

 

喜歡更加簡潔的。

 

有人說,hi,重複一點有什麼關係呢,還不是爲了讓人更加容易閱讀嗎?可是讓人容易閱讀並不非要冗餘。重複帶來的問題就很麻煩了。重構技術解決的就是冗餘問題,sql生出來

 

的年代太早,並不會考慮到重構技術的要求;

 

有人說,hi,sql是標準啊。沒有錯,標準是夠害人的。這些年計算機通用語言競爭激烈,方興未艾,而sql一家獨大也久矣,我們至少應該對新的sql寄予希望。

 

sql太老了,並且經年不變,需要引入新的血液了。

 

我認爲htsql就是這樣的嘗試,它定位於初哥使用,而我的看法是它應該用htsql的這樣的語言設計替代掉蒼老的sql。

 

看看這個地址,很簡單。也許你會喜歡它。

http://htsql.org/doc/tutorial.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章