MySQL中6種常見的約束:主鍵約束(primary key)、外鍵約束(foreign key)、非空約束(not null)、唯一性約束(unique)、預設值約束(defualt)、自增約束(aoto_increment),下麵是添加、刪除這幾種約束的一些方法。 --我已經建了資料庫; 1 - ...
MySQL中6種常見的約束:主鍵約束(primary key)、外鍵約束(foreign key)、非空約束(not null)、唯一性約束(unique)、預設值約束(defualt)、自增約束(aoto_increment),下麵是添加、刪除這幾種約束的一些方法。
--我已經建了資料庫; 1 -- 添加約束
2 -- 1、建表時添加約束: 3 CREATE TABLE goodstest ( 4 GID INT(10) NOT NULL AUTO_INCREMENT, 5 GNAME VARCHAR(20) NOT NULL, 6 GPRICE FLOAT NOT NULL, 7 GNUM INT(10) NOT NULL, 8 PRIMARY KEY (GID), 9 UNIQUE KEY (GNAME), 10 FOREIGN KEY (col_name) REFERENCES tab_name(col_name) 11 ); 12 13 14 -- 2、通過ALTER語句添加約束 15 -- 主鍵約束 16 -- 語法:ALTER TABLE tab_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (key_part,...) [index_option] 17 ALTER TABLE goodstest ADD PRIMARY KEY(GID); 18 -- 語法:ALTER TABLE tab_name MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]/* 可以更改列定義但不能更改其名稱,在不重命名列定義的情況下更改列定義比CHANGE更方便。*/ 19 -- 通過修改列定義添加或者添加主鍵,修改約束一般是先刪掉原有的後重新添加 20 ALTER TABLE goodstest MODIFY GID INT(10) PRIMARY KEY; 21 -- 語法:ALTER TABLE tab_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRET | AFTER col_name] /*原始定義中存在但未為新定義指定的屬性不會繼續使用。即以新定義為準*/ 22 ALTER TABLE goodstest CHANGE GID GID INT(10) PRIMARY KEY;/* 當不需要重命名時兩個相同的列名是必要的*/ 23 24 25 -- 唯一性約束 26 -- 語法:ALTER TABLE tab_name ADD [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (key_part,...) [index_option] ... 27 ALTER TABLE goodstest ADD CONSTRAINT GNAME_UNI UNIQUE KEY(GNAME);/*如果沒有用CONSTRAINT設置約束名 系統會自動生成*/ 28 -- 同理可用MODIFY COLUMN及CHANGE COLUMN方法添加
29 -- 外鍵約束 30 -- 語法:ALTER TABLE tab_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (col_name,...) reference_definition 31 ALTER TABLE gsales ADD FOREIGN KEY(GID) REFERENCES goods(GID); 32 33 -- 預設約束 34 -- 語法:AlTER TABLE goodstest ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}/*刪除以及設置*/ 35 36 37 -- 非空約束以及自增約束:在定義時設置,或者通過MODIFY COLUMN 和 CHANGGE COLUMN設置及刪除 38 -- 一張表只能有一個自增長列,並且該列必須定義了約束(可以是主鍵約束,也可以是唯一約束,也可以是外鍵約束,但是不可以是非空和檢查約束) 39 40 41 -- 刪除約束 42 43 -- 語法:ALTER TABLE tab_name DROP PRIMARY KEY;/*主鍵是唯一的就這樣就行了*/ 44 -- 語法:ALTER TABLE tab_name DROP [INDEX | KEY] index_name /*刪除唯一性約束*/ 45 -- 語法:ALTER TABLE tab_name DROP FOREIGN KEY fk_name/*刪除外鍵約束*/
參考:https://dev.mysql.com/doc/refman/8.0/en/alter-table.html
參考:https://blog.csdn.net/a909301740/article/details/62887992