SQL 筆記:操作資料的 CRUD

在開發專案的過程中,資料庫是幾乎不會缺席的一環,如果我們想在網路上賣東西,我們需要記錄使用者在我們網站上註冊的資料、要販售的商品,以及訂單等等。

在設計一張資料表之前,我們會考慮到以下問題:

  • 這個資料表需要哪些欄位?
  • 欄位該如何命名?
  • 欄位的資料型態、長度是否必填?
  • 資料表的 Primary key (主鍵)是哪個欄位?

操作資料的 CRUD

接著我們會新增資料到資料庫中,並透過刪除、修改、查詢資料的語法做一系列操作。我們開發者常常聽到人講「CRUD」,這四個字分別指涉了以下四種動作

  • Create:新增資料
  • Read:讀取資料
  • Update:更新資料
  • Delete:刪除資料

它們是四種資料操作的基本指令,在開發應用程式時,每一個使用者需求的背後,開發者都需要思考這些需求對應在資料庫中的新增、讀取、更新與刪除等處理動作,因此,也會用「CRUD」來總括應用程式裡最常見的功能。

例如,如果是一個日記網站,可能會具有以下功能:

  • 新增一筆日記
  • 瀏覽一筆日記
  • 修改一筆日記
  • 刪除一筆日記

相對的,在資料庫裡的 CRUD 也有對照的操作指令,那就是以下四個指令:

  • INSERT - 新增資料
  • SELECT - 選取資料
  • UPDATE - 更新資料
  • DELETE - 刪除資料
操作名稱 SQL 指令 範例用途
Create INSERT 新增一筆日記
Read SELECT 查詢日記
Update UPDATE 修改日記內容
Delete DELETE 刪除日記

彙總資料

資料就緒後,我們就可以來進行查詢,查詢資料就像是對著資料庫問問題。

例如,如果是一個電商網站,我們就可以問:「這個月的訂單總銷售量是多少?」,或是「去年度購買最多商品的前十名顧客是誰?」,可以透過一些幫助我們完成這些查詢的函式,像是:

  • SUM - 總和
  • AVG - 平均
  • COUNT - 計算個數
  • 更進階的 JOINS(多表查詢)、GROUP BY(資料分組)等⋯⋯

我們就可以從這些資料中找出答案。而除了函式,我們還能使用進階語法來進行更複雜的查詢:

  • GROUP BY - 對資料進行分組(例如:依照月份彙總銷售額)
  • ORDER BY - 排序查詢結果(例如:由高到低排序商品庫存)
  • JOIN - 跨多張資料表查詢關聯資料(例如:取得訂單同時帶出該筆訂單的用戶名稱與商品明細)

小結:所有軟體工程師都要記得 CRUD 的概念

CRUD 是資料庫應用的核心,也幾乎是所有後端開發的基礎能力。無論我們軟體工城師要開發 REST API 還是用 ORM 工具操作資料,只要牽涉到資料,就脫不了 CRUD 的概念。