mysql約束以及修改資料表
約束型別 包括;
NOT NULL(非空約束)
PRIMARY KEY(主鍵約束,只能有一個)
UNIQUE KEY (唯一約束,可以有多個)
DEFAULT (預設約束)
FOREGIN KEY(外來鍵約束)
其中外來鍵列和參照了必須具有相似的資料型別,其中數字長度或是否有符號位都必須相同,字元長度可以不同,
------------外來鍵約束的參照操作------------
CASCADE 為父表刪除或更新 且自動刪除或更新子表中匹配的行,
SET NULL 為父表刪除或更新行,並設定子表的外來鍵列為NULL,此時必須保證子表沒有指定NOT NULL;
RESTRICT 拒絕對父表更新或刪除操作;
NO ACTION 標準的aql語句,在mysql中與RESTRICT 相同;
新增主鍵約束:ALTER TABLE table_namae ADD [CONSTRAINT[主鍵名字]] PRIMARY KEY [INDEX_TYPE] (INDEX_COL_NAME)
比如:ALTER TABLE user ADD constraint PRIMARY KEY (id);
新增唯一約束:ALTER TABLE table_namae ADD [CONSTRAINT[唯一約束名字]] UNIQUE (INDEX_NAME) 比如:ALTER TABLE user ADD constraint PRIMARY KEY (id);
刪除主鍵約束:ALTER TABLE table_namae DROP PRIMARY KEY;
刪除唯一約束:ALTER TABLE 表名稱 DROP {INDEX|KEY} 約束的名稱 ;(show indexs from 表檢視唯一欄位的約束名稱然後刪除)
修改列定義:
ALTTER TABLE tablename CHANGE [COLUMN] old_col_name colum_defineition----[FIRST|AFTER col_name]
例如:ALTER TABLE EMP CHANGE age age1 int(4);ALTER TABLE tbl_name MODIFY [COLUMN] col_name column_definition [FIRST |AFTER col_name];
eg:
ALTER TABLE users2 MODIFY id SMALLINT UNSIGNED NOT NULL FIRST;
注意;change 和 modify 都可以修改表的定義,不同的是 change需要寫兩次列名,不方便,但是change的優點是可以修改名稱但是modify不能。