约束的类型

Posted WhiteSpace

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了约束的类型相关的知识,希望对你有一定的参考价值。

约束的类型:

主键约束: 要求主键列不能为空,要求主键列唯一

非空约束: 要求该列不能存在空值

唯一约束: 要求该列的值必须唯一的,允许为空,但只能出一个空值

检查约束: 限制某列取值的范围是否合适

默认约束: 设计某列的默认值

外键约束: 用于在两表之间建立关系,需要指定引用主表是哪一列

 

主键约束与唯一约束的区别

1.主键约束所在的列不允许有空值,唯一约束所列允许为空值

2.每个表中可以有一个主键,多个唯一约束

 

语法

alter table 表名

add constraint 约束名 约束类型 具体的约束说明

约束名的取名规则推荐采用: 约束类型_约束列

主键[primary key]约束 :如 PK_userid

唯一[unique key] 约束 :如 UQ_userid

默认[default key] 约束 :如 DF_userid

检查[check key]  约束 :如 CK_userid

外键[foreign key] 约束 :如 FK_userid

 

 

--添加主键约束   
Alter Table stuInfo   
Add Constraint  PK_stuNO primary Key(stuNo)   
---添加唯一约束   
Alter Table stuInfo   
Add Constraint UQ_stuID unique(stuID)   
---添加默认约束   
Alter Table stuInfo   
Add Constraint DF_stuAddress default(地址不详) for stuAddress   
---添加检查约束   
Alter Table stuInfo   
Add Constraint CK_stuAge check(stuAge between 15 and 40)   
---添加外键约束   
Alter Table stuMarks   
Add Constraint FK_stuNo foreign key(stuNo) references stuInfo(stuNo)  

 

在创建表的时候同时添加约束的写法:
use stuDB   
go   
if exists(select * from Sysobjects where name = stuInfo)   
drop table stuInfo   
go   
create table stuInfo   
(   
     stuName varchar(20) not null primary key(stuName)    
,stuID int not null unique(stuID)   
,stuAddress varchar(20) not null default(地址不详)   
,stuAge int not null check(stuAge between 15 and 40)  

 

以上是关于约束的类型的主要内容,如果未能解决你的问题,请参考以下文章

在代码片段中包含类型转换

NestedScrollView、LinearLayout 超出约束过度滚动

Yesod 持久代码的类型类约束

对这个带有 & 不带 = 的代码片段返回类型感到非常困惑

C#泛型 类型约束

C# 泛型类型参数的约束