iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 8
0
Modern Web

Golang - 從打造一個 API 開始學起系列 第 8

[Day08] sql 與 postgresql 的關係

本文同步發表於: Sponge Records

sql 語法基於1970年由埃德加·科德提出的論文,主要應用場景為管理關聯式資料庫內的資料,包含查詢、新增、刪除、修改
而雖然 sql 語法已經於1987年被ISO標準化,但各家資料庫所定義的語法與特殊字依然有所差異,目前主流的關聯式資料庫如
sql server、mysql、oracle、postgresql中,只有 postgresql 努力遵從標準,因此使用 postgesql 可以說是使用最標準的 sql 語法
以下將簡單介紹資料庫的結構與 sql 的操作

資料庫結構

基本上不論是 sql server、mysql、oracle、postgresql...關聯式資料庫的架構大致如下

  • 執行個體
    這裡指的資料庫系統,當你安裝好一個資料庫系統時,裡面只有預設的系統資料庫或是沒有資料庫的
    單純就是一個資料庫系統而不具有任何使用者資料

  • 資料庫
    當要開始使用資料庫時,會需要建立一個專屬的資料庫,很像是個人的專屬抽屜,在 postgresql 可以用以下語法實現

    CREATE DATABASE SpongeProject

這樣,我們就有了一個名為 SpongeProject 的資料庫,可以在裡面存放各種跟 SpongeProject 有關聯的資料

而同樣,有創造就有破壞,我們可以用以下語法來刪除這個資料庫

    DROP DATABASE SpongeProject

這語法請慎用,在沒有備份的狀況下是會造成悲劇的...

  • 資料表
    我們有了資料庫,可以塞資料了,但是要怎麼塞呢,雖然已經分好了抽屜,但抽屜裡也會有很多不同的文件對吧
    資料表就是類似這樣的概念,每個資料表內的資料需要遵守一定的條件,資料表的限制就像是紙本的基本資料表內需要有姓名、性別、出生地...之類的資訊
    不能漏掉,也不能夠超過格子的大小一樣,需要都滿足這樣的條件的資料才能寫入或更新到資料表裏面,這些條件在資料表制定的時候就要決定了,在 postgresql 可以用以下語法實現
    --NOT NULL 代表不能接受空值,NULL 代表可以接受空值
    CREATE TABLE MemberInfo
    (
         MemberID INT NOT NULL, --成員的編號
         MemberName VARCHAR, --成員的姓名
         MemberSex INT --成員的性別,這裡用整數格式來記錄 ,設計為 0 = 女 、 1 = 男
    );

於是我們就完成了基本資料表了,就像問卷設計一樣,資料表會依照目的與需求的不同而有不同的長相,並不存在唯一正確的設計
在之後會介紹的正規化與本次要設計的 API 用的資料表時會再分析優缺點跟如何在這次的案例中設計,要記住的點就是,沒有絕對正確的設計,只有最符合需求的設計

而當然,我們可以用以下語法來刪除這個資料庫

    DROP TABLE MemberInfo

一樣,這語法請慎用,在沒有備份的狀況下是會造成悲劇的...

資料的新增、查詢、刪除、修改

  • 新增
    我們可以透過以下語法將資料寫入資料表內
    INSERT INTO MemberInfo
    SELECT 1, 'SPONGE', 1

這樣我們就寫入了一個名為 SPONGE 的人,她的編號是 1 ,性別是 1 (男)

  • 查詢
    我們可以透過以下語法查詢資料表內的資料
    SELECT * FROM MemberInfo --秀出在 MemberInfo 內的所有資料

也可以透過以下語法來找出特定條件的資料

    SELECT * FROM MemberInfo WHERE MemberID = 1 --秀出在 MemberInfo 內的,會員編號為 1 的資料
  • 刪除
    我們可以透過以下語法刪除資料表內的資料
   DELETE FROM MemberInfo --刪除在 MemberInfo 內的所有資料

也可以透過以下語法來刪除特定條件的資料

    DELETE FROM MemberInfo WHERE MemberID = 1 --刪除在 MemberInfo 內的,會員編號為 1 的資料
  • 修改
    我們可以透過以下語法更新資料表內的資料
    UPDATE MemberInfo
    SET MemberName = 'Sponge' --將在 MemberInfo 內的所有資料的姓名欄位更新成 Sponge

也可以透過以下語法來找出特定條件的資料

    UPDATE MemberInfo
    SET MemberName = 'Sponge'
    WHERE MemberID = 1 --將在 MemberInfo 內的會員編號為 1 的資料的姓名欄位更新成 Sponge

到這裡我們簡單介紹了 資料庫 與 sql 的架構了,當然兩者所具有的技術絕對不止這些,但這裡僅先介紹一些較為基礎的
在下一篇會有更深入的應用

下回預告

下回將會開始重頭戲,進入 API 規劃的篇章了,下一篇將會從 web api 的介紹開始出發,規劃我們 API 的結構


上一篇
[Day07] 在 heroku 上使用免費的 postgresql
下一篇
[Day09] web api
系列文
Golang - 從打造一個 API 開始學起30

尚未有邦友留言

立即登入留言