之前有提到過小弟我是在開發WEB的工程師,經過幾次的案子會發現,注意一些小細節,建立好一個原則,對於大型的專案有很大的幫助。一開始可能覺得很麻煩,就跟後端程式碼的Coding Style一樣,縮排要空幾格、逗號之後空一格、名稱格式…感覺沒什麼用,資料庫也是一樣,如果隨便命名資料表,依照當下心情去決定,或是不想設定條件約束,設定後礙手礙腳,不好操作。
不過只要知道原理,以及命名有一個原則,等到有非常多資料表在資料庫中時,就會感受到這些小細節帶給你的好處!
網頁架設 | 學習筆記 | 生活分享 | 人生規劃
關聯式資料庫的概念,是由多個互相有關係的資料表儲存資料並建立關聯。每個資料表是一個實體物件資料,像是我們的animals 資料表,裡面每一筆資料都是物件資料,內容包含動物的所有特性。
我們來整理一下前幾天匯入的另外一張資料表 adoption_gov_animals。如果沒匯入請到前天的文章執行一下SQL
adoption_gov_animals 中有一個欄位資料是紀錄動物種,可以用下方SQL執行看看,公開資料有多少種類。
SELECT DISTINCT kind FROM adoption_gov_animals;
顯示結果是有三種,我們把它拆出來到另外一張資料表。先建立一張資料表 types 裡面包含主鍵 id ,以及 name 欄位。其他欄位是紀錄新建以及更新時間。
CREATE TABLE types ( id bigserial PRIMARY KEY, name varchar(20), created_at timestamp, updated_at timestamp );
建立完成資料表以後,我們把資料寫入 types 資料表
INSERT INTO types(name,updated_at,created_at) SELECT DISTINCT kind, now(), now() FROM adoption_gov_animals;
成功!我們有一張 分類資料表了!來記錄每一種分類,例如:貓|狗|鳥…
我們建立一個新的欄位在 adoption_gov_animals 欄位名稱為 types_id 來紀錄兩個的關係,欄位類型要跟 types 資料表的 id 一樣(bigint)
今天來嘗試匯入資料的功能,這個超級方便,先想辦法下載資料吧!
打算用 行政院農業委員會資料公開平台下載動物認養資料(.csv)測試 https://data.coa.gov.tw/Query/AdvSearch.aspx?id=QcbUEzN6E6DL
如果用 INSERT 插入資料的陳述句,要寫上百條,上千條資料,苦惱、麻煩、不想做,還好有一個方便的功能 COPY 陳述句,這是 PostgreSQL專有的功能,可以匯入有分隔符號,一行一筆資料的檔案。
INSERT INTO animals (name, created_at, updated_at) VALUES ('大黑', now(), now()), ('安娜', '2019-09-11 10:00:00', '2019-09-11 10:00:00');
昨天建立好資料庫 animal ,以及資料表animals,如上SQL 語法插入兩筆動物資料。
提醒
有時候可能你輸入的程式碼有問題,手殘按錯字母,PostgreSQL 會顯示相對應的錯誤,提醒我們錯誤的位置在哪邊,但有時候還是會有點模糊,就要發揮工程師的點滿技能,上網查一下問題的解決方法,可能有人也經歷過一樣的問題,可參考他的解決辦法。