mysql约束

主键约束

主键使用需要注意:

  • 每个表只能定义一个主键
  • 主键值必须唯一标志表中的每一行,且不能为NULL
  • 一个字段名只能在联合主键字段表中出现一次
  • 联合主键不能包含不必要的多余字段。当把联合主键的某一字段删除后,如果剩下的字段构成的主键仍然满足唯一性原则,那么这个联合主键是不正确的。这是最小化原则
// 设置单字段主键
// 1.在创建表时指定
create table `student`(
	`id` int primary key
)
create table `student` (
	`id` int,
    primary key (`id`)
)
// 2.在建表后指定
alter table student add constraint primary key(`id`)

// 在创建表时设置联合主键
// 1.在创建表时指定
create table `student`(
	`id` int,
    `class` varchar(20),
    primary key(`id`, `class`)
)
// 2.在建表后指定
alter table `student` add primary key(`id`,`class`)

//删除主键约束
alter table student drop primary key

auto_increment

  • 默认情况下,auto_increment初始值为1,每新增一条记录,字段自动加一
  • 一个表中只能由一个字段使用auto_increment约束,且该字段必须由唯一索引
  • auto_increment 约束的字段必须具备not null 属性
  • auto_increment 约束的字段只能是整数类型
  • auto_increment 约束的字段的最大值受该字段的数据类型约束,如果达到上限,就会失效
create table student(
	id int primary key auto_increment
)

create table student(
	id int primary key auto_increment
)auto_increment=100

外键约束

外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。主表删除某条记录时,从表中对应的记录也必须由相应的改变,一个表中可以有一个或多个外键,外键可以为空值,若不为空值,则每一个外键的值必须等于主表中主键的某个值,否则插入失败,在删除时,必须先去掉主键对应的外键依赖,才能将指定记录删除。

  • 主表必须已经存在于数据库中,或者是当前正在创建的表
  • 必须为主表定义主键
  • 外键允许出现空值
  • 在主表的表名后面指定列名或列名的组合,这个列或列的组合必须是主表的主键或候选键
  • 外键中列的数目必须和主表中主键列的数目相同
  • 外键中列的数据类型必须和主表主键中对应列的数据类型相同
// 1.在创建表时指定外键
CREATE TABLE `grade` (
  `id` int NOT NULL,
  `name` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
);
create table student(
	id int primary key,
    gid int,
    constraint `P_K` foreign key(`gid`) references grade(`id`)
);

// 2. 在创建表后指定外键
alter table `student` add constraint `F_K` foreign key(`gid`) references `grade`(`id`)

// 3. 删除外键依赖
alter table student drop foreign key `P_K`

// 指定on delete/on update 来控制数据的完整统一
alter table student add constraint `F_K` foreign key(`gid`) references grade(`id`) on delete [cascade|set null|no action|restrict] on update [cascade|set null|no action|restrict];
// restrict时默认操作 拒绝主表删除或修改外键关联列
// cascade表示同步主表的记录

唯一约束

所有记录中字段的值不能重复出现,与主键相比,其可以在一个表中存在多个,且允许有1个空值

// 1.在建表时指定
create table student(
	id int unique
);
create table student(
	id int,
    unique key `U_I`(`id`)
);
// 2.建表后添加
alter table student add constraint `U_I` unique(`id`);
// 3.删除
alter table student drop index `U_I`;

检查约束

用于检查字段值有效性

// 1.建表时指定
	create table student(
	id int,
    check(id>0)
);
create table student(
	id int,
    constraint `C_k` check(id>0)
);
// 2.建表后指定
alter table student add constraint `C_K` check(id>0);
// 3. 删除
alter table student drop constraint `student_chk_1`;

默认值约束

如果没有为某个字段赋值,系统会自动为这个字段插入默认值,一般用于设置了非空约束的列,能够防止在录入数据时出错

// 创建
create table student(
	id int default 0
);
// 创建后修改
alter table student change column id id varchar(30) default 33;
// 删除
alter table student change column id id varchar(30) default NULL;

非空约束

用于指定字段非空,当字段为空时,会报错

// 创建时指定
create table student(
	id int not null
);
// 创建后指定
alter table student change column id id int NOT NULL;
// 删除
alter table student change column id id int NULL;

查看表中约束:

show create table student
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值