MySQL数据库的常见约束

  • 约束:约束(constraint)就是表中数据的限制条件,为了保证表中数据的完整性和有效性。

  • 表级约束和列级约束:列级约束是定义在列属性中的,而表级约束是定义在所以列之后的,两者本质上没什么区别,而如果你的约束需要同时对多列进行约束那么就只能采用表级约束,因为表级约束面向的是表(当然就包括所有列),而列级约束只能针对该列进行约束。


  • primary key (主键约束):指在表中定义的一个主码,通过它可强制表的实体完整性;具有唯一性和最小性(非空)。简单来讲就是通过最少的字段就可确定所有的信息,举个栗子,在一个学生表中,有学号,姓名,年龄,班级,总成绩。其中仅用学号就可确定其他信息,因为学号是唯一的,那如果去掉学号,就需要姓名,年龄,班级才能确定信息,因为名字可能有重复,也可能有同名同年龄同班的人(这里例子不考虑),那么此时班级,年龄和姓名三者共同组成主键。

字段名 数据类型 primary key  #列级约束,直接在字段后面加,第一种方法

#第二种方法 表级约束 primary key (字段1,字段2)设置字段1和字段2共同组成主键。

  • foreign key(外键约束):通常用来连接父表和子表,两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。举个栗子,课程表中有学号,课程号,课程名。那么其中学号就是连接上面的学生表和课程表的,在课程表中得到学号就可以知道那个学生选了什么课,所以在课程表中学号为外键,而需要学号和课程号才能确定课程,所以在课程表中学号和课程号组成主键。

外码规则:

  1. 一个表可以没有外码,也可以有多个外码,含有外码的表为子表。

  1. 父表和子表不是绝对的而是相对的。

  1. 父表的主码和子表的外码必须定义在同一个域上。

  1. 外码和相应的主码可以不同。

  1. 一个子表可以对应多个父表,一个父表也可以对应多个子表。

constrain 约束名 foreign key (外键字段名) references 主表 (连接的主键)

  • unique(唯一性约束):用于指明基本表在某一列或多个列的组合上的取值唯一,每个表可以定义多个唯一键,唯一性的约束确保某一列或多个列的组合上的取值唯一,唯一键可以为空。

#列级 字段 数据类型 unique

#表级 constrain 约束名 unique (字段1,字段二)


  • 空约束(null)和非空约束(not null):空约束指默认情况下字段的取值可以为空,所以空约束也可以省略。非空约束则反之,代表该字段的取值不能为空。

#非空约束
#字段名 数据类型 not null

  • 自增约束(auto_increment):自增字段会在前一个的序号上自动增加1,如前一个序号是5,但我把5删除了,那么下一个序号还是从6开始

#字段名 数据类型 auto_increnment

#设置增长的初始值
#这里设置了从100开始自增
create table t(
    age int auto_increnment unique
)auto_increnment = 100;

自增约束的要求:

  1. 每张表自能定义一个自增型字段

  1. 自增字段必须为数值类型

  1. 自增字段必须定义为键(主键,唯一键或者外键都可以)


  • 默认值约束 (default) :定义表中字段的默认值,要注意如果字段类型为整形则直接写数字,若为字符型则要用单引号引起来

#字段名 字段类型 字段默认值

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值