Mysql约束的含义:
一种限制,用于限制表中的数据,为了保证表中数据的准确性和可靠性
分类:六大约束
1.NOT NULL :
非空,用于保证该字段的值不能为空。例如学生表的学生姓名及学号等等。
2.DEFAULT:
默认值,用于保证该字段有默认值。例如学生表的学生性别
3.PRIMARY KEY:
主键,用于保证该字段的值具有唯一性并且非空。例如学生表的学生学号等。
4.UNIQUE:
唯一,用于保证该字段的值具有唯一性,可以为空。例如注册用户的手机号,身份证号等。
5.CHECK:检查约束(MySql不支持),检查字段的值是否为指定的值。
6.FOREIGN KEY:
外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值,在从表添加外键约束,用于引用主表中某些的值。例如学生表的专业编号
主键约束和唯一键约束的区别
1.主键约束(PRIMARY KEY)
- 主键用于唯一地标识表中的每一条记录,可以定义一列或多列为主键。
- 是不可能(或很难)更新.
- 主键列上没有任何两行具有相同值(即重复值),不允许空(NULL).
- 主健可作外健,唯一索引不可;
2.唯一性约束(UNIQUE) - 唯一性约束用来限制不受主键约束的列上的数据的唯一性,用于作为访问某行的可选手段,一个表上可以放置多个唯一性约束.
- 只要唯一就可以更新.
- 即表中任意两行在 指定列上****都不允许有相同的值,允许空(NULL).
- 一个表上可以放置多个唯一性约束
第一范式:确保每列的原子性.
如果每列(或者每个属性)都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式.
例如:顾客表(姓名、编号、地址、……)其中"地址"列还可以细分为国家、省、市、区等。
第二范式:在第一范式的基础上更进一层,目标是确保表中的每列都和主键相关(主键约束).
如果一个关系满足第一范式,并且除了主键以外的其它列,都依赖于该主键,则满足第二范式.
例如:订单表(订单编号、产品编号、定购日期、价格、……),"订单编号"为主键,"产品编号"和主键列没有直接的关系,即"产品编号"列不依赖于主键列,应删除该列。
第三范式:在第二范式的基础上更进一层,目标是确保每列都和主键列直接相关,而不是间接相关.
如果一个关系满足第二范式,并且除了主键以外的其它列都不依赖于主键列,则满足第三范式.
为了理解第三范式,需要根据Armstrong公里之一定义传递依赖。假设A、B和C是关系R的三个属性,如果A-〉B且B-〉C,则从这些函数依赖中,可以得出A-〉C,如上所述,依赖A-〉C是传递依赖。