寫給新人的資料庫指南

2021-09-30 20:33:20 字數 2656 閱讀 4736

我們進入第四周資料庫的內容,在資料分析師的職業生涯中,資料庫與sql會是他們價效比最高的技能之一。

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

資料表的抽象概念如上圖。

id是資料庫中重要的概念,叫做唯一識別符號/主鍵,用來表示資料的唯一性。我們把它理解成資料的身份證號。我知道身份證,也就知道資料在**了。

id不會有現實的業務意義,就是一串單純的數字,每張表只能有乙個主鍵。

資料庫是表的集合,乙個資料庫中可以放多張表,我們給每張表命名,表與表之間能互相聯絡。

聯絡就是資料能夠對應匹配,正式名稱叫聯接,對應的操作叫做join,我們想象成excel中的vlookup。

上面就是兩張表,使用者和教育背景,看上去能夠使用姓名進行匹配,可是這裡出現了兩個張三,乙個是北京大學,乙個是上海大學,究竟哪個張三才能和使用者表的張三對應上?都不能。

也許清華大學還有張三,復旦大學,交通大學也有,畢竟全中國姓名相同的人那麼多。正確的用法應該是使用id聯接,而不是姓名。id是產品、運營和資料人員們在工作中接觸最多的內容之一,使用者id文章id商品id等,如果大家還不了解,這裡需要掌握。

上圖就是正確的用法,使用者表和教育表能夠通過id聯接,可能有人疑問,使用者id為1和6的,還是不能對應呀?這個不要緊,因為在資料庫中,不是所有的表都能一一對應,存在部分匹配的可能性,也許那個叫秦路的,他沒讀過書,教育背景表中自然沒有記錄了。

當然,資料庫的設計還要更嚴謹,一般每張表都會有主鍵(主鍵不是必須,但是從效率優化上肯定會加),這個主鍵也不能是其他表的主鍵,防止產生衝突。

這樣就靠譜了,使用者id是使用者表的主鍵,教育背景id是教育背景表的主鍵,我們在教育背景表中加入乙個欄位叫使用者id,它是專門用來聯接使用者表的,它不是主鍵。

是不是有點繞?實際上,並不是所有名字帶id的都叫主鍵,這一點要搞清楚。

資料庫中,表的名字和字段應該是英文。如果是主鍵,只要叫id即可,你要關聯其他表,則以「表名_id」作為聯接。

關聯後的邏輯如下,這種方式叫全聯接,匹配不上的都用null表示,匹配上的我用橙色表示。聯接是關係型資料庫中的核心概念,是操作的基礎,現在迷糊不要緊,多練習幾次就好了。

如果現在我有一張新的表,需要關聯education,聰明的你也一定想到方法了吧。

了解上面的概念,你就知道什麼叫關係型資料庫,簡單說,它是由多張能互相聯接的二維行列**組成的資料庫。

關係型資料庫是基於關係代數模型發展而來。常用的資料庫有sql server、mysql、oracle等,我們後續學習都以mysql為主。

接下來是安裝mysql。

按照教程完成後,我們通過命令列查詢知否成功,win和mac的操作不一樣。

我們當然不會在這麼醜的介面上操作mysql啦,我們還需要安裝gui,這是為我們提供操作介面的。

mac使用者推薦sequealpro,win使用者推薦workbench。後續我會在sequealpro操作。mysql的預設使用者名稱和密碼均是root,建議重新設定一下。

輸入賬號密碼後進入操作介面,資料庫我命名為qin。左側欄是資料庫中的table列表,現在為空。右側是表相關的操作和資訊。

因為現在沒有資料,我們載入曾經使用過的練習資料。資料分析師不需要學習如何建立刪除增改表的操作,因為用不到,我只會講解查詢,大家有興趣可以自行了解。

任何mysql的gui工具,都能載入csv,一般叫import。

encoding選擇autodetect,其餘按預設。

接下來需要設定各字段的資料型別,系統會幫我們自動選上,這裡不用改動。int代表整數數值,varchar代表字串(中文英文標點符號這類),括號裡面的數字是允許儲存位元組,這塊也不要深入理解,只要知道常用的字段型別即可。

給表取個名字,載入後,就將csv成功匯入到資料庫了,能夠進行資料查詢的操作。

這張表沒有設定主鍵,主要是練習,所以跳過了這一步驟。

下一章,便是講解查詢語言sql。

寫給新人的call apply bind

語法 1 fun.call thisarg arg1 arg2 thisarg fun函式執行時指定的this值,可能的值為 例如 123 456functiona functionb a.call b functionb 經常會看到這種使用情況 123 45function list list 1...

資料庫拖庫指南

幾年前跟乙個福建的傳統領域富二代投資人聊過乙個相似的話題,他當時覺得,錢都是他出的,對方只是投入人力和精力。他認為股份是他慷慨給對方的,對方應該感激他才對,我說你這麼想就不對了,人家創業,押上的自己的人生,你呢,說句難聽的,錢 沒有?乙個專案失敗了,對你而言,不過是1 n的投資失敗而已,對創業者來說...

寫給設計新人的小指導

何為資深?沒有什麼明確的界定。有的公司3年叫做資深,有的公司5年叫做資深,也有些企業30歲能成為總監.資深如何界定也許並不那麼的重要,解決問題的能力和經驗積累到一定程度自然就會有自己的設計思維。或者說資深是設計專業維度裡別人定義你的一種方式。但新人階段,是自己必須要經歷的,而且就是你即將或是剛剛入行...