1. 程式人生 > >最通俗易懂的理解什麼是資料庫

最通俗易懂的理解什麼是資料庫

這是《如何學習SQL》的第2篇文章,想知道寫作初衷的可以看這裡:為什麼要學習SQL?

 

  • 什麼是資料庫?

 

你可能會問:我的資料就儲存在自己電腦裡面的excel表裡裡,還要資料庫幹嘛?


Excle的資料的確很方便,但是對於企業來說就不一樣了。一個公司裡面可能有成千上萬的Excel表格,還在不同的電腦上,而他們的員工和客戶需要實時看到企業給他們提供的所有資料,這種檔案管理的方法就很麻煩,總不能每分鐘都把一個新的巨大無比的Excel檔案發給所有客戶呀。

 

資料庫呢,就是儲存資料的地方,就像冰箱是儲存食物的地方一樣。正是因為有了資料庫後,所有人可以直接在這個系統上查詢資料和修改資料。例如你每天使用餘額寶檢視自己的賬戶收益,就是從後臺資料庫讀取資料後給你的。


 

再比如,在電影中九頭蛇組織將反人類的大招壓到了“洞察計劃”上。超級古董級計算機儲存了索拉博士的大腦,並開發了一種演算法,稱為索拉演算法,該演算法能從神盾局的資料庫中讀取過去世界的資料,預測每個人的未來。

 

資料庫的英文名稱叫DB(Database),那麼資料庫裡面有什麼東東呢?

 

其實,資料庫通常包含一個或多個表組成。如果你用過Excel,就會知道Excel是一張一張的二維表。每個表都是由列和行組成的,其中每一列都用名字來標識出來。同樣的,資料庫裡存放的也是一張一張的表,只不過各個表之間是有聯絡的。所以,簡單來說:

資料庫=多張表+各表之間的關係

 

其實資料庫是邏輯上的概念,它是一堆互相關聯的資料,放在物理實體上,是一堆寫在磁碟上的檔案,檔案中有資料。這些最基礎的資料組成了表(table)。

那麼如何學會資料庫呢?學會資料庫你需要掌握以下兩點:

1)資料庫表的結構

2)各表之間的關係

 

我們接下來分別來看看這兩個知識點。

 

1. 資料庫表的結構

 

表的結構是指要了解資料庫每張表長什麼樣。


資料庫中每個表由一個名字標識。表包含帶有列名的列,和記錄資料的行。我們舉個具體的例子就一目瞭然了。下面是“猴子資料分析社群會員”表(表名),記錄了每個會員的闖關進度資訊。

 

 

上面的表中每一列都有一個名字來標識出該列,行裡記錄著資料。其中,用“會員ID”用來唯一標識使用者,'闖關進度'用來記錄每個會員學習到哪一關了。


你可能會問了,為啥要有個使用者id來表示資料的唯一性呢,用姓名也可以呀?


其實,姓名是無法唯一確定出一個使用者的,注意到下面表中有兩個會員都叫“經緯”,這樣就無法通過姓名來唯一確定使用者了。所以,資料庫的表裡都會加一個ID的欄位用來表示資料的唯一性

 

 

ID是資料庫中重要的概念,叫做唯一識別符號或者主鍵,用來表示資料的唯一性。其實,在生活中我們也會使用ID來標識資料的唯一性唯一標識,最典型的例子就是國家用身份證來唯一標識一個人,即使你有個雙胞胎兄弟,只要你兩的身份證號不一樣,你們就是兩個人。你看,在電視劇《人名的名義》中反貪局就是靠身份證號來查相關貪汙犯的。

 

 

同樣的,資料庫中的ID也是這個作用,唯一標識一條資料,只不過在資料庫中我們把這樣唯一標識資料的ID叫做主鍵。ID不會有現實的業務意義,就是一串單純的數字,每張表只能有一個主鍵。

 

2. 各表之間的關係

 

