MySQL資料庫學習——約束與資料表修改
一、約束:保證資料的完整性和一致性,約束分為列級約束和表級約束
約束種類:not null(非空約束),primary key(主鍵約束),uniquekey(唯一約束),default(預設約束),foreign key(外來鍵約束)。
二、外來鍵約束:用於保證資料的一致性,完整性,實現一對一或一對多關係。
三、外來鍵約束的要求:
1.父表和子表必須使用相同的儲存引擎,而且禁止使用臨時表。
2.資料表的儲存引擎只能為InnoDB。
3.外來鍵列和參照列必須具有相似的資料型別。其中數字的長度或是否有符號位必須相同;而字元的長度則可以不同。
4.外來鍵列和參照列必須建立索引。如果外來鍵列不存在索引的話,
四、外來鍵約束的參照操作
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新表名]