“SQL 被低估了!”
一直以來,結構化查詢語言 SQL 憑借著快速、無需編碼、可移植性、明確界定標準等特性深受開發(fā)者喜愛。且自從被加入 TIOBE 編程語言排行榜以來,SQL 就一直保持在 Top 10 的范圍內。
對此,你怎么看?
以下為譯文:
在我的職業(yè)生涯中我學習了很多技術,但是我覺得最實用的技術當屬 SQL。對我來說,SQL 是最有價值的技術,原因有以下幾個方面:
SQL 在不同的職責和學科中都很有價值。
只需學習一次,一勞永逸。
你可以成為超級英雄。掌握這門技術,會讓你變得非常強大,因為很多人都沒能熟練掌握這門技術。
SQL 是一個可以隨處使用的工具
無論你的職責是什么,你都可以通過 SQL 讓你工作變得更輕松。目前作為一名產(chǎn)品經(jīng)理,我的工作重心在于查看數(shù)據(jù)、分析我們在產(chǎn)品方面的影響以及塑造產(chǎn)品規(guī)劃藍圖。如果我們剛剛發(fā)布了一個新功能,那么相關的數(shù)據(jù)(比如是否有人查看這個功能等)可能都保存在關系數(shù)據(jù)庫中。如果我正在追蹤一些關鍵性的指標(例如月度增長),那么很可能這些數(shù)據(jù)也保存在關系數(shù)據(jù)庫中。另外,我們所有的工作(例如系統(tǒng)記錄)都需要使用 SQL。掌握如何使用 SQL 可以為我節(jié)省大量的工作,因為我無需向他人詢問具體的數(shù)字。
但是,即使在成為產(chǎn)品經(jīng)理之前,我也會使用 SQL 來了解系統(tǒng)內部的情況。作為一名工程師,通常我可以通過 SQL 更快地獲取我想要的信息,而無需使用 Ruby 或 Python 編寫腳本。當我的 webapp 變得非常遲緩時,我必然需要了解其所執(zhí)行的 SQL 以及優(yōu)化的方法。當然,這遠遠超出了對 SQL 基本的理解……但是為查詢添加索引就可以解決問題,而無需增加緩存,這還是非常值得花費額外的時間學習。
SQL 的知識具有持久性
我記得大約在20年前,我創(chuàng)建了第一個網(wǎng)頁。我感覺非常欣喜,還加入了一些 Javascript 來強化頁面,提示用戶點擊是/否或提供一些輸入。后來,大約在10年前,jQuery 問世了,雖然有時它很冗長,但是學習新功能可以讓頁面整體上更加美觀,所以我重新學習了 JS 的 jQuery 方法。再到后來,Angular - > React / Ember 相繼出現(xiàn),現(xiàn)在為了將基本的 Javascript 引入我的網(wǎng)站,我需要一整套的流程,而現(xiàn)實情況是我所做的仍然只是讓用戶點擊是/否——與20年前一樣。
相反,SQL 卻沒有太多改變。雖然它已經(jīng)發(fā)生了改變——成為了現(xiàn)代的 SQL,但是我仍然認為與其他技術相比,這點變化幾乎微不足道。沒錯,每隔幾年就會一個新的標準問世,偶爾還有新的內容(比如支持窗口函數(shù)或CTE),但是 SQL 的基礎知識始終如一。只需學習一次 SQL,你就可以在工作中反復使用,而無需重新學習。請不要誤會,我喜歡學習新的東西,但我寧愿學習一些真正的新東西,而不僅僅是完成同樣任務的另一種方法。
SQL 的獨一無二
大多數(shù)應用程序開發(fā)人員都未能熟練地掌握 SQL,他們沒有認真學習這項技術。正因為真正掌握 SQL 的人非常少,所以可能你看起來更加出眾。我原來的公司擁有數(shù)百名的工程師,每周都有好多人(從初級工程師到高級首席工程師)來問我:“你能幫我看看這個查詢該怎么寫嗎?”因為你掌握了某項很少人掌握的技術,所以你可以幫助別人,而當你遇到困難需要他們幫助時,他們也會義不容辭。
如果你還未能精通 SQL 的話,或許可以馬上行動起來。
你怎么看?
對此,網(wǎng)友們也各抒己見:
評論1:
SQL 是我見過的最令人嘆為觀止的一個概念。它有將近五十年的歷史,而且沒有絲毫要被取代的跡象。我們創(chuàng)造無數(shù)的其他技術來存儲和處理數(shù)據(jù),但似乎我們總是在設法利用這些技術(例如 Hive,Presto,KSQL等)重建 SQL。
我在經(jīng)營一家創(chuàng)業(yè)公司,為客戶構建分析基礎架構。我們非常重視 SQL,而本文的內容非常真實。
與普通的軟件工程師相比,分析師和數(shù)據(jù)科學家在工作中編寫的 SQL 越來越多。
MMP 數(shù)據(jù)倉庫(redshift,bigquery,snowflake等)的出現(xiàn),使得即使預算有限的公司也能夠使用 SQL 來存儲和查詢大量數(shù)據(jù)。SQL 比以往任何時候都更強大,更有價值。
如果注意觀察某個普通的企業(yè),你會發(fā)現(xiàn)大多數(shù)軟件工程師都不擅長 SQL。他們怎么能這樣?大多數(shù)復雜查詢都是分析查詢。ORM 可以處理應用程序代碼需要處理的大多數(shù)基本功能。
但是,本文沒有提到一點:許多后臺的工程師已經(jīng)抽象出了 SQL,當然還有前端和移動。所以即便你不太了解 SQL 也可以成為一名優(yōu)秀的開發(fā)人員。
另一方面,擁有初級或中級分布式文件系統(tǒng)、流媒體數(shù)據(jù)或各種其他 NoSQL技術知識的“數(shù)據(jù)工程師”涌現(xiàn)了出來。通常他們對原始 SQL 的了解甚至比初級工程師更少,因為 SQL 位于他們強大的數(shù)據(jù)工具的底層。
但是,如果你真正掌握了 SQL,再加上如今掌握這項技術的少之又少,所以你可以擁有巨大的權力。可能比以往任何時候都強大。
評論2:
眾所周知,SQL 是關系數(shù)據(jù)庫語言,其基礎是關系代數(shù)與集合論,因為有了這樣強大的后盾與堅固的基礎,所以 SQL 可以經(jīng)受住時間的考驗而長久不衰。也正是因為這個原因,歷經(jīng)多年乃至在不同的職責下你也不需要重新學習。
但是,這并不是說 SQL 就是完美的,事實上 SQL 距離“完美”還差得非常遠。因為 SQL 還有很多未能很好地支持,甚至背離關系模型之處。
舉個最簡單的例子,關系模型基于二值邏輯(即真/假),而 SQL 是三值邏輯:真、假、NULL。平白多出一個 NULL,其引發(fā)的問題也非常多,例如:
(A = B) OR (A<>B)
很顯然這是一個恒真表達式,要么相等,要么不相等,還有第三種選擇嗎?有!在 SQL 中,如果 A 為 NULL 或 B 為 NULL,則這個表達式的結果為 NULL。
除此之外,還有 SQL 中有重復數(shù)據(jù),但是集合論中沒有,重復的數(shù)據(jù)在集合中會被視作一個。
最后再說一個,集合中的數(shù)據(jù)項沒有順序,而 SQL 表中的列有從左到右的順序。
所以,我們希望 SQL 能夠緊緊圍繞關系代數(shù)與集合論,取得更好的成長與發(fā)展。
工作一到五年的程序員朋友面對目前的技術無從下手,感到很迷茫,高清思維導圖及相關視頻資料獲取方式關注+轉發(fā)+加群:714526711里面有阿里Java高級大牛直播講解知識點,分享知識,課程內容都是各位老師多年工作經(jīng)驗的梳理和總結,帶著大家全面、科學地建立自己的技術體系和技術認知!
轉載于:https://blog.51cto.com/14207296/2356982
新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎!定制產(chǎn)品紅包拿不停!總結
以上是生活随笔為你收集整理的“SQL 被低估了!”的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python学习之老男孩python全栈
- 下一篇: 数组的迭代