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