MSSQL 创建约束

1、SQL 创建约束和主键约束

那么约束的作用是什么呢?正所谓无规矩不成方圆,MSSQL也建立一套约束机制,比如说再创建字段或者修改字段的时候,限制其输入格式、范围抑或是执行某种检查,如果不想自己用代码逻辑检查,可以利用约束来处理。

1.1约束的分类及对应语法和应用(其中[]为可选,<>为必填)

1.1.1 检查约束 (Check )和主键约束(Primay Key)

语法:

**Check** [NOT FOR REPLICATION ] (chk_expres)//chk_expres为逻辑表达式返回值为truefalse

例子:

**例1:建立一个学生表,并使用CHECK约束对分数进行大于等于0小于等于100的约束**
Create Table T_Score(Id VarChar PRIMARY KEY,Name VarChar, Goal Int Not Null CHECK (Goal>=0 and Goal<=100) ) **例2:在数据库Project中的工作关系表添加Check约束确保加入日期和接受日期范围合理** Use Project Alter Table T_WorkRelation Add CONSTRAINT CHECK_DATE CHECK (JoinDate >’01-01-1900and joinDate<getDate())

1.1.2 默认约束 (Default ),当用户没有为定义的Default约束的字段输入值时,自动赋约束值

语法:

Default <defau_conts> [FOR 字段名] //defau_conts为常量或者null

例子:

**例:为会员信息表中的入会时间添加Default约束为当前时间**
Create Table T_Member(Id VarChar PRIMARY KEY,Name VarChar, joinDate DateTime DEFAULT (getdate()) )

1.1.3 外键约束 (Foreign Key),需要建立两表间的关系并引用主表的列

语法:

FOREIGN KEY <子表字段> REFERENCES 父表<父表字段>

例子:

**主表stuInfo和从表stuMarks建立关系,关联字段stuNo**
alter table stuInfo add constraint FK_stuNo foreign key(stuNo)references stuinfo(stuNo)

1.1.4唯一约束 (Unique )唯一性,可以空,但只能有一个

语法:

CONSTRAINT 约束名 (字段名1,字段名2)

例子:

**添加唯一约束(身份证号唯一,因为每个人的都不一样)**
 alter table stuInfo add constraint UQ_stuID unique(stuID)

约束综合例子应用:

create table tbDept ( dId int identity ( 1, 1) primary key not null, dName char ( 20) not null, pId int not null, pDesc text ) insert into tbDept values ( ' 技术部 ' , 0, ' 的短短的 ' ) insert into tbDept values ( ' 业务部 ' , 0, ' 叮叮当当 ' ) insert into tbDept values ( ' 财务部 ' , 0, ' 叮叮咚咚大 ' ) create table MyUserInfo ( UserId int identity ( 10, 10) not null constraint PK_UserId_MyUserInfo primary key clustered ,   -- 主键  --1 创建外键 dId int not null constraint FK_MyUserInfo_tbDept foreign key references tbDept( dId), UserCIP char ( 18) not null constraint UQ_UserCIP_MyUserInfo unique , -- 唯一约束 UserJSID char ( 6) not null constraint UQ_userJSID_MyUserId unique , -- 唯一约束 UserName varchar ( 20) not null, UserTel varchar ( 12) null, UserMolt int null, UserAge int not null   -- 用户年龄在2-120岁之间 constraint CHK_UserAge_MyUserInfo check ( UserAge > 2 && UserAge < 120) UserSex char ( 2) not null   -- 用户性别男或女 constraint CHK_UserSex_MyUserInfo check ( UserSex= ' 男 ' or UserSex= ' 女 ' ), -- 用户名和电话号码按 DESC 排序组合是唯一的 constraint UQ_UserName_UserTel_MyUserInfo unique ( UserName desc , UserTel desc ),    --constraint UQ_UserName_UserTel_MyUserInfo unique(UserName desc |asc,UserTel desc |asc) ----constraint UQ_UserName_UserTel_MyUserInfo unique(UserName ,UserTel desc |asc) -- 用户名和手机号码按 DESC 排序组合是唯一的 constraint UQ_userName_UserMolt_MyUserInfo unique ( UserName desc , UserMolt desc ) );

--2 创建外键
ALTER TABLE MyUserInfo ADD constraint FK_MyUserInfo_tbDept foreign key ( dId) references tbDept( dId);
--3 创建外键
ALTER TABLE MyUserInfo with nocheck ADD constraint FK_MyUserInfo_tbDept Foreign Key ( dId) references tbDept( dId) --4 创建外键 ALTER TABLE MyUserInfo with check ADD constraint FK_MyUserInfo_tbDept Foreign Key ( dId) references tbDept( dId)

小结:

约束(Constraint)是Microsoft SQL Server 提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件。在SQL Server 中有5 种约束:主关键字约束(Primary Key Constraint)、外关键字约束(Foreign Key Constraint)、惟一性约束(Unique Constraint)、检查约束(Check Constraint)和缺省约束(Default Constraint)。

你可能感兴趣的:(唯一性约束,MSSQL,主键,外键)