2.6 约束
概念:对表中数据进行限定
分类:
非空约束:not null
唯一约束:unique
主键约束:primary key
外键约束:foreign key
2.6.1 非空约束 not null
限定字段值不能为空
创建表时,添加非空约束
createtable表名(字段名 字段类型notnull, 字段名 字段类型 [约束], ...);
创建表后,添加非空约束
altertable表名 modify 字段名 字段类型notnull;
注:已存在空值的字段不能被设置成非空的
删除非空约束(设置字段允许有空值)
altertable表名 modify 字段名 字段类型;
2.6.2 唯一约束 unique
限定某一字段的字段值不能有重复
创建表时,添加唯一约束
createtable表名(字段名 字段类型 unique, 字段名 字段类型 [约束], ...);
创建表后,添加唯一约束
altertable表名 modify 字段名 字段类型 unique;
删除唯一约束(设置字段允许有重复值)
altertable表名dropindex 字段名;
注:
唯一约束的值可以是空值,可以存在多个空值,但是只能有唯一的“null”值
一个字段可以同时设置成非空唯一,非空和唯一约束的顺序是任意的
2.6.3 主键约束 primary key
特点:
1. 非空且唯一
一张表只能有一个字段是主键
主键是表中记录的唯一标识
创建表时,添加主键约束
createtable表名(字段名 字段类型 primary key, 字段名 字段类型 [约束], ...);
createtable表名(字段名 字段类型 [约束], 字段名 字段类型 [约束], ... , primary key(主键字段));
创建表后,添加主键约束
altertable表名 modify 字段名 字段类型 primary key;
删除主键
altertable表名dropprimary key;
注意:删除主键约束后,主键仍有非空约束
主键自增长:
概念:如果某个字段是数值类型的主键字段,可以使用 auto_increment 来实现主键自增长
注:
1. 自增长的主键必须是数值类型的(整数或者小数)
当添加记录时,不为该字段赋值或者赋值为null,该字段就会自增长
第一条自增长的字段值是 1
从已存在的最大值开始 + 1
从已存在的最大值是小数时,自增长的值是向上取整
只有主键可以自增长
创建表时,添加主键自增长
createtable表名(字段名 字段类型 primary key auto_increment, 字段名 字段类型 [约束], ...);
创建表后,添加主键自增长
altertable表名 modify 主键字段 字段类型 auto_increment;
创建表后,添加主键约束的同时,设置自增长
altertable表名 modify 字段名 字段类型 primary key auto_increment
删除自增长
altertable表名 modify 字段名 字段类型;
三,多表
3.1 表与表之间的关系
一对一
例如:人和身份证、公司与注册地址
一对多(多对一)
例如:部门和员工、商品和分类
多对多
例如:学生和课程、订单和商品
3.2 多表关系的实现
一对一
在任何一方添加外键指向另一方法的主键
一对多
在多的一方建立外键,指向一的一方的主键
多对多
需要借助第三张中间表。中间表至少要包含两个字段,这两个字段都是外键,分别指向两张表的主键。