MYSQL技术连环斩-MYSQL简述
前言:嚴格的來說,MYSQL是一款產品而不是一項技術。關于技術和產品的論述,請參考我的博文。現在進行小結一下。可以說數據庫技術是為了解決數據之間如何聚合,聚合的數據如何管理的問題。為了實際上的真正應用,就必須選擇一款相應的產品。所以說產品是技術的一個實例。從面相對象的邏輯來思考這個問題,數據庫技術是一個類,而MYSQL是它的一個對象。
一、關于數據庫。
1、為什么會產生數據庫?
我們所俗稱的電腦它的正式名稱叫計算機,很明顯計算機所要做的工作就是進行計算,而當你把它從數學這個學科的角度去理解,那么很明顯計算需要數據,于是數據就產生了。在計算機中我們可以把很多現實中存在的實物和非實物都轉化成數據。比如一個字母A,可能就變成了010101這樣的數據。好的,數據不可能只有一個,所以這個數據量就會很大,這個時候我們需要考慮的是如何把相互關聯的數據整合在一起?這樣做的好處是便于查詢,也方便管理,所以也就有了數據庫的概念。關于學術上嚴禁的概念我不在這里復制了,任何一本數據庫相關的書都會寫到,我只想用更加通俗的語言去解釋這個名詞。數據庫這個詞我們可以從宏觀和微觀上來看。從微觀上看,數據庫就是數據的集合,這里集合的概念與數學中集合的概念相同。從宏觀上看,數據庫其實就是一個容器。你可以把他想象成一個杯子,一個碗,只不過里面盛放的不是水而是數據。
2、數據庫與數據庫管理系統。既然數據庫是一個容器,實際上我們需要做的就是往容器里面放東西和取東西。那么必須有這么一套系統用來進行這些操作。這就是數據庫管理系統。所以說我們常見的MYSQL ,MS SQL SERVER ,ORACLE等都是數據庫管理系統。這里與現實不同的是,數據庫管理系統創造的數據庫之間是不能通用的。比如MYSQL造的容器像是一個試管,ORACLE造的容器像是一個廣口瓶。
3、關系型數據庫。前面說到了數據庫像是一個容器。現在我們有新的問題了,雖然有容器了,但是我們還有一個問題沒有解決。就是數據與數據之間依靠什么樣的形式聚合在一起,不能像大燴菜一樣混亂的放在一起吧。根據數據之間的聯系不同,就不了不同類型的數據庫,其中目前勢力最大的,最火的就是關系型數據庫。(近年來,面相對象的數據庫開始流行起來了)所謂關系型數據庫簡單的理解就是一張二維表。數據之間都是靠這種二維表產生聯系的。就像是你再用EXCEL畫的一張表一樣。關系型數據庫就是由一張或多張這種表組成的。如果你總是被關系這個詞搞的很迷糊,那么你就暫且關系型數據庫=表數據庫這么認為吧。
4、關系數據庫的幾個概念。
既然關系數據庫是由表生成的,那么久需要理解幾個概念了。
記錄:我們把表中的每一行叫做一個“記錄”,每一個記錄包含這行中的所有信息。
字段;我們把每一列叫做一個“字段”。每個字段包含某一專題的信息。
值:在數據庫中存放在表行列交叉處的數據叫做“值”,
這三個名詞在所有關系數據庫中都成立。
二、關于MYSQL數據庫
這是一篇技術文章,所以關于MYSQL數據庫的歷史就不說了,有興趣的朋友請自行BAIDU一下。目前MYSQL數據庫的所有權歸ORACLE公司所有。
1、為什么要用MYSQL
A、流行度高。MYSQL數據庫在數據庫技術領域中可能不能排名第一,但是個人認為排名一定在前十或前五。學習技術特別是一個產品一定學熱門的東西。這樣你從A公司使用熟悉后,又到了B公司可以繼續使用。否則可能隨著時間的流逝,你也會忘光的。特別是基于WEB站點,很多WEB都采用了LAMP架構,其中的M就是MYSQL數據庫。即使像一些門戶網站也是用該數據庫。
B、體積小巧、安裝簡單。就和很多鼓吹ORACLE數據庫是多么萬能和強大的時候,其實它自身的問題也是缺點。MYSQL本身只有幾十MB,即使加上一些ODBC,也不過100-200MB,這個體積要比ORACLE可要小的多。使用一張U盤就可以攜帶。這個看似沒有優勢,但是假設這樣一種場景,你就會覺得優勢出來了。我們假設在A主機安裝了MYSQL數據庫,因為一些原因,需要遷移到B主機上。B主機上還沒有裝數據庫,而且是臺遠程主機,那么想一想體積小巧是不是遷移起來很方便呢?
C、開源軟件。相比MS SQL和ORACLE,MYSQL這么受歡迎就是因為開源。我知道很多技術人本身從來也不關注產品成本或者說是二次開發、使用成本。開源雖然不等于免費,但是開源的軟件總是帶來以上的低成本。你不考慮是因為你沒有上升到需要考慮這個問題的時候,如果你是一個CIO或者是運營總監之類,我相信你是會考慮的.
D.?跨平臺。比如MS(微軟的)SQL SERVER。MYSQL可以在很多操作系統下安裝運行。除了流行的WINDOWS和LINUX,甚至還可以在一些FREE BSD等其它操作系統下安裝運行。
E.支持多種編程語言。C++ 、JAVA、PHP等多種編程語言都有數據庫驅動接口,可以開發MYSQL數據庫。
2、MYSQL基于C/S通信模式。像MS SQL,ORACLE和MYSQL都是基于C/S的模式。這種模式和其它的C/S模式一樣便于通過網絡來訪問數據庫。需要值得新手注意的是一般情況下mysql說的是基于mysql自帶的客戶端管理工具,而大寫的MYSQL才是服務器端數據庫程序。在LINUX下一般叫做mysqld。服務器端沒有人機界面,需要通過客戶端連接到服務器端去管理、操作數據庫。
3.關于MYSQL與MS SQL的比較
面是 MySQL 開發小組自己寫的比較文章:MySQL 與 mSQL (MS SQL)的比較:
因為沒有線程創建開銷、一個較小的語法分析器、較少功能和簡單的安全性,mSQL應該在下列方面更快些:
因為這些操作是如此簡單,當你有更高的啟動開銷時,很難在這些方面變得更好。在連接被建立以后,MySQL應該性能好一些。在另一方面,MySQL比mSQL(以及大多數其他的SQL實現)在下列方面更好些
?
?
三、為什么要學MYSQL
我個人認為這是我騙文章著重要強調的,也是一般的文章不會提到的。學習是通過需求來決定的,盲目的學習其實收獲不大。盡管MYSQL是一款數據庫關系系統產品,但是做為能動性的人,你的工作性質決定了你要學習的內容。我給它分了三個層次,與其說是層次不如準確點說是三個方向。
1、程序開發人員。程序開發人員需要通過對MYSQL的學習要達到利用MYSQL去創造出一款基于MYSQL的數據庫。所以程序人員的重點是如何創建一個自己需要的MYSQL數據庫。除了自己編程的知識,數據結構的知識,SQL語句的熟練至精通的掌握程度,他們只需要創造出適合他們的MYSQL數據庫就夠了。所以它們并不是特別關注MYSQL的搭建,MYSQL的管理,甚至是基于MYSQL的優化(它們一般更多的關注的是優化數據庫本身,而不是MYSQL數據庫系統)
2、數據庫管理員。與程序開發人員不同的是,數據庫管理員需要熟練掌握MYSQL的搭建(特別是在不同OS下,數據庫的日常管理。數據庫的權限管理,包括更深入的數據庫系統的優化工作。資深的數據庫管理人員可以與系統架構人員一同探討如何搭建一個讓自己滿意而相對完美的數據庫系統環境。
3、系統管理員、系統架構師。在沒有專職的數據庫管理員得企業,系統管理員要承擔數據庫管理員的大部分角色。即使有了數據庫管理員,系統架構師得級別可能要針對整個系統的優化,比如基于LAMP,那么除了要熟練甚至精通MYSQL,還必須熟悉LINUX,APACHE,和PHP等產品。找出它們之間的瓶頸,從而改良架構。
本系列的文章內容主要傾向于后2個方向。
四、推薦學習MYSQL書籍
關于MYSQL的圖書很多。不過學習者一定要根據自己的需求來購買。按照我上面分類的三個方向進行選書。基本上圖書有一部分是針對開發人員的,有一部分是針對數據庫管理員的。但是從我讀過的有限的幾本來看,沒有一本是完美針對某個方向的,只是在章節和內容上更傾向哪個方向。
關于數據庫管理員,我建議閱讀《MYSQL權威指南》這本書寫的不錯,主要針對數據庫管理人員,也是一本入門書。另外到一定水平后,可以閱讀《高性能MYSQL》這本書,主要講的是如何優化MYSQL。這本書有一定難度,不適合新書閱讀。如果是開發人員,新手可以讀一讀《MySQL入門很簡單》這本書。再次提醒大家,一定要買針對方向的書,否則那真是買來無用了。
另外對于新手,一定要買一本教程系統的學習一下,不要從網上到處亂抓,那么學習到的知識點是散的,無法串聯起來使用,會讓你一頭霧水。
在下一章中,講著重敘述MYSQL的安裝和常用的MYSQL管理工具。
本文可能會不斷優化,希望閱讀者能提出寶貴意見,我好及時修改。
????????????????????????????????????????????????????????????????????????????????????????????????? 2011-5-2 第二次修改稿
?
?
總結
以上是生活随笔為你收集整理的MYSQL技术连环斩-MYSQL简述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 当你不喜欢一个人(一段话、一篇文章)的时
- 下一篇: Vim as Python IDE on