建立資料庫是容易的部分,但此時它是空的,正如 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
對於 name
、owner
和 species
欄位來說是不錯的選擇,因為欄位值長度各不相同。這些欄位定義中的長度不需全部相同,也不必是 20
。你通常可以選擇從 1
到 65535
之間的任何長度,無論你認為哪個最合理。如果你做出錯誤的選擇,並且後來發現你需要更長的欄位,MySQL 提供了 ALTER TABLE
陳述式。
可以選擇幾種類型的值來表示動物記錄中的性別,例如 'm'
和 'f'
,或者可能是 'male'
和 'female'
。最簡單的方法是使用單個字元 'm'
和 'f'
。
對於 birth
和 death
欄位,使用 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 章,資料類型。