# 4.1 創建數據表
## 4.1.1 創建表的語法形式
* 創建數據表的語句為 CREATE TABLE。
~~~
CREATE TABLE <表名>
(
列名1,數據類型 [列級別約束條件] [默認值],
列名2,數據類型 [列級別約束條件] [默認值],
……
[表級別約束條件]
);
~~~
## 4.1.2 使用主鍵約束
* 主鍵,又稱主碼,是表中一列或多列的組合。主鍵約束(Primary Key constraint)要求主鍵列的數據唯一,并且不允許為空。
* 單字段主鍵
字段名 數據類型 PRIMARY KEY [默認值]
* 多字段聯合主鍵
PRIMARY KEY [字段1, 字段2,. . ., 字段n]
## 4.1.3 使用外鍵約束
* 外鍵用來在兩個表的數據之間建立鏈接,它可以是一列或者多列。一個表可以有一個或多個外鍵。一個表的外鍵可以為空值,若不為空值,則每一個外鍵值必須等于另一個表中主鍵的某個值。
~~~
[CONSTRAINT <外鍵名>] FOREIGN KEY 列名1 [ ,列名2,…]
REFERENCES <主表名> 主鍵列1 [ ,主鍵列2,…]

~~~
## 4.1.4 使用非空約束
* 非空約束(Not Null constraint)指字段的值不能為空。對于使用了非空約束的字段如果用戶在添加數據時,沒有指定值,數據庫系統會報錯。
**字段名 數據類型 not null**
## 4.1.5 使用唯一性約束
* 唯一性約束(Unique Constraint)要求該列唯一,允許為空,但只能出現一個空值。唯一約束可以確保一列或者幾列不出現重復值。
**字段名 數據類型 UNIQUE**
## 4.1.6 使用默認約束
* 默認約束(Default Constraint)指定某列 的默認值。
**字段名 數據類型 DEFAULT 默認值**
## 4.1.7 設置表的屬性值自動增加
* 在數據庫應用中,經常希望在每次插入新記錄時,系統就會自動生成字段的主鍵值。可以通過為表主鍵添加AUTO_INCREMENT關鍵字來實現。一個表只能有一個字段使用AUTO_INCREMENT約束,且該字段必須為主鍵的一部分。
**字段名 數據類型 AUTO_INCREMENT**
# 4.2 查看數據表結構
## 4.2.1 查看表基本結構語句DESCRIBE
* 該語句可以查看表的字段信息,其中包括:字段名、字段數據類型、是否為主鍵、是否有默認值等。
**DESCRIBE <表名>/DESC <表名>**
## 4.2.2 查看表詳細結構語句SHOW CREATE TABLE
* 語句可以用來顯示數據表的創建語句。
**SHOW CREATE TABLE <表名\G>**
# 4.3 修改數據表
## 4.3.1 修改表名
* MySQL是通過ALTER TABLE語句來實現表名的修改的。
**ALTER TABLE <舊表名> RENAME [TO] <新表名>**
## 4.3.2 修改字段的數據類型
* 修改字段的數據類型,就是把字段的數據類型轉換成另一種數據類型。*
**ALTER TABLE <表名> MODIFY <字段名><數據類型>**
## 4.3.3 修改字段名
* MySQL中修改表字段名的語法規則如下:
**ALTER TABLE <表名>
CHANGE <舊字段名> <新字段名> <新數據類型>;**
## 4.3.4 添加字段
* 在已經存在的表添加新的字段。
**ALTER TABLE <表名>
ADD <新字段名> <數據類型>
[約束條件] [FIRST | AFTER 已存在字段名];**
## 4.3.5 刪除字段
* 刪除字段是將數據表中的某個字段從表中移除。
**ALTER TABLE <表名> DROP <字段名>;**
## 4.3.6 修改字段的排列位置
* ALTER TABLE來改變表中字段的相對位置。
**ALTER TABLE <表名>
MODIFY <字段1> <數據類型> FIRST|AFTER <字段2>;**
## 4.3.7 更改表的存儲引擎
* 在MySQL中,存儲引擎是指MySQL數據庫中表的存儲類型。可以根據自己的需要,選擇不同的引擎,甚至可以為每一張表選擇不同的存儲引擎。
**ALTER TABLE <表名> ENGINE=<更改后的存儲引擎>;**
## 4.3.8 刪除表的外鍵約束
* 對于數據庫中定義的外鍵,如果不再需要,可以將其刪除。外鍵一旦刪除,就會解除主表和從表間的關聯關系。
**ALTER TABLE <表名> DROP FOREIGN KEY <外鍵約束名>**
# 4.4 刪除數據表
## 4.4.1 刪除沒有被關聯的表
* MySQL中,使用DROP TABLE可以一次刪除一個或多個沒有被其它表關聯的數據表。
**DROP TABLE [IF EXISTS]表1, 表2, . . . 表n;**
## 4.4.2 刪除被其它表關聯的主表
* 在數據表之間存在外鍵關聯的情況下,如果直接刪除父表,結果會顯示失敗,原因是直接刪除,將破壞表的參照完整性。如果必須要刪除,可以先刪除與之關聯的子表,再刪除父表。但是這樣同時刪除了兩個表中的數據。但有的情況下可能要保留子表,這時如要單獨刪除父表,只需將關聯的表的外鍵約束條件取消,然后就可以刪除父表。
# 4.5 綜合案例——數據表的基本操作
* 數據表的創建和基本操作
* 本章全面介紹了MySQL中數據表的各種操作,如創建表、添加各類約束、查看表結構,以及修改和刪除表。讀者應該掌握這些基本的操作,為以后的學習打下堅實的基礎。在這里,給出一個綜合案例,讓讀者全面回顧一下本章的知識要點,并通過這些操作來檢驗自己是否已經掌握了數據表的常用操作。