数据库中对于数据表的约束
该篇主要介绍数据表在使用时的约束。空属性,默认值,列描述,zerofill,主键,自增长,唯一键,外键。
其中详细介绍主键,自增长,唯一键,外键的使用方法。
(一)数据表的约束条件(二)详解主键,自增长,唯一键,外键
1,主键
- 主键:primary key用来唯一的约束该字段里面的数据,不能重复,不能为空,一张表中最多只能有一个主键;主键所在的列通常是整数类型。
- 主键的指定:
(1)创建表的时候直接在字段上指定主键;
(2)在创建表的时候,在所有字段之后,使用primary key(主键字段列表)来创建主键,如果有多个字段作为主键,可以使用复合主键;
(3)当表创建好以后,可以再次追加主键;
//1.在创建表的时候直接指定主键
create table stu4(
id int unsigned primary key comment '学生id',
name varchar(20) not null comment '学生姓名',
age int unsigned comment '学生年龄';)
//2.在创建表的时候,在所有字段之后,使用paimary key创建主键
create table stu4(
id int unsigned comment '学生id',
name varchar(20) not null comment '学生姓名',
age int unsigned comment '学生年龄',
primary key(id));
//3.在表创建好以后,追加主键
alter table stu4 add primary key(name);
- 删除主键的方法
alter table stu4 drop primary key;
2,自增长
auto_increment:当对应的字段,不给值,会自动的被系统触发,系统会从当前
- 字段中已经有的最大值+1操作,得到一个新的不同的值。通常和主键搭配使用,作为逻辑主键。
- 自增长的特点:
(1)任何一个字段要做自增长,前提是本身是一个索引(key一栏有值)
(2)自增长字段必须是整数
(3)一张表最多只能有一个自增长
举例:
create table stu5(
id int unsigned paimary key auto_increament,
name varchar(20));
此时插入数据的时候只需要插入姓名,学生id会自动增长。
3,唯一键
定义:一张表中有往往有很多字段需要唯一性,数据不能重复,但是一张表中只能有一个主键,唯一键就可以解决表中有多个字段需要唯一性约束的问题。
主键不能重复,不能为空;
唯一键不能重复,但可以为空,而且允许多个为空。
空字段不做唯一性比较。
create table stu5(
id int unsigned primary key auto_increament;
name varchar(20) unique;
//此处表示姓名不能重复
4,外键
外键用于定义主表和从表之间的关系:外键约束主要定义在从表上,主表则必须是有主键约束或unique约束。
当定义外键后,要求外键列数据必须在主表的主键列存在或为null。语法:
foreign key (字段名) references 主表(列)
举例:
//1,先创建主键表
create table school(
school_num int primary key comment '学校编号',
school_name varchar(20) comment '学校名字');
//2,再创建从表
create table class(
class_name varchar(20) comment '班级名称',
school_num int comment comment '学校编号',
foreign key (school_num) references school(school_num));
此时可以再两个表中正常插入记录。
- 主表中没有的数据在从表中也不能插入,例如主表school中没有编号为10的学校,则在从表class中就不能插入学校编号为10的记录。
- 但是对于主表中没有的数据,从表在出入的时候可以将相同字段指定为空就可以插入。例如主表中没有编号为10的学校,则从表在插入的时候可以将不插入学校标号,只插入班级名称就好。