什麼是聯絡呢?你是你爸爸的兒子,你是你的兒子的爸爸。這就是生活中的聯絡。其實,資料之間也是有聯絡的。資料庫裡各個表之間如何建立聯絡呢?

 

資料庫是表的集合,一個數據庫中可以放多張,表與表之間能互相聯絡。我們看下面兩張表(資料分析社群會員表,教育背景表),你能告訴我它們之間有什麼聯絡嗎?


下面是表1:資料分析社群會員

 

 

下面是表2:教育背景

 

 

這兩張表通過會員ID關聯起來,為了更清楚的看到這兩個表的關係,下面的圖中我用相同顏色代表同一個會員的資訊。例如在會員表裡姓名是猴子的會員ID是1,那麼我想知道該會員的教育背景,我就可以在教育背景這個表裡去查詢“會員ID”值是1的行,最後發現這行資料的教育背景ID是2,對應的就找到該會員的教育背景資訊了。


 

通過上面的例子你應該對錶之間的聯絡有了大概瞭解。現在,我們回過頭來具體看下:各個表是如何建立聯絡的。

 

聯絡就是資料能夠對應匹配,在資料庫中正式名稱叫聯接,對應的操作叫做join


資料庫中,如果你要關聯其他表,一般會以「表名_ID」作為聯接。就像我們在上面“教育背景”表裡加入了“會員的ID”就是將兩張表關聯起來了。

Join(聯接)是關係型資料庫中的核心概念,是操作的基礎,務必記住這個概念,後面SQL學習中會用到。


上面講的都是資料庫原理方面的基本理論。理論有了,當然的就的有對應的軟體實現才能用起來,不然再強大的理論都是一坨無用的屎。這就好比,建築師如果只有設計草圖是無法蓋起樓房的,得有具體的施工團隊才能蓋起樓房。

 

 

所以,上面講的資料庫原理就是“設計草圖”,那麼對應的“施工團隊”是誰呢?


實現資料庫原理的“施工團隊”就是常用的資料庫軟體,例如MySQL、Oracle、SQL Server等都是實現上面理論的資料庫。各個資料庫軟體的使用差別大同小異,但是因為MySQL是開源的,成為各大公司使用的主流,面試也主要以MySQL為主。

 

我們總結下這部分的學習內容:

 

1. 什麼是資料庫?

資料庫=多張表+各表之間的關係

 

2. 資料庫表長什麼樣?

資料庫中每個表由一個名字標識。表包含帶有列名的列,和記錄資料的行。

ID是資料庫中重要的概念,叫做唯一識別符號或者主鍵,用來表示資料的唯一性。

 

3. 資料庫裡各個表之間如何建立聯絡呢?

資料庫中,如果你要關聯其他表,一般會以「表名_ID」作為聯接。

聯絡就是資料能夠對應匹配,在資料庫中正式名稱叫聯接,對應的操作叫做join。

 

4.資料庫和SQL是什麼關係?

資料庫裡面放著資料,而SQL是用來操作資料庫裡資料的語言(工具)。

例如有一碗米飯(碗就是mysql,裡面放的米是資料),你要吃碗裡的米飯,拿什麼吃?拿筷子(sql)。用筷子(sql)操作碗裡(mysql)的米飯(資料)

 

如果還是不太明白的就直接找一本《SQL基礎教程》(作者:Mick)看書中第1章(注意:第0章不需要看,因為我們後面使用的mysql資料庫)。

也有人推薦《sql必知必會》,但是對於零基礎的朋友來說Mick的《sql基礎教程》更容易看懂學會,非常適合入門者學習。如果只推薦一本書的話,我只推薦這本。

 

 

電子書在手機上學習還是很方便的,因為路上的碎片化時間隨時都可以學習。很快就可以學完。當年我就是在其他人玩手機的路上看完的。

 

 

這本書電子書我已放到社群網盤裡(後臺回覆“資料”可以獲取到網盤地址)。

 


下次我們聊聊《如何學習SQL語言》的第3部分:如何安裝mysql資料庫。

 

推薦:如何用最短的時間找到初級資料分析師工作?