【网学网提醒】:网学会员为大家收集整理了SQLServer约束方式代码提供大家参考,希望对大家有所帮助!
在表中添加约束,基本常用的有两种类型,一个是创建表时同时添加约束,另一个是创建好表通过修改表添加约束,在这里是创建表时同时添加约束,但是有两种不同的用写法。在这里列举出一些创建约束的形式,共参考(均在SQLServer2005中编译通过):createdatabasestuDBgousestuDBgo-----1.1先创建表在创建表,然后通过修改表在创建约束(理论课中的示例)----先创建表CREATE(stuNamestuNostuAge节stuIDNUMERIC(18,0),--身份证号,NUMERIC(18,0)代表位数字,VARCHAR(20)CHAR(6)INTNOTNOTNOTNULL,--学员,非空(必填)TABLEstuInfo/*-创建学员信息表-*/
NULL,
--,非空(必填)
NULL,
--年龄,INT类型不用指定大小,默认为个字
小数位数为stuSeatSMALLINTIDENTITY(1,1),--座位号,自动编号(标识
列),从开始递增stuAddressTEXT--住址,允许为空,即可选输入
)GOCREATETABLEstuMarks(ExamNostuNoCHAR(7)CHAR(6)NOTNULL,NOTNULL,NOTNULL,--考号----笔试成绩
writtenExam
INT
LabExam)GO
INT
NOTNULL
--机试成绩
--然后健约束----添加主键约束(stuNo作为主键)ALTERTABLEstuInfoADDCONSTRAINTPK_stuNoPRIMARYKEY(stuNo)---添加唯一约束(身份证号唯一,因为每人的身份证号全国唯一)ALTERTABLEstuInfoADDCONSTRAINTUQ_stuIDUNIQUE(stuID)---添加默认约束(如果地址不填,默认为“地址不详”)ALTERTABLEstuInfoADDCONSTRAINTDF_stuAddressDEFAULT('地址不详')FORstuAddress---添加检查check约束,要求年龄只能在-岁之间ALTERTABLEstuInfoADDCONSTRAINTCK_stuAgeCHECK(stuAgeBETWEEN15AND40)--添加外键约束(主表stuInfo和从表stuMarks建立关系,关联字段为stuNo)ALTERTABLEstuMarksADDCONSTRAINTFK_stuNoFOREIGNKEY(stuNo)REFERENCESstuInfo(stuNo)GO
-----1.2先创建表在创建表,然后通过修改表在创建约束(项目实战中的的示例)droptablestuMarksdroptablestuInfogo--先创建表CREATETABLEstuInfo/*-创建学员信息表-*/
(stuNamestuNostuAge节stuIDNUMERIC(18,0),--身份证号,NUMERIC(18,0)代表位数字,VARCHAR(20)CHAR(6)INTNOTNOTNOTNULL,--学员,非空(必填)
NULL,
--,非空(必填)
NULL,
--年龄,INT类型不用指定大小,默认为个字
小数位数为stuSeatSMALLINTIDENTITY(1,1),--座位号,自动编号(标识
列),从开始递增stuAddressTEXT--住址,允许为空,即可选输入
)GOCREATETABLEstuMarks(ExamNostuNoCHAR(7)CHAR(6)NOTNULL,NOTNULL,NOTNULL,--考号----笔试成绩
writtenExamLabExam)GOINT
INT
NOTNULL
--机试成绩
--然后健约束,注意:与前面的示例的区别是用“,”号隔开ALTERTABLEstuInfoADDCONSTRAINTPK_stuNoPRIMARYKEY(stuNo)---添加唯一约束(身份证号唯一,因
为每人的身份证号全国唯一),CONSTRAINTUQ_stuIDUNIQUE(stuID)---添加默认约束(如果地址不填,默认为“地址不详”),CONSTRAINTDF_stuAddressDEFAULT('地址不详')FORstuAddress---添加检查check约束,要求年龄只能在-岁之间,CONSTRAINTCK_stuAgeCHECK(stuAgeBETWEEN15AND40)
--添加外键约束(主表stuInfo和从表stuMarks建立关系,关联字段为stuNo),CONSTRAINTFK_stuNoFOREIGNKEY(stuNo)REFERENCESstuInfo(stuNo)GO-----2.1创建表时同时添加约束---------droptablestuMarksdroptablestuInfogoCREATE(stuNamestuNoVARCHAR(20)NOTNULL,--学员,非空(必填)TABLEstuInfo/*-创建学员信息表-*/
CHAR(6)primarykey,
--,主键--
stuAgeINTNOT年龄,检查约束stuID
NULLcheck(stuAgebetween15and40),
NUMERIC(18,0)unique,
--身份证号,NUMERIC(18,0)代
表位数字,小数位数为,该列唯一约束stuSeatSMALLINTIDENTITY(1,1),--座位号,自动编号(标识
列),从开始递增stuAddressTEXTdefault'地址不详'--住址,允许为空,即可选输
入,默认”地址不详“)GOCREATETABLEstuMarks(ExamNostuNoCHAR(7)CHAR(6)primarykey,--考号,主键
NOTNULLforeignkeyreferences--,外键NOTNULL,--笔试成绩
stuInfo(stuNo),writtenExamINT
LabExam)GO
INT
NOTNULL
--机试成绩
-----2.2创建表时同时添加约束,另一个版本------------droptablestuMarksdroptablestuInfogoCREATE(stuNamestuNoVARCHAR(20)CHAR(6),--,主键NOTNULL,--学员,非空(必填)TABLEstuInfo/*-创建学员信息表-*/
CONSTRAINTpk_stuNoprimarykey(stuNo),stuAgeINTNOTNULL,--年龄,
constraintck_stuAgecheck(stuAgebetween15and40),--检查约束stuIDNUMERIC(18,0),--身份证号,NUMERIC(18,0)
代表位数字,小数位数为,该列唯一约束constraintuq_stuIdunique(stuID),stuSeatSMALLINTIDENTITY(1,1),--座位号,自动编号(标识
列),从开始递增stuAddressTEXT,--住址,允许为空,即可选输
入)GOCREATETABLEstuMarks(ExamNostuNoCHAR(7)CHAR(6)primarykey,NOTNULL,--考号,主键
--,外键
constraintfk_stuNoforeignkey(stuNo)referencesstuInfo(stuNo),
writtenExamLabExam)GO--再来INT
INT
NOTNULL,
--笔试成绩
NOTNULL
--机试成绩
droptablestuMarksdroptablestuInfogoCREATE(stuNamestuNoVARCHAR(20)CHAR(6),--,主键--年龄,NOTNULL,--学员,非空(必填)TABLEstuInfo/*-创建学员信息表-*/
primarykey(stuNo),stuAgeINTNOT
NULL,
check(stuAgebetween15and40),--检查约束stuIDNUMERIC(18,0),--身份证号,NUMERIC(18,0)
代表位数字,小数位数为,该列唯一约束unique(stuID),stuSeatSMALLINTIDENTITY(1,1),--座位号,自动编号(标识
列),从开始递增stuAddressTEXT,--住址,允许为空,即可选输
入)GOCREATETABLEst
uMarks(ExamNostuNoCHAR(7)CHAR(6)primarykey,NOTNULL,--考号,主键
--,外键
foreignkey(stuNo)referencesstuInfo(stuNo),writtenExamINTNOTNULL,--笔试成绩
LabExam)GO
INT
NOTNULL
--机试成绩
--添加复合主键droptablestuMarksdroptablestuInfogo
CREATE(stuName
TABLE
stuInfo
/*-创建学员信息表-*/
VARCHAR(20)CHAR(6)NOT
NOTNOT
NULL,NULL,
--学员,非空(必填)--班级名称,非空(必填)
classNamestuAge节)GOINT
NULL,
--年龄,INT类型不用指定大小,默认为个字
--然后健约束,注意:这里是复合主键ALTERTABLEstuInfoADDCONSTRAINTPK_stuNoPRIMARYKEY(className,stuName)--ORdroptablestuInfogo--先创建表CREATE(stuNameVARCHAR(20)CHAR(6)NOTNOTNULL,NULL,--学员,非空(必填)--班级名称,非空(必填)--复TABLEstuInfo/*-创建学员信息表-*/
className
CONSTRAINTPK_stuNoPRIMARYKEY(className,stuName),
合主键stuAge节)GO--再来一种createtableA(a1int,b1intnotnull)select*fromAaltertableAaltercolumna1floatnullaltertableAaltercolumna1floatnotnullaltertableAaddprimarykey(a1)altertableAaddcheck(b1between1and100)INTNOTNULL,--年龄,INT类型不用指定大小,默认为个字