相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  建立資料表

5.3.2 建立資料表

建立資料庫是容易的部分,但此時它是空的,正如 SHOW TABLES 告訴你的那樣

mysql> SHOW TABLES;
Empty set (0.00 sec)

較困難的部分是決定資料庫的結構應該是什麼:你需要哪些資料表以及每個資料表中應該有哪些欄位。

你需要一個包含你每隻寵物記錄的資料表。這可以稱為 pet 資料表,並且至少應包含每隻動物的名稱。因為單單名稱本身並不有趣,所以資料表應包含其他資訊。例如,如果你的家庭中有多人飼養寵物,你可能會想列出每隻動物的主人。你可能還想記錄一些基本描述資訊,例如物種和性別。

那年齡呢?這可能會引起興趣,但不適合儲存在資料庫中。年齡會隨著時間的推移而變化,這意味著你必須經常更新你的記錄。相反地,最好儲存一個固定的值,例如出生日期。然後,每當你需要年齡時,你可以將其計算為目前日期和出生日期之間的差值。MySQL 提供了用於執行日期算術的函數,因此這並不困難。儲存出生日期而不是年齡也有其他優點

  • 你可以使用資料庫執行諸如為即將到來的寵物生日產生提醒等任務。(如果你認為這種查詢有點愚蠢,請注意,這與你在企業資料庫中可能提出的問題相同,以識別本週或本月需要向其發送生日問候的客戶,以實現電腦輔助的個人化。)

  • 你可以計算相對於目前日期以外的日期的年齡。例如,如果你在資料庫中儲存死亡日期,則可以輕鬆計算出寵物死亡時的年齡。

你可能會想到其他類型的資訊在 pet 資料表中會很有用,但目前識別出的資訊已足夠:名稱、主人、物種、性別、出生和死亡。

使用 CREATE TABLE 陳述式來指定資料表的版面配置

mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
       species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);

VARCHAR 對於 nameownerspecies 欄位來說是不錯的選擇,因為欄位值長度各不相同。這些欄位定義中的長度不需全部相同,也不必是 20。你通常可以選擇從 165535 之間的任何長度,無論你認為哪個最合理。如果你做出錯誤的選擇,並且後來發現你需要更長的欄位,MySQL 提供了 ALTER TABLE 陳述式。

可以選擇幾種類型的值來表示動物記錄中的性別,例如 'm''f',或者可能是 'male''female'。最簡單的方法是使用單個字元 'm''f'

對於 birthdeath 欄位,使用 DATE 資料類型是一個相當明顯的選擇。

建立資料表後,SHOW TABLES 應產生一些輸出

mysql> SHOW TABLES;
+---------------------+
| Tables in menagerie |
+---------------------+
| pet                 |
+---------------------+

若要驗證你的資料表是否已按照你預期的方式建立,請使用 DESCRIBE 陳述式

mysql> DESCRIBE pet;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name    | varchar(20) | YES  |     | NULL    |       |
| owner   | varchar(20) | YES  |     | NULL    |       |
| species | varchar(20) | YES  |     | NULL    |       |
| sex     | char(1)     | YES  |     | NULL    |       |
| birth   | date        | YES  |     | NULL    |       |
| death   | date        | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+

你可以隨時使用 DESCRIBE,例如,如果你忘記資料表中的欄位名稱或它們的類型。

有關 MySQL 資料類型的更多資訊,請參閱 第 13 章,資料類型