常见的表的约束:
1.空属性约束
- 空属性约束包含俩个值:null(默认的)和not null(不为空)
- 数据库默认字段基本都是为空的,但是有些情景下,数据为空时没有办法进行运算,就不要要保证字段不为空。
eg:创建一个班级表,包含班级名和班级所在的教室,如果班级没有名字,不知道在哪个班级,如果教室名字可以为空,就不知道在哪上课。
创建该表:
此时进行数据插入必须赋俩个值,否则就会报错。
2.默认值
默认值:指一种数据会经常性的出现某个具体的值,可以一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值。
创建一个带有默认值的表:
默认值的生效:数据在插入的时候不给该字段赋值,就会使用默认值:
3.列描述
列描述:没有实际含义,专门来描述字段,会根据表创建语句保存。
可以理解为:备注
通过desc看不到备注信息:
通过show可以看到:
4.zerofill
创建一个表,给表中插入数据:
此时,对列value1添加zerofill属性后:
可以看到value1的值由原来的1 变为00001,这就是zerofill属性的作用:如果宽度小于设定的宽度,自动填充0.验证一下数据库中实际存储的值:
可看出,实际存储的值还是1;
00001只是设置了zerofill属性后的一种格式化输出而已。
5.主键
主键:primary key;
用来唯一的约束一个字段里面的数据,不能重复,不能为空,一张表中最多只能有一个主键,且主键所在的列通常是整数类型。
- 创建表的时候直接在字段上指定主键:
- 在创建表的时候,在所有字段之后,使用primary key(主键字段列表)来创建主键,如果多个字段作为主键可以使用复合主键:
- 表创建好后也可再次追加主键:
alter table 表名 add primary key(字段列表);
- 删除主键:
alter table 表名 drop primary key;
6.自增长
auto_increment:当对应字段未给出值时,体统会自动从当前字段中已有的最大值进行+1操作,得到一个新的不同的值。
通常和主键搭配使用,作为逻辑主键。
自增长的特点:
- 任何一个字段要做自增长,前提是本身是一个索引(key一栏有值);
- 自增长字段必须是整数
- 一张表最多只能有一个是自增长
eg:
在只给出name的前提下,id是自增状态;
7.唯一键
一张表中往往会有很多字段需要唯一性,数据不能重复,但是一张表只能有一个主键,此时唯一键就可以解决表中有多个字段需要唯一性约束的问题。
唯一键的本质和主键差不多,唯一键允许为空,而且可以多个为空,空字段不做唯一性比较。
eg:
创建一个带有唯一键的表:
分别插入正常数据,唯一键重复的数据和唯一键为的空数据:
8.外键
外键用于定义主表和从表之间的关系,外键约束主要定义在从表上,主表则必须是有主键约束或唯一键约束。
当定义外键后,要求外键列数据必须在主表的主键列存在或者为null
创建外键语法:foreign key(字段名)references 主表(列);
eg:设计一个学生表和一个班级表,只需要将学生表中的calss_id 与班级表中的id 建立起外键约束,便可以避免将班级表中的数据都设计在每个学生表的后面所造成的数据冗余。
eg:
先创建主键表:
再创建从表: