MySQL中添加、刪除約束

MySQL中6種常見的約束:主鍵約束(primary key)、外鍵約束(foreign key)、非空約束(not null)、惟一性約束(unique)、默認值約束(defualt)、自增約束(aoto_increment),下面是添加、刪除這幾種約束的一些方法。html

--我已經建了數據庫; 1 -- 添加約束mysql

 2 -- 一、建表時添加約束:  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 -- 二、經過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.htmlsql

參考:http://www.javashuo.com/article/p-kbpodfja-dd.html數據庫

相關文章
相關標籤/搜索