本篇主要介紹了MySQL數據庫表從ER圖到關係模型,再到數據庫表的創建過程及其表結構的修改。通過本篇的學習,可以掌握以下內容:
● 應用ER圖和關係模型創建數據庫表
● 數據庫表結構的修改
1、mooc數據庫表的ER圖和關係模型
在創建數據庫表之前,首先需要設計數據庫表。設計數據庫表的主要工具是ER圖,使用ER圖設計數據庫表詳見《數據庫實體聯繫模型與關係模型》一文。mooc數據庫表的ER圖如下。
圖 1 mooc數據庫ER圖
ER圖給出了mooc數據庫表的圖形化描述,但還缺乏建立數據庫表必要的字段名稱、字段類型等信息。還需要把ER圖歸納爲滿足一定約束條件二維表的形式,纔可以開始創建數據庫表。mooc數據庫二維表見下表。
2、MySQL數據庫常用字段數據類型
表結構是由多個字段構成的,定義字段時需要定義字段的名稱、數據類型、數據大小及其數據格式等內容。MySQL提供了一組預定義的數據規則,用於描述數據類型、數據大小及格式。當我們定義字段數據類型時,需要遵循這些規則。MySQL預定義的數據規則大體分爲日期和時間、數值和字符串,下面分別給予說明。
(1)日期和時間
(2)整型數值
(3)浮點數值
浮點數值類型帶有附加參數,m表示數值總的位數,d表示小數佔的位數。例如,float(7,3) 表示數值總位數不會超過 7 位數字,小數點後面帶有 3 位數字。對於小數點後面的位數超過允許範圍的值,MySQL 會自動將它四捨五入爲最接近它的值,因此使用浮點類型的時候,數值的精度會影響到查詢操作。
(4)字符串
其中,char類型佔用固定的存儲空間,與char類型的字段值大小無關。varchar類型的存儲空間是動態變化的,佔用存儲空間的大小與存儲的內容相關。這裏需要注意的是,char和varchar的長度是指可存儲字符的個數,並不代表字節個數。
3、新建mooc數據庫表
有了mooc數據庫二維表,就可以開始創建數據庫表了。使用MySQL命令或Navicat等數據庫管理工具都可以創建數據庫表。這裏重點介紹使用MySQL命令創建數據庫表,Navicat等數據庫管理工具基本都是圖形用戶界面程序,操作相對容易掌握,這裏就不再介紹了。
創建數據庫表的MySQL命令語句如下:
create table table_name (column_name column_type [約束條件] [, column_name column_type [約束條件]…]);
其中,create table爲命令串,table_name爲創建表的名稱,column_name爲字段名稱,column_type爲字段數據類型,約束條件是字段約束項,可以允許有多個字段約束項,每個字段約束項之間用英文空格分隔。可以允許有多個字段,每個字段之間用英文逗號分隔。
下面的語句分別創建course表、teacher表、student表、student_course表。
其中,命令中not null是字段約束項,表示該字段不能爲空。primary key用於定義哪個字段作爲主鍵,可以定義多個主鍵,每個主鍵之間用英文逗號分隔。
3 、修改mooc數據庫表結構
表創建完成後,由於各種原因可能需要修改表的結構。例如,在原有的表中增加字段或者刪除字段,修改字段的數據類型等。
添加字段
MySQL添加字段的命令語句如下:
alter table 表名 add 字段1[, 字段2…]
例如,需要在course表增加時間字段和類型字段,可以使用下面的命令:
alter table course
add create_time date not null,
add type varchar(10);
修改字段
MySQL修改字段的命令語句如下:
alter table 表名稱 change 字段名稱 字段名稱 字段類型 [是否允許非空];
例如,需要修改course表type字段的名稱和類型,字段名稱修改爲course_type,數據類型修改爲int。可以使用下面的命令:
alter table course
change type course_type int;
刪除字段
MySQL修改字段的命令語句如下:
alter table 表名稱 drop column 字段名稱[, drop column 字段名稱…]
例如,要刪除course表的create_time字段和course_type字段,可以使用下面的命令:
alter table course
drop column create_time,
drop column course_type;
■ 課程小結
(1)在創建數據庫表之前,首先要進行表的設計,設計表的主要工具就是ER圖,ER圖給出了數據庫表的圖形化描述,但還缺乏建立數據庫表必要的字段名稱、字段類型等信息。因此還需要把ER圖歸納爲滿足一定約束條件的二維表的形式,纔可以開始創建表。
(2)MySQL提供了一組用於創建和管理數據庫表的命令,通過這些命令可以建立新表、修改表原有的結構。當然也可以使用Navicat等工具可視化地管理數據庫表。