MySQL-约束

primary key

  • primary key:主键约束,被声明为主键列的值是不可以重复的并且不能为NULL
  • 一张表只能有一个主键,但是可以是复合主键
create table db(id int PRIMARY KEY,name varchar(32),)
  • primary key(xxx,xxx):复合主键,当复合主键的所有值都相同的时候,才不可以重复
create table db(id int,name varchar(32),primary key(id,name))

not null

  • not null:非空约束,在插入数据时,必须为该列提供数据

unique

  • unique:唯一约束,当定义了唯一约束以后,该列值是不能重复的
  • 如果指定了unique但是没有指定not null,则unique字段可以有多个NULL
  • 一张表可以有多个unique
  • unique+not null无限等价于primary key

foreign key

  • foreign key:外键约束
  • 用于定义主表和从表之间的关系:外键约束定义在从表上,主表则必须具有主键约束或是unique约束,当定义外键约束以后,要求外键列数据必须在主表的主键列存在或是为NULL,否则会失败
  • foreign key (本表字段名)references 主表名(主键名或unique字段名)
  • 外键指向的表的字段,要求是primary key或者是unique
  • 表的类型是innodb,这样的表才支持外键
  • 外键字段的类型要和主键字段的类型一致(长度可以不用),
  • 外键字段的值,必须在主键字段中出现过,或者为NULL(前提是外键字段允许为NULL)
  • 一旦建立主外键的关系,数据就不能随意删除了
  • 如果需要删除主表的某行数据,需要先把从表外键有关这行主表的所有数据删除,才可以删除主表的这行数据
  • 如果从表外键的值在主表中没有存在,则可以随意添加删除
create table stu(id int primary key,class_id int,foreign key (class_id) references class(id))

check

  • check:用于强制行数据必须满足的条件
  • 如sal列定义了check约束,并要求sal列值在10-20之间,如果插入的数据不在这个范围,就会报错
  • mysql5.7支持check的语法校验,但是不会生效
  • mysql中实现check的功能,一般是在程序控制中,或者通过触发器完成
create table db(sex varchar(6) check (sex in ("man","woman")),sal double check (sal >1000 and sal <2000))

自增长

  • 字段名 整型 primary key auto_increment
  • 一般来说自增长和primary key配合使用
  • 自增长也可以单独使用(但是需要配合一个unique)
  • 自增长修饰的字段为整数型的(虽然小数也可以使用,但是使用很少)
  • 自增长默认从1开始
  • alter table 表名 auto_increment=xxx 来修改自增长的开始值
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值