语法: ALTER TABLE 表名 ADD CONSTRAINT约束名约束类型 具体的约束声明
约束名的取名规则推荐采用:约束类型_约束列,当然你也可以不这么命名,这样单纯是比较方便
如:主键(Primary Key)约束:PK_UserId
唯一(Unique key)约束: UQ_UserCardId
默认(Default Key)约束 DF_UserPasswd
检查(Check Key)约束 CK_Gender
外键(Foreign Key)约束: FK_SortId
–以上加棕色段是我定义表中的列名称
打个比方:add constraint PK_UserId PRIMARY KEY (UserId)
–PK_UserId 是自定义约束名 , PRIMARY KEY 是约束类型, (UserId)是具体的约束声明
举例,代码如下:
USE Demo --操作的数据库名
GO
ALTER TABLE Test_Table1--要进行限制约束的表
add constraint PK_UserId PRIMARY KEY (UserId), --主键约束
constraint CK_UserPwd CHECK(LEN(UserPwd)>=6), --查询约束,长度限制
constraint CK_Gender CHECK(Gender=0 OR Gender =1),--查询约束,范围限制
constraint DF_Gender DEFAULT(0) for Gender,--默认约束,设置默认值
constraint CK_E_mail CHECK(E_mail LIKE '%@%') --检查约束,格式检查
GO
————————————————————————————-
USE E_Market --操作的数据库名 GO ALTER TABLE OrderInfo --要进行限制约束的表 ADD CONSTRAINT PK_OrderId PRIMARY KEY(OrderId), CONSTRAINT FK_UserId Foreign KEY(UserId) References UserInfo(UserId), --外键约束 CONSTRAINT FK_ConmodityId Foreign KEY(CommodityId) References CommodityInfo(CommidityId), CONSTRAINT DF_PayWay Default('网上银行') FOR PAYWAY, CONSTRAINT CK_Confirm Check(Confirm=0 OR Confirm =1), CONSTRAINT DF_Confirm Default(0)FOR Confirm , CONSTRAINT CK_SendGoods Check(SendGoods=0 OR SendGoods =1), CONSTRAINT DF_SendGoods Default(0)For SendGoods GO
贴士: 主外键约束时,PRIMARY KEY ,FOREIGN KEY,其余约束不用加KEY
注意:1.外键约束时要注意外键FK_xx 必须与引用的主键列的类型 长度 完全一致
2.外键约束引用的表中必须有主键列
3.当添加约束的表中已存在数据,但又要对其添加约束,只需要修改第一行 ALTER TABLE 表名 WITH NOCHECK (但是对与之前的数据,将不做任何检查)
设置外键FK时,外键通过将列连接到另一个表中的唯一键而工作,并且该唯一键必须定义为某种唯一索引形式,即主键或其他唯一索引。(2017-3-12添加)