1. 資料庫應該怎麼學習,零基礎。
1、 自己在windows和linux上安裝了mysql,自學linux的基礎知識,學習mysql的最基礎的知識,即怎麼寫sql,存儲過程,表的設計等,從0到熟悉大概花了3個月 ,推薦《mysql入門很簡單》。
2、系統地較為深入地學習mysql的sql優化,備份和恢復,參數優化,架構優化,硬體層面的優化,高可用方案,復制技術等等,這段時間你不一定能實際接觸到這些,就像我當初那樣,肯定沒什麼公司招一個小白。
我選擇自己看書,推薦《高性能mysql》,裡面所有的章節都需要看一遍,以現在的水平肯定看不懂,但需要知道大概怎麼回事,為後續的找mysql初級dba的工作打一個鋪墊,這個過程大概也需要3個月。
3、 紙上得來終覺淺,完成以上兩步,我開始准備找一份mysql相關的工作,而不是天天用著excel表格做著select * from table_sb這樣的工作。
當然我這么猥瑣的人肯定不會裸辭,該畫的電路板也一樣畫,業余時間開始投初級mysql dba的工作,並且不間斷地學習,網上各種找mysql面試的相關題目(實際上我當時完全沒有任何實戰經驗),陸續收到一些面試,憑借之前自學的mysql知識,開始胡亂吹牛逼,先混進去再說。
你不做mysql實際相關的工作,永遠也不知道自己之前認知的db知識有多幼稚。
友情提示一點,一般公司都沒有專職dba的,所以面試的時候一定要自信,其實你學了這么多,雖然毫無實戰經驗,理論知識很大概率比面試你的人牛逼,所以各種吹,我就這樣真正進入初級dba的圈子(由於這時對linux還處於cd ls的水平,所以之前也根本沒做過運維),這個邊工作邊找工作的過程又持續了2個月。
4、真正進入互聯網,接觸生產環境後,這是我進步最大的時候。
第一步需要將之前所學真正地應用起來,並且應用的過程中,再回頭看之前的書籍,這時候需要真正去理解,而不是似是而非,一知半解。
這時再推薦《高性能mysql 第三版》,全本再看一遍,這時需要全部看懂,另外還有《mysql技術內幕:innodb存儲引擎》等等。
總之這段時間就需要開始關注mysql一些細節了,比如db故障處理,高可用,負載均衡等等的具體實現了。
另外,linux的知識同步也要深入去學習,至少會寫shell腳本,常見的linux知識等,我在這花了1年多;
5、 dba的工作一般是非常輕閑的,畢竟不是大公司,技術能力有限,該學的也學得差不多了,接觸不到海量數據,高並發等比較鍛煉人的場合,於是我又准備跳了。
於是來了公有雲,現在每天運維萬多個db實例,平均每天處理5+個緊急db故障,幾乎mysql會遇到的問題,感覺都遇到了,能感覺到技術實力和經驗也在每天都在積累,在進步。
但是感覺還是欠缺了很多,下一步就看你選擇了,是再去研究源代碼,底層原理的東西多點,還是資料庫運維和應用多一點,就比如業界姜承堯,何登成與葉金榮的區別。
由於我的歷史原因,對c++等幾乎不懂,平時也用不到,所以看代碼等事實際太累,於是我再去學mongodb,接了公司mongodb運維的活,算是在廣度上的一個擴展,萬一哪天mysql不行了呢
6、 總之,對於db小白來說,最重要的一點就是,學習的過程不能斷。
PS 上面的方法比較野路子,適合沒什麼基礎的童鞋,如果本來就是DBA,比如從oracle轉到mysql,那麼建議直接看mysql官方文檔,而官方文檔是db達到一定水平後必看,出問題時必查的權威文檔。
2. 零基礎如何學習資料庫
學習資料庫從了解到認識到使用是要很多時間的,需要學習的東西很多。如果為了企業的一些資料,數據便於利用存儲,而且不是什麼大企業還是什麼大項目,用SQL有點專業了。你如果是自己用還是只是了解會一點,那就學個簡單點的。
資料庫都很復雜,不用的軟體就是能實現的功能和他運行的速度有所不同。如果學的不是很深的話,就學office的access。一般是陪在office的辦公軟體里的。書籍先去看下電子書,下載個PDF可以瀏覽的軟體,然後上網上去下載電子書,有資料庫專用書之類的。裡面還可以下載比較舊版本不用錢的軟體,就如你要的SQL資料庫或是Photoshop這些軟體都有的。
3. 如何學好資料庫
如果學習好SQL語言,基本的開發是沒有什麼問題的。當然,這也是您學習資料庫的基礎和開始。
如果您以後的職業取向或定位在應用軟體的開發,再簡單地學習資料庫系統構架已經是沒有什麼大的工作障礙了。
如果您立志專門從事資料庫的開發,您就得學習不同商業資料庫的的構架極其SQL語言的擴充,當然,不是非要得花很長的時間去研究,剖析。最好您有一定應用目的,基於應用的學習在知識了解的速度上有所保障,且能夠對此商業資料庫的基本應應用有重點,有目的的掌握。
當然,您必須對資料庫的基礎理論有著非常扎實的功底,因為在中國的公司里,分工即使再明確,也要求資料庫開發人員必須設計庫,表結構,開發存儲過程等。如果您天馬行空地設計了一個非常糟糕的資料庫,您以後的開發工作也非常的困難,更不用說應用程序員門的艱難處境了,最後到產品庫的時候,給客戶的可能是一個用銀河也束手無策的垃圾庫。
哈哈,誇張了點呀!另外,CASE工具,你掌握一兩個,提高效率嘛,多出來的時間陪陪MM也好呀,放鬆精神,心理減壓。有利於身心健康!
如果,您的最終目標是作一個高收入的DBA的話,麻煩您一定要有最少2年的資料庫的專門經歷。拜託給點專業精神,要知道您身系真個系統的安危,如果沒有3把刷子,您兩把總得有吧。想想您,有操作系統的功底嗎/對所用資料庫的系統構架熟悉嗎/了解備份策略嗎?了解安全策略嗎?了解優化策略嗎?
如果都是NO,NO ,NO,NO ,NO的話,您回家賣紅薯吧。要知道把您賣了,也抵不上那些應用因為宕機,崩潰而造成的損失。
說實話,我鄙視,從內心鄙視那些急功近利的剛從學校出來就想著掙大錢,而削尖腦袋考OCP的傢伙。沒有水平就算了,要知道因為他的無能可能造成損失,或對其他同事的負面影響有多大!!
在國內開發性公司,一般DBA是一個TEAM的核心人物!要設計庫,表,各項策略,協同開發,隨隨便便的一個學生,沒有工作經歷,沒有大應用的經歷,憑著過人的記憶力背下N多的模擬題,然後拿個碩士的光環迷住別人的眼睛。搞定!
咳,是俺有些憤世嫉俗了!不好意思,在此我沒有任何小看剛剛畢業的兄弟。畢竟,偶也是剛剛跨出校門不久的人。只是希望各位踏實地干點資料庫開發,有點系統整體應用的意識後,再考DBA不遲。不然,您即使考過了OCP,蒙過了HR的頭,也蒙不過和你共同作戰的同事門的眼睛。遭人背地恥笑,當面挖苦又何必呢,何苦呢?
最後,咱會到各位戰友的FAQ的主題上,沒有最好的書,但有很好的書。 在資料庫理論基礎上,有一本《資料庫系統概念》,中英版皆為原版,字體端正。而且,對照著看,您會英語,資料庫一同提高,何樂而不為呢,不過,您得有大量的時間去鑽研。
如果您是學生的話,我強烈推薦,至少這是小弟我的成長經歷。 如果您沒有時間的話,老薩,或王珊老師的書,適合與工作的,但對資料庫不是非常的了解,您看看無妨。
如果您想學SQL,您可以到可以看一本好象是《輕松掌握SQL》第三版。那本書對標准SQL92的學習比較的合適,而且用例詳實。適合初,中級的朋友看看。
另外,您有時間看看OS方面的書,WIN2000管理,和UNIX的系統管理對您或許有幫助
4. 資料庫好學嗎
學習資料庫,最主要的是興趣,如果沒有興趣,學習起來會顯得枯燥、增加學習的難度。
5. 初學者怎麼學資料庫
基本上操作各種資料庫不近相同,其中access是小型資料庫,sqlserver與oracal是中型的,DB是大型資料庫。
1、學習資料庫的SQL語句,每個資料庫基本上上不多,但是都有自己的不同,有的時間類型用『』標識有的用#等。但是基本的SQL都是一樣的select ,update,Insert,Delete,基本上學會了基礎的,就學習高深一點的,如何聯合表查詢,編輯,修改。
2、這些熟悉以後,就要學習一下資料庫的一些常用的系統函數,再之後就是要學習,存儲過程,函數,觸發器,事務。基本資料庫這部分就沒有什麼問題了,只要不做高級的科研什麼的,這些知識就都夠了。要想學好資料庫,就要多聯系,自己創建一個帶有邏輯的符合第三範式以上的資料庫,然後寫寫SQL、觸發器、存儲過程、試圖等。最重要的就是,把他們之間的邏輯搞清楚。
3、如果您想學資料庫,可以看看深度剖析Exadata資料庫一體機視頻課程。
6. 怎麼學好資料庫
1.入門書籍。個人認為找一個名聲好點的出版社,先跟著一步步學習,培養思維;
2.網站教程。找一個簡潔點的教程,跟著邊學習邊操作,我當年就是跟著樹懶學堂學習的;
3.有條件的朋友可以可以參加一些技術培訓。
這么看來,還是2最靠譜了。
7. 如何學習資料庫
純初學者推薦圖靈出的《SQL必知必會(第4版)》,這也是Amazon上最暢銷的SQL圖書的中文版,寫得很明快,概念非常清楚。這本書用來學習關系型資料庫也很不錯,至少基本概念比大部頭的教材說得清楚得多。
我印象最深的是,其中講數學味道特別重的關系時,直接說到Codd論文(以及關系型資料庫理論)里的所謂關系其實就是SQL中的表,聞之大悟。
此外O'Reilly的Head First SQL也很適合初學者,不過中文版《深入淺出SQL》好像絕版了。
提高的書,圖靈出過《SQL解惑(第2版)》,《SQL沉思錄》、《SQL編程風格》、《SQL權威指南》,都是名作。O'Reilly也有幾本很好的,但不知道中文翻譯如何。
8. 怎麼可以學習資料庫呢
就有點SQL的基礎知識,該怎麼學好Oracle?
--從SQL起步,依次學習select,insert,update,delete,分組函數,各種連接,合並,許可權管理,同義詞,schema.
然後學習PL/SQL的函數,存儲過程,序列,觸發器,事務,動態SQL,異常處理.
SQL優化也要了解一些(執行計劃)
如果不學DBA這些就足夠了.
另外問一下sqlserver和Oracle是處理數據的軟體嗎,還是指什麼?(一提資料庫,都說SQLSERVER,Oracle,Access他們本質上是什麼?是軟體,還是指儲存數據的不同模式?)
--對,都是資料庫軟體.
本人有C++基礎,學資料庫要用的除SQL外的編程語言嗎?(要用到多少)
--Oracle要用到PL/SQL(和SQL有所不同...如果你學SQL Server,要用到T-SQL)
另外推薦幾本書看看(這是重點)
--推薦steve feurstein的oracle pl/sql programming(不好意思,我看的都是英文書.可以去書店找找影印版...)
基本上操作各種資料庫不近相同,其中access是小型資料庫,sqlserver與oracal是中型的,DB是大型資料庫。
1、學習資料庫的SQL語句,每個資料庫基本上上不多,但是都有自己的不同,有的時間類型用『』標識有的用#等。但是基本的SQL都是一樣的select ,update,Insert,Delete,基本上學會了基礎的,就學習高深一點的,如何聯合表查詢,編輯,修改。
2、這些熟悉以後,就要學習一下資料庫的一些常用的系統函數,再之後就是要學習,存儲過程,函數,觸發器,事務。基本資料庫這部分就沒有什麼問題了,只要不做高級的科研什麼的,這些知識就都夠了。要想學好資料庫,就要多聯系,自己創建一個帶有邏輯的符合第三範式以上的資料庫,然後寫寫SQL、觸發器、存儲過程、試圖等。最重要的就是,把他們之間的邏輯搞清楚。
9. 如何學習資料庫知識
好像武俠小說里邊說的:「你的招式忘了沒有?」,回答:「差不多忘了」,「忘了就好」。
這與資料庫編程有什麼關系?關系可大了。同志們學過Pascal、BASIC、C(C++)沒有?如果沒有,FOXBASE、FOXPRO應該學過吧?按以上這些語言編程,都是過程化的,說白一點就是一個數據一個數據、一條記錄一條記錄去處理(FOXBASE、FOXPRO不完全這樣,但書上也經常是這樣介紹的),當初我接觸ACCESS
97時,一下子沒有了IF、FOR這些語句(指數據處理),都用SQL語句,真是找不到北了,好在我學SQL語言時,也盡量忘掉這個IF、FOR,到我忘得差不多時,功夫也進了一大步,原來要編一大段程序,現在一兩條SQL語句搞定,就算用多幾條SQL語句,由於是在圖形界面下做,可視化操作,拉拉扯扯,再修改一下生成的SQL語句,也就省事多了。
由於ACCESS具備完整的SQL語言(FOXBASE沒有、FOXPRO不完整),我從ACCESS
97開始用ACCESS編程,到現在為止,DAO、ADO很少用,加上最近從愛賽思上接觸的一些技術,基本上不用DAO、ADO都可以了,可以從我的「未完工的庫存管理」中看出,只是在特殊情況下才偶爾用一下。(少用,但不是不用,還得學,不要誤解)
如何學好資料庫編程?下面介紹一下本人的一些經驗,僅供參考:
1.首先要把原來一個數據一個數據、一條記錄一條記錄的數據處理方式忘掉,越徹底越好。
現在用成批處理了。少用記錄集一條記錄一條記錄地處理,盡量用SQL語句。
2.學好關系資料庫的理論,尤其是規范化理論,表的設計一定要規范化,最起碼要規范化到第三範式。集合運算(並、交、差)。關系運算(選擇、投影、連接)。其中連接與規范化是緊密結合的。
3.運用面向對象的技術:面向對象的分析OOA、面向對象的設計OOD、面向對象的編程OOP,根據表的關系,用窗體和子窗體、報表和子報表,模擬面向對象,這樣可以增加程序的可讀性和可維護性。(這是高級技術,同志們不要輕視,做大項目你就知道有用了)
4.用查詢時,通常一步做不出來,可以分幾步做,本人通常是這么做的,從我給網友回復的例子中也可以看得出。為什麼要這樣做?(1)有些是SQL語言的限制,沒辦法一步做出來,逼的;(2)可以檢查每一步查詢的結果,容易調試;(3)增加可讀性,便於日後維護。
5.查詢的結果用窗體顯示或用報表列印,兩者的技術差不多。通常改變打開窗體或報表的條件就可控制顯示或列印的記錄范圍。另外用查詢做數據源時,動態改變查詢中的SQL語句,比在查詢中引用窗體的控制項要方便,因為SQL語句生成是在VBA中,可以先存放在字元變數中,然後再更新查詢的SQL語句,這樣就可以用斷點來檢查變數值對不對,如果在查詢中引用窗體的控制項,尤其是包含IIF()函數時,調試是很困難的。
6.開發一個系統,首先要解決技術問題,即演算法,用簡單例子,把演算法弄懂了,再詳細設計,這一點從網友的提問中可以看出,有很多人問題表達不清楚,有的人其中夾了很多與演算法無關的東西,尤其是很專業的東西,別人不容易看得明白,由於演算法沒搞清楚,程序就無法編了。
7.不要使用過多的工具特性,使用過多的工具特性會使可讀性降低,可維護性差,要別人幫忙時難以得到幫助,更要命的是可移植性差,從MDB到ADP就可以體會到了,所以在編程時可讀性很重要,可移植性更重要,你甘心自己的程序就固定在一個環境下運行嗎?你甘心永遠用一個工具搞開發嗎?為了你的「錢途」,不要玩弄太多的技巧,當然技術研究是另外一碼事。