1. 程式人生 > >mysql約束以及修改資料表

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不能。