1. 程式人生 > >MySQL資料庫學習——約束與資料表修改

MySQL資料庫學習——約束與資料表修改

一、約束:保證資料的完整性和一致性,約束分為列級約束和表級約束

約束種類:not null(非空約束)primary key(主鍵約束)uniquekey(唯一約束)default(預設約束)foreign key(外來鍵約束)

二、外來鍵約束:用於保證資料的一致性,完整性,實現一對一或一對多關係。

三、外來鍵約束的要求:

1.父表和子表必須使用相同的儲存引擎,而且禁止使用臨時表。

2.資料表的儲存引擎只能為InnoDB

3.外來鍵列和參照列必須具有相似的資料型別。其中數字的長度或是否有符號位必須相同;而字元的長度則可以不同。

4.外來鍵列和參照列必須建立索引。如果外來鍵列不存在索引的話,

MySQL將自動建立索引。

四、外來鍵約束的參照操作

1.Cascade:從父表刪除或更新且自動刪除或更新子表中匹配的行

2.Set null :從父表刪除或更新行,並設定子表中的外來鍵列為null。如果使用該選項,必須保證子表列沒有指定not null

3.Restrict:拒絕對父表的刪除或更新操作。

4.No action :標準SQL的關鍵字,在MySQL中於restrict相同。

五、資料表修改

1.新增列(可以指定新增列的位置)

Alter table表名add [column]列名資料型別 約束條件 [first | after列名]

2.新增多列(只能新增在列的最後)

Alter table表名add [column] (列名、資料型別,約束條件,…)

3.刪除列

Alter table表名drop [column]列名,drop [column]列名….

4.新增主鍵約束

Alter table表名add [constraint [symbol]] primary key [index_type](index_col_name,..);

5.新增唯一約束

Alter table表名add [constraint [symbol]]unique [index | key] [index_name] [index_type] (index_col_name,..);

6.新增外來鍵約束

Alter table表名add [constraint [symbol]]foreign key [index_name] (index_col_name,..) reference_definition;

例:alter table users2 add foreign key (pid) referencesprovinces (id);

7.新增/刪除預設約束

Alter table表名alter [columns]列名{set default | drop default};

8.刪除約束

刪除主鍵約束

Alter table表名drop primary key

刪除唯一約束

Alter table表名drop {index | key} index_name;

刪除外來鍵約束

Alter table表名drop foreign key fk_symbol

9.修改列定義

Alter table表名modify [column]列名資料型別 約束條件[first | after列名]

10.修改列名稱

Alter table表名change [column]舊列名新列名 列定義[first | after列名]

11.修改資料表名

方法一:alter table表名rename [TO | AS]新表名

方法二:rename table表名to新表名 [,表名to新表名]