MySQL学习笔记-mysql约束

主键约束

用于唯一标识表行的数据,当定义主键后,该列不能重复

-- 创建主键方法一
create table T2(
	id int(11) primary key,
	name varchar(19));

-- 创建主键方法二
create table T3(
	id int(11),
	name varchar(19),
	primary key(id));
	
-- 创建复合主键
create table T4(
	id int(11),
	name varchar(19),
	primary key(id,name));

主键使用的细节
1、primary key 不能重复而且不能为null
2、一张表最多只能右一个主键,但可以是复合主键
3、主键的指定方式右两种
4、使用desc 表名,可以看到primary key的情况

非空not null

如果定义了not null,那么当插入数据时,必须为列提供数据

create table T5(
		id int(11) not null,
		name varchar(19) not null);

unique(唯一)

当定义了唯一约束后,该列的值是不能重复的,但是可以为null

	create table T6(
		id int(11) unique,
		name varchar(19) unique not null);

外键

foreign key(外键)用于定义主表和从表之间的关系,外键约束要定义再从表上,主表则必须有主键约束或者unique约束,当定义外键约束后,要求外键数据必须在主表的主键类存在或是为null
语法:
foreign key(本表字段名) references 主表名(主键名或unique字段名)

-- 创建主表
create table T1(
	id int(3) primary key,
	class_name varchar(19));
	
--创建从表
create table T2(
	id int(3),
	name varchar(10),
	class_id int(3),
	foreign key(class_id) references T1(id));

注意细节:
1、外键指向的表的字段,要求是primary key或者是unique
2、表的类型是innodb,这样才支持外键
3、外键字段的类型和主键字段的类型一致(长度可以不同)
4、外键字段的值,必须在主键字段中出现过,或者为null(前提是外键字段允许为null)
5、一旦建立主外键的关系,数据就不能随意删除了

check

用于强制行数据必须满足的条件,不许是约束的值或者在约束范围内
注意:oracle和sql server均支持check,但是mysql5.7目前还不支持check,只做语法校验,但不会生效

create table T3(
 id int primary key,
 name varchar(19),
 sex varchar(6) check ( sex in ('man','woman')),
 sal double check ( sal > 2000 and sal < 2500));
 desc T3;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值