表的约束
1、首先先来了解一下
-
实体完整性:要求 表中不能存在两个完全相同的行,并且 每行必须是 非空且不重复的主键值。
-
主键的约束:primary key,确保数据库中的每条记录的唯一性,也就是说作为主键的实体在表中不能重复出现。
-
参照完整性(引用完整性):表与表之间的规则,作用于两个表或者两个以上的表之间,通过主键与外键的关系,使表中键值在相关表中保持一致
2、举例
-
主键的约束
use Information --选择要操作的数据库
insert class value(1602,'物联网工程') --1602 代表的是class表中的id号,后面代表的是专业名,这两个是在表中建立好的,并且id号是主键
insert class value(1602,'物联网工程') --主键重复
这样的话会报错,“不能再对象...中插入重复键”
将第二局改为
insert class value(1601,'物联网工程') --正确,有已经插入到表中
如何加主键的约束呢?
-
创建表的时候添加(1)
create table class
(
class_id int primary key --直接在后面添加,这样创建出来的主键的名字是系统自己分配的
)
-
创建表的时候添加(2)
create table class
(
class_id int,
constraint PK_class_id Primary Key(class_id) --这样创建的主键的名字是自己给的
)
-
在表创建后加上主键约束
use
Information
--选择要操作的数据库
alter table class --更改表class , alter更改的关键词
add Constraint PK_Class_num primary key(mem_num) --add 增加,Constraint 约束, PK_Class_num 给这个约束起的名字,primary key约束的关键字, --mem_num将这个约束作用在这个实体上,将其设为主键
-
同时设置两个主键
create table
calss
(
class_id int,
class_num int,
constraint PK_class_id_num Primary Key (class_id,class_num) --同时将其设置成主键
)
-
主键约束与外键约束
主键约束 例如:constraint PK_class_id_num Primary Key (class_id)
外键约束 例如:constraint FK_Class_id Foreign Key(class_id2) references class(class_id) --外键约束,class_id2 确保在class表的class_id中存在
-
唯一约束
alter table calss
add constraint UQ_class_id unique(class_id), --class_id在表中不能重复出现
add constraint
UQ_class_id
unique(class_id,class_num),
--class_id,class_num 在表中不能同时重复出现,单独一个还是可以的
-
自定义约束
check 自定义约束
alter
table class
add constraint CK_Sex check(sex = '男' or sex = '女'or sex = '人')
add constraint CK_Sex check sex in ('男','女','人')
-
其他约束
1、not null 不知道填什么可以用null代替,null表示未知值,其不是 0 也不是空字符
2、default(), 例如:tlevel char(1) default('0') ,默认为0 , default()括号里面写的内容类型与前面的类型一致,如char
3、identity(1,1) 自增约束,从哪个值开始,每次增加多少