2008-11-06 30 views
6

根據您的經驗,專業程序編碼人員需要多長時間才能成爲專業SQL編碼人員?什麼是進行轉換的最佳方式? (不考慮數據庫設計技能)。可轉移技能(對SQL)

程序員有百分之幾是專業水平嗎?
a。自我評估。 b。無偏見的評估。

(以我的經驗,一個問題是程序設計者不領情多少,他們還不知道,有多少他們知道的東西並不適用。)

回答

4

Grokking SQL與Grokking大多數編程語言有所不同,因爲您需要獲得設置操作的感覺。話雖如此,它不再是一個比任何主要的編碼範例更難以理解的思維集合 - 例如從過程代碼轉移到oops(以及我所見過的比功能編程更容易:-))

未完全掌握SQL的人的標誌是使用過程等,當設置的操作更簡單和更快時,通過循環記錄進行操作。一個往往會遇到很多。 OTOH我發現一個好的標誌是適當使用UNION和HAVING子句 - 這兩者都在初學者聲明集外。我看過由經驗豐富的程序員編寫的代碼,這些代碼顯示出對SQL的理解不足以及相反的情況。

一個很好的初學者頭腦鍛鍊,以及如果我理解交叉連接和受限連接之間的關係,對我來說第一個'aha'時刻。我覺得這個基本概念實際上是更容易在舊的SQL語法理解,所以比如我們跨越從連接表A和B

選擇*,B

我們得到的a和b的笛卡爾乘積。在連接條件

SELECT *把從A,B,其中a.x = b.x

在概念上可作爲處理笛卡爾乘積然後在其中條件過濾它被觀看。極爲明顯的你可能會說(雖然很多人第一次來SQL並不明白笛卡爾的產品是什麼,這對於這個概念本身來說是值得的),但是這是一個有用的思路,一旦掌握了,諸如自我連接和複雜的多表構造之類的事情更容易讓你頭腦發熱。

4

這需要用關係集來思考很多努力和理解。這種阻抗不匹配是ORM在SQL技能較差的公司中很受歡迎的一個重要原因。

+0

+1同意......改變思維方式以思考套件總是似乎是SQL noobs學習曲線中最陡峭的部分。 – Kev 2008-11-06 03:59:49

+0

並且能夠操縱你的腦袋。一組結果是所有其他結果的補充。好的SQL程序員對Set Theory有多少了解,我想知道? http://en.wikipedia.org/wiki/Set_theory#Basic_concepts – 2008-11-08 06:40:35

2

我知道這兩者中的一些。專業地說,我深入瞭解他們。從技術上講,我覺得我經常只是觸摸表面,幾乎沒有形成酒窩。

最好的方法之一是艱難的方式,因爲必須得出一些結果。如果你讓我通過,一個智慧就是編碼T-SQL比基於理論的經驗更具經驗。也就是說,在理論上通常有很多選擇難以選擇,但如果運行真實的數據結果,則很明顯哪些結果是合適的。

5

關於SQL的好處之一是它的關鍵字少於您遇到的許多編程語言。學習語法非常簡單,就像鴿子所暗示的那樣,這是非常困難的應用程序。

專業程序編碼器成爲專業SQL編碼器需要多長時間?

這取決於程序員。我要說的是,你需要創造至少每對生產數據,這些數據庫對象二:

  • 存儲過程
  • 查看
  • 指數
  • 觸發
  • 用戶定義的函數

所以,這不是時間問題,而是知識問題。

我以爲我知道這些是如何工作的,但我現在正在處理1到8億行集合,以前的工作對於這些巨大的結果集是不夠的。值得慶幸的是,現在很多數據庫管理工具都很好用。這意味着我花更少的時間來抓我的頭,更多的時間編碼。

我認爲這些中最難的部分是數據庫特定的擴展。這些在數據庫供應商之間都不同。我只使用SQL Server,Oracle和Interbase/Firebird。過了一段時間,我放棄了試圖跟上所有這些,只專注於SQL Server,因爲這是我的城域最常見的。

2

這取決於你對「專業」的定義。

如果你的意思是「可僱用」,那麼幾周的強化學習/練習會讓你領先大多數從業者。規範化,基本關係理論,ANSI SQL以及至少一個主流DBMS提供者所帶來的變體,以及對平臺的查詢優化和索引功能的理解。但是,在許多公司環境(包括我的)中,除非您對SQL和關係數據庫有合理的理解,否則您很難聲稱您是任何一種開發人員; SQL是這些地方與他們的數據交流的方式。

我會選擇Oracle,IBM DB2,MS SQL Server,MySQL,Postgres中的至少一種,它們都有可用於開始學習過程的免費版本。

雖然自學可以教你很多,但如果你能得到他們的資助,我還會推薦你參加課程:我學習實體模型的那一週已經讓我有20年的歷史,而在平臺特定的性能和優化技術方面的體面實踐課程將是一個有用的啓動。