開發者必知 學習SQL的九個理由
原文連結:enter link description here 作者:ericwtou
事實上,有很多你可能正在學習的很酷的新事物,似乎每12.8秒就有一項新技術出現,那到底為什麼你要花費空閒時間學習一門像SQL這樣又老又臭的語言呢?讓我告訴你我的理由。
SQL是可移植的
計算機系的學生們在獲取他們的學位時被教授數以百計的技術和理論概念,其中的許多資訊並不能直接應用於每日的程式設計任務,但SQL介紹給學生們能夠在不同平臺間轉移的基本概念,不同的平臺擁有共通的詞彙表和工具組,學生們能帶著它們去任何地方。
儘管每個資料庫廠商實現他們自己的擴充套件,但廠商的每個新版本都符合ANSI/ISO SQL標準。標準相容儘管很微妙,但也使你能夠攜帶著你的知識從一個平臺到另一個平臺。如果你學習SQL,你將會預備好從一個資料庫轉移到另一個。
SQL從不改變
我的好朋友和商業夥伴開玩笑說他成為一個資料庫管理員是因為SQL已經35年沒有變化了,這大部分是真的。廠商實現他們自己的擴充套件並最終使其加入到 SQL標準,但SQL的核心沒有改變。一旦你理解了SQL的基礎和關係原理(並不那麼難),你會發現你能夠繼續依賴這些知識,新增那些你本來依靠其他工具 或開發者來實現的特性和功能。
SQL易於效能增益
在一個應用程式中僅有幾個地方能夠實現效能增益 - 表示層、應用層和儲存層。事實是,你的程式碼已經寫得很好並且很好地調整過,從那裡獲取效能增益會好比從石頭中獲取血液一樣艱難。另一方面,資料庫是一個容 易做一些簡單改變(新增一個索引,稍稍修改一個查詢)並看到巨大效能改善的地方。在花費了我的職業生涯的可觀部分,以一個應用程式開發者的身份盯著資料庫 分析器之後,我能為之證明。從程式程式碼中獲得效能改善是可能的,但現代的框架和工具通常都編寫良好,因此資料庫通常是一個更好的地方(也被認為是更容易的 地方)為效能改善找到低懸的果實。
SQL使你成為更好的開發者
《程式設計師的修煉之道》一書激勵開發者每年都學習一種新 語言,並不是因為環境在持續地變化,而是因為學習新的語言向開發者展示了新的模式。思考問題時有不同的思路,並且它們能夠很好地應用於不同的解決方案(通 過鑽研函數語言程式設計我最近學了不少)。學習SQL能夠教會你以集合而非迭代的方式思考。長期來看,這會改變你與資料打交道時的思維方式,使你的資料庫程式碼得 到改進。
增進團隊間的交流
你是否曾經試圖和語言相同但說非常不同方言的某人交談?在工作之外,跨越語言的藩籬交流會 很艱難,但當一個專案的成功依賴於此則完全令人抓狂。學習SQL會在你與資料庫管理員團隊交流你的目標時給予幫助,他們不需要解析你的意思,你可以確切地 告訴他們你的需求。最終誤解更少了,事情能夠更快地完成,你不再會是“那個讓人抓狂的開發者”。
工作保障
我討厭這樣 說,但學習SQL可能意味著當旁邊隔間的Ted在裁員季被解僱時你能保住你的工作。你擁有越多的技能,你能履行越多的工作職能,你就變得對現僱主越有價值 (還有未來的僱主)。如果你能同時與資料庫團隊和開發團隊一起工作,你就成為了一個有價值的資源,兩個團隊都要依靠你獲得成功。
SQL真的不那麼難
和普遍的觀念相反,SQL不是難以學習的語言。SQL是一種不同的思考方式,這是肯定的,但它並不難。那只有記錄在ANSI/ISO標準中的為數不多的 指令、操作符和資料型別。雖然廠商會新增他們自己的特性,但仍有一部分精簡的核心知識你能學習並且應用到你去到的每個地方。
理解什麼時候不適合資料庫
資料庫對於解決很多問題是現象級的工具,但對於解決更多的問題則是糟糕的問題。換言之:你也許不應該用一把錘子去挖掘壕溝。通過學習和理解SQL,你將能夠做出更好的決定並將表現糟糕的程式碼移出資料庫。事實上,你將能夠在問題形成之前就將其發現。
一旦你理解了SQL,你會更好地領會一個關係型資料庫管理系統的侷限性。你會知道應用程式的哪個部分能夠安全地存在於一個資料庫,而哪部分需要被移動到 不同的分層。一些資料驗證應該和資料存放在一起,而另一些則不應該。理解SQL如何工作會幫助你決定哪些規則應該保留在資料庫裡。
讓故障排除更簡單
執行中的應用程式難以故障排除眾所周知。越多的複雜度和分層被涉及到,就越難以為一個應用程式排除故障。對於SQL的良好理解讓快速地將存在於資料庫中的問題隔離變得可能。換言之:理解SQL使將問題定位在你的應用程式的多個不同分層中的某一層變得簡單。
相關文章
- 開發人員應該學習SQL的9個理由SQL
- 10個學習Python的理由Python
- 10 個開發者必知的 MySQL 8.0 新功能MySql
- 15個必知的Android開發者選項Android
- 學習MyBatis必知必會(7)~註解開發、動態SQLMyBatisSQL
- Web開發者必知的10個職業常識Web
- Web 前端開發者必知的9 個CSS屬性Web前端CSS
- 你該學習 Python 的 7 個理由Python
- 必知必會sql面試題練習總結之學生課程篇SQL面試題
- Web開發者必知的25個Apache效能優化技巧WebApache優化
- 學習 Laravel 必須理解的知識點Laravel
- ARM學習中的必知基本常識
- 學習爬蟲必須學的基礎知識爬蟲
- 孩子應該學習程式設計的 5 個理由程式設計
- 【觀點】學習JavaScript的理由JavaScript
- SQL必知必會筆記(上)SQL筆記
- SQL必知必會筆記(下)SQL筆記
- iOS開發者必備:九大設計類工具iOS
- 每個程式設計師都需要學習 JavaScript 的7個理由程式設計師JavaScript
- 黑客都用Python?學習Python的4個理由!黑客Python
- 7 個你現在就該學習 Python 的理由Python
- 學習MyBatis必知必會(6)~Mapper基礎的擴充MyBatisAPP
- Python程式設計師必知必會的開發者工具Python程式設計師
- 每個Android開發者必須知道的記憶體管理知識Android記憶體
- 學習SpringMVC必知必會(2)~走近Spring MVCSpringMVC
- Android開發者珍藏必備【學習資料篇】Android
- Mysql必知必會練習MySql
- SQL 必知必會 50 題(1 - 5)SQL
- 《SQL必知必會》讀書筆記SQL筆記
- 學習SpringMVC必知必會(3)~springmvc的請求和響應SpringMVC
- Tensorflow2 深度學習十必知深度學習
- 雲端計算教程學習入門影片:雲端計算學習的必學知識
- 學習AJAX必知必會(4)~JQuery傳送Ajax請求jQuery
- Linux統治超級計算領域的九個理由Linux
- 前端開發者喜歡的20個學習文件前端
- 安卓開發者必備的六個工具安卓
- 安卓開發者必備的幾個工具安卓
- Vue開發者必會的基礎知識盤點Vue