MySQL 為關系型數據庫(Relational Database Management System), 這種所謂的"關系型"可以理解為"表格"的概念, 一個關系型數據庫由一個或數個表格組成。
表是DB存儲數據的基本單位,一個表包含若干個字段或記錄。表的操作包括創建、修改和刪除。
1、創建表
創建表即在已存在的數據庫中創立新表。在使用USE語句選擇具體數據庫後,可以使用它SQL語句創建表
其中,屬性名指表中字段的名稱,數據類型即對應字段的數據類型,完整性約束條件指對應字段的某些特殊約束條件。
MySQL中基本的完整性約束條件有
1.1 設置表的主鍵
主鍵是表的一個特殊字段,該字段能唯一地表示該表中的每條信息,即主鍵如同表中記錄的身份證。主鍵的主要目的在於幫助MySQL以最快的速度查找表中的某一條信息。主鍵必須按滿足唯一性,表中任意提兩條記錄的主鍵字段的值不可相同,主鍵的值為非空值。主鍵可以是單一的字段也可以是多個字段的組合。
對於單字段主鍵只要在創建表時使用下屬語句即可
屬性名 數據類型 PRIMARY KEY
對於多字段主鍵,要在屬性定義完後統一設置主鍵,如
即用stu_id和course_id兩個字段組合來唯一確定一條記錄。
1.2 設置表的外鍵
如果字段a是表A的屬性,且依賴於表B的主鍵,那麼,稱表B為父表,表A為子表,a為表A的外鍵。通過字段a將父表B和子表A建立了關聯關系,即外鍵的作用在於建立該表與其父表的關聯關系。當父表中刪除某條信息時,子表中與之對應的信息也必須有相應的改變,來保證信息的完整性。
在創建表時的設置外鍵的基本語法為
其中,外鍵別名指外鍵的代號,屬性一列表指子表中設置的外鍵,屬性二列表指父表的主鍵,而表名指父表的名稱。如
注意,子表的外鍵關聯的必須是父表的主鍵,且數據類型必須一致。
1.3 設置表的非空約束
非空性指字段的值不能為空值NULL。基本語法為
屬性名 數據類型 NOT NULL
當在有非空約束的字段上插入的記錄對應該字段的值為空時,系統將保存並不接受此次插入。
1.4 設置表的唯一性約束
唯一性是指所有記錄中該字段的值不可重復出現。基本語法為
屬性名 數據類型 UNIQUE
1.5 設置表的屬性值自動增加
AUTO_INCREMENT是MySQL數據庫中的一個特殊約束條件,主要用於為表中插入的新紀錄自動生成唯一的ID。基本語法為
屬性名 數據類型 AUTO_INCREMENT
一個表只能有一個字段使用該約束,且該字段必須為主鍵的一部分,該字段可以是任何整數類型。默認情況下,該字段的值從1開始自增。如果第一條記錄設置了該字段的初值,則後續新增加的記錄就從初值開始自增。
1.6 設置表的屬性的默認值
對於設定了默認值的字段,在新插入記錄時如果沒有為這個字段賦值,則系統自動為其賦予此默認值。基本語法為
屬性名 數據類型 DEFAULT 默認值
2、查看表結構
查看表結構指查看DB中已存在的表的定義,包括DESCRIBE語句和SHOW CREATE TABLE語句。
2.1 DESCRIBE語句
可查看表的基本定義,包括字段名、字段數據類型、是否為主外鍵、默認值和額外信息。
基本語法為
DESCRIBE 表名;
2.2 SHOW CREATE TABLE語句
可查看表的詳細定義,包括字段名、字段數據類型、完整性約束條件等定義時的信息,以及默認的存儲引擎和字符編碼。同樣可用\G結尾代替;使得顯示結果更美觀。
3、修改表
修改表是指修改數據庫中已存在的表的定義。
通過Alter Table語句來修改表,包括修改表名、修改字段數據類型、修改字段名、增加字段、刪除字段、修改字段的排列位置、更改默認存儲引擎和刪除表的外鍵約束等。
3.1 修改表名
語法為
ALTER TABLE 舊表名 RENAME [TO] 新表名;
其中To是可選參數,其是否在語句中出現不會影響語句的執行。
3.2 修改字段名
基本語法為
ALTER TABLE 表名 Change 舊屬性名 新屬性名 新數據類型;
如果只修改字段名不修改字段數據類型,則保持新數據類型與原來一致即可。
3.3 修改字段的數據類型
基本語法為
ALTER TABLE 表名 MODIFY 屬性名 新數據類型;
3.4 增加字段
基本語法為
ALTER TABLE 表名 ADD 屬性名1 數據類型 [完整性約束條件] [FIRST | AFTER 屬性名2];
其中FIRST為可選參數,用於將新增字段設置為表的第一個字段,AFTER屬性名2也為可選參數,用戶將新增字段放到屬性名2後面,如果這兩個可選參數都不選,新增字段將默認放到表的最後一個字段。
實際上,對於一個數據表而言,其中字段的排列順序對表不會有什麼影響,只是對於創建的人來說,將有某種直接或間接聯系的字段放在一起,便於理解這個表的結構。
3.5 增加字段
基本語法為
ALTER TABLE 表名 DROP 屬性名;
3.6 修改字段的排列位置
基本語法為
ALTER TABLE 表名 MODIFY 屬性名1 數據類型 FIRST | AFTER 屬性名2;
3.7 更改表的存儲引擎
基本語法為
ALTER TABLE 表名 ENGINE=新存儲引擎名;
如果一個表中已經存在了很多數據,最好不要輕易更改其存儲引擎。
3.8 刪除表的外鍵約束
即斷開表與其父表之間的關聯關系基本語法為
ALTER TABLE 表名 DROP FOREIGN KEY 外鍵別名;
4、刪除表
刪除表會刪除表中的所有數據,由於創建表時可能存在外鍵約束,一些表成為了與之關聯的表的父表,要刪除這些父表,情況比較復雜。
4.1 刪除沒有被關聯的普通表
基本語法為
DROP TABLE 表名;
4.2 刪除被關聯的父表
此時由於有外鍵依賴於該表,用4.1的刪除語法會報錯。
刪除此類父表一般有兩種方法:直接先將與之關聯的子表刪除再刪父表,或者先刪除子表的外鍵約束再刪父表,一般我們采取第二種方法。