数据库中的各种约束以及对约束的操作

时间:2022-07-26 08:36:33

个人觉得外键是最难理解的一个也是重点:
直接上例子:

create table t_group ( 
id int not null,
name varchar(30),
primary key (id)
);


insert into t_group values (1, 'Group1');
insert into t_group values (2, 'Group2');
create table t_user ( 
id int not null,
name varchar(30),
groupid int,
primary key (id),
foreign key (groupid) references t_group(id)
);

insert into t_user values (1, 'qianxin', 1);
insert into t_user values (2, 'yiyu', 2);
insert into t_user values (3, 'dai', 3);

t_user是t_grounp的从表,t_group是主表;外键是外键约束,收到主表的约束。①②语句是可以执行的,但是③就不能执行,因为t_user的groundid受到t_group的id约束。


insert into t_user values (2, 'yiyu', 2);   
insert into t_user values (3, 'dai', 2);

但是这样也是可以的,由此可见外键可以重复
在设置外键的时候还可以加上on delete cascade或 on update cascade ,在我看来就是跟外键加了些权限,可以根据主表的删除、更新情况改变从表的数据。由于外键是和其他的表有关系,很受其他表的影响,因此尽量不要使用太复杂,要不然会晕的。


其他的非空(NOT NULL)约束、主键(PRIMARY KEY)约束、唯一(UNIQUE)约束、条件约束(CHECK)就比较简单了

约束添加有两个情况:
①创建表的时候一起添加:
CONSTRAINT +定义约束条件的名字+ 约束的名字 +(表的列名)
例如:

CONSTRAINT ZWQ UNIQUE(duang)

② 在已经创建的表中添加:
ALTER TABLE +表名 +ADD CONSTRAINT +定义约束条件的名字+ 约束的名字 +(表的列名)
例如:

ALTER TABLE t_user ADD CONSTRAINT PRIMARY KRY (id)