上一節說名了如何使用MATLAB對資料庫進行查詢,本節將說明如何對資料庫進行改變,包含新增、修改與刪除。
簡單地說,MATLAB 能夠經由 ODBC 和對對資料庫進行操控,因此所有 SQL 命令能達到的功能,MATLAB 也都能經由下達 SQL 命令來做到。此外,MATLAB 的資料庫工具箱也提供了另外一些命令,能夠對資料庫進行修改。
在嘗試本節所提供的範例前,你必須先以手動的方式來設定 DSN,請將資料來源名稱 dsnScore02 指到本機位置的 score02.mdb。同時在以下的範例中,每次在進行資料庫存取前,我們會將 score01.mdb 的內容拷貝到 score02.mdb,以避免因為多個範例程式碼的執行先後順序不同,造成所得結果和本書描述不一致的情況。
首先,我們來看看如何經由 SQL 命令來新增一筆資料到資料庫的。下面這個範例,將新增一筆姓名為「大力水手」的資料,對應的 SQL 命令是
INSERT INTO score (studentID, studentName, final) VALUES (''00'', ''大力水手'', 100)
程式碼如下。
由於我們並沒有指定每一個欄位的值,所以這些欄位的值會由資料庫當初所設定的欄位預設值所取代,如果這些資料庫欄位沒有預設值,MATLAB 抓回來的資料就會出現 NaN。
接著,我們來看看如何經由 SQL 命令來修改資料庫。下面這個範例,將所有期末考分數(final 欄位)大於或等於 80 分的同學,直接調成 100 分,對應的 SQL 命令是
UPDATE score SET final=100 WHERE final>=80
程式碼如下。
在上述範例中,有四個人的期末考成績(final 欄位)被修改為 100 分。
我們也可已經由SQL 命令來刪除資料。下面這個範例,將所有期末考分數(final 欄位)小於 80 分的同學,直接刪除,對應的 SQL 命令是
DELETE FROM score WHERE final<80
程式碼如下。
在上述範例中,原先資料庫有 12 筆資料,經過刪除後,只剩下 5 筆資料。
此外,SQL 命令也可以用來產生一個資料表,因此在下面這個範例中,我們直接產生一個新的資料表,然後填進去兩筆資料,然後把資料表的資料顯示在螢幕上,範例如下。
本節的最後一個範例,是一個比較完整的範例,其功能如下:
- 讀入 score02.mdb 的 score 資料表
- 計算每一個學生的期末總成績,等於作業平均乘以 30%,加上期中考成績(midterm 欄位)乘以 30%,再加上期末考(final 欄位)成績乘以 40%。
- 將每一個學生的期末成績送到資料庫的 overall 欄位。
- 將最後成績計算結果寫成一個網頁,以便公布給學生看。
在本範例的原始碼,我們已經加入大量註解,因此不再說明程式細節,範例如下。
所得到的網頁如下,其中最後一直行就是計算出來的期末成績。
MATLAB程式設計:進階篇