MySQL——约束类型

MySQL约束类型

约束是一种限制,它通过对表的行或列的数据做出限制,以确保表的数据的完整性和唯一性

MySQL常用约束

约束类型:主键外键唯一非空自增默认值
关键字:primary keyforeign keyuniquenot nullauto_incrementdefault

主键 primary key

主键约束相当于 唯一约束(主键约束列不允许重复)+非空约束(不允许出现空值) 的组合

每一个表中最多允许一个主键,建立主键约束可以在列级别创建,也可以在表级别创建

当创建主键的约束时,系统默认会在其所在的列和列的组合上建立对应的唯一索引

-- 基本模式
create table temp( 
	id int primary key,
	name varchar(20)
);
-- 组合模式
create table temp(
	id int,
	name varchar(20),
	pwd varchar(20),
	primary key(id, name)
);
-- 删除主键约束
alter table temp drop primary key;
-- 添加主键约束
alter table temp add primary key(id,name);
-- 修改主键约束
alter  table temp modify id int primary key

外键 foreign key

外键表示一个表中的一个字段被另一个表中的一个字段引用,被引用表称为父表,引用表称为子表;表可以有多个外键,子表中的每个外键可能引用不同的父表

外键约束是保证一个或两个表之间的参照完整性,对相关表中的数据造成了限制

-- 基本模式
-- 父表
create table temp(
	id int primary key,
	name varchar(20)
);
-- 子表
create table temp2(
	id int,
	name varchar(20),
	classes_id int,
	foreign key(id) references temp(id)
);

-- 多列外键组合,必须用表级别约束语法
-- 父表
create table classes(
	id int,
	name varchar(20),
	number int,
	primary key(name,number)
);
-- 子表
create table student(
	id int auto_increment primary key,
	name varchar(20),
	classes_name varchar(20),
	classes_number int,
	/*表级别联合外键*/
	foreign key(classes_name, classes_number) references classes(name, number) 
);

-- 删除外键约束
alter table student drop foreign key student_id;
-- 增加外键约束
alter table student add foreign key(classes_name, classes_number) references classes(name, number);

唯一约束unique

  • 唯一约束是指table的列或列的组合不能重复,保证数据的唯一性,但null可以重复
  • 同一个表中可以有多个唯一约束,多个列组合的约束
  • 在创建唯一约束时,如果不给唯一约束名称,就默认和列明相同
  • 唯一约束不仅可以在一个表内创建,而且可以同时多表创建组合唯一约束
-- 创建表时设置,表示用户名、密码不能重复
create table temp(
    id int not null ,
    name varchar(20),
    password varchar(10),
    unique(name,password)
);
-- 添加唯一约束
alter table temp add unique (name, password);
-- 修改唯一约束
alter table temp modify name varchar(25) unique;
-- 删除约束
alter table temp drop index name;

非空约束 not null

非空约束用于确保当前列的值不为空值,但非空约束只能出现在表对象的列上,所有类型的值均可以为null

-- 创建table表,ID 为非空约束,name 为非空约束 且默认值为abc
create table temp(
	id int not null,
	name varchar(255) not null default  'abc',
	sex char null
);
-- 增加非空约束
alter table temp modify sex varchar(2) not null;
-- 取消非空约束
alter table temp modify sex varchar(2) null;

自增约束 auto_increment

当主键定义为自增长后,这个主键的值就不再需要用户输入数据了,而由数据库系统根据定义自动赋值。每增加一条记录,主键会自动以相同的步长进行增长

只有整型列才能设置此属性,每个表只能定义一个auto_increment列,并且必须在该列上定义主键约束(primary key)或唯一约束(unique)

-- 创建table表,给字段增加自增约束
create table temp(
    -- 第一种
	id int primary key auto_increment
    -- 第二种
    id int unique auto_increment
);
-- 增加自增约束
alter table temp modify id int auto_increment primary key;
-- 修改表,为表中新增字段同时增加自增约束
alter table temp add book_no int unique auto_increment;
-- 删除表的自增主键约束
	--第一步:修改该字段的数据类型方法,去处自增约束
	alter table temp modify id char(10) ;
	--第二步:删除该字段的主键约束
	alter table temp drop primary key;

默认值 default

用来指定某列的默认值。在表中插入一条新记录时,如果没有为某个字段赋值,系统就会自动为这个字段插入默认值

-- 创建table表,给字段增加默认约束
create table temp(
	name varchar(10) Default "10086"
);
-- 修改table表,同时字段增加默认约束
alter table temp
chang column name varchar(10) Default "10086" 
-- 删除默认值约束
alter table temp
chang column name varchar(10) Default null 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值