MySQL中新增 刪除約束

2022-08-29 08:15:11 字數 2639 閱讀 8860

mysql中6種常見的約束:主鍵約束(primary key)、外來鍵約束(foreign key)、非空約束(not null)、唯一性約束(unique)、預設值約束(defualt)、自增約束(aoto_increment),下面是新增、刪除這幾種約束的一些方法。

--我已經建了資料庫;1

--新增約束

2

--1、建表時新增約束:

3create

table

goodstest (

4 gid int(10) not

null

auto_increment,

5 gname varchar(20) not

null

,6 gprice float

notnull

,7 gnum int(10) not

null,8

primary

key(gid),

9unique

key(gname),

10foreign

key (col_name) references tab_name(col_name)11

);12

1314

--2、通過alter語句新增約束

15--

主鍵約束

16--

語法:alter table tab_name add [constraint [symbol]] primary key [index_type] (key_part,...) [index_option]

17alter

table goodstest add

primary

key(gid);

18--

語法:alter table tab_name modify [column] col_name column_definition [first | after col_name]/* 可以更改列定義但不能更改其名稱,在不重新命名列定義的情況下更改列定義比change更方便。*/

19--

通過修改列定義新增或者新增主鍵,修改約束一般是先刪掉原有的後重新新增

20alter

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] /*原始定義中存在但未為新定義指定的屬性不會繼續使用。即以新定義為準*/

22alter

table goodstest change gid gid int(10) primary

key;/*

當不需要重新命名時兩個相同的列名是必要的

*/23

2425

--唯一性約束

26--

語法:alter table tab_name add [constraint [symbol]] unique [index|key] [index_name] [index_type] (key_part,...) [index_option] ...

27alter

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

31alter

table gsales add

foreign

key(gid) references

goods(gid);

3233

--預設約束

34--

語法:alter table goodstest alter [column] col_name /*刪除以及設定*/

3536

37--

非空約束以及自增約束:在定義時設定,或者通過modify column 和 changge column設定及刪除

38--

一張表只能有乙個自增長列,並且該列必須定義了約束(可以是主鍵約束,也可以是唯一約束,也可以是外來鍵約束,但是不可以是非空和檢查約束)

3940

41--

刪除約束

4243

--語法: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/*刪除外來鍵約束*/

參考:參考:

MySQL 新增約束,修改約束,刪除約束

alter table 新增,修改,刪除表的列,約束等表的定義。檢視列 desc 表名 修改表名 alter table t book rename to bbb 新增列 alter table 表名 add column 列名 varchar 30 刪除列 alter table 表名 drop ...

MYSQL新增約束,刪除約束新增列,修改列,刪除列

mysql新增約束,刪除約束 新增列,修改列,刪除列 新增主鍵約束 alter table 表名 add constraint 主鍵 形如 pk 表名 primary key 表名 主鍵字段 新增外來鍵約束 alter table 從表 add constraint 外來鍵 形如 fk 從表 主表 ...

MYSQL約束的新增和刪除

在mysql資料庫中,建表時就可以進行對錶的各項進行一些操作,例如設定主鍵或者非空約束,這裡主要講講如何在建表後進行新增約束和刪除約束 首先,建乙個十分普通的表 create table test test no char 10 test point int,test student char 11...