通过约束,可以让未来插入到数据库表中的数据是符合预期的。前面提到的数据类型,就是一种约束。
约束本质是通过技术手段,逼着使用者插入正确的数据。凡是插入的数据,必定符合数据约束。
约束的最终目标是保证数据的 完整性 和 可预期性!
NULL 和 NOT NULL(默认允许为空)
default 约束,某一种经常出现的数据,可以选择设置为默认值。
如果设置了default,用户设置就用用户的,没有设置就用默认的。
default 和 not null 相互补充,非空约束是约束用户想插入数据的情况;而用户忽略这一列的时候,是默认值约束。
对表中字段进行说明,这是约束给程序员的!不是硬性约束!
数字类型后面的长度,例如 int(10) 如果插入数字的宽度小于设定的宽度,自动填充0。如果够了或者超过位数,直接显示,保证正确显示。
主键(primary key):唯一的约束该字段里的数据,不能重复,不能为空,一张表中最多只能有一个主键。但不是一个表中的主键只可以对应一列(复合主键)。
//添加主键
ALTER TABLE table_name ADD PRIMARY KEY(ID);
//去掉主键
ALTER TABLE table_name DROP PRIMARY KEY;
id int unsigned primary key auto_increment;
可以在表外设置 AUTO_INCREMENT 的值
//查看 AUTO_INCREMENT
SELECT last_insert_id();
唯一键可以为空,而且可以多个为空,空字段不做唯一性比较。
主键和唯一键并不互相冲突,他们也相互补充。就像身份证和电话号码都是不能冲突的,我们只是选择了身份证号作为了主键。
从表依附于主表,实现 关联 和 约束,主表必须是有主键约束或unique约束,定义外键后,外键的列数据必须在主表的主键列存在或为null
语法:
foreign key(column_name) references table_name(column_name);