MySQL中表的约束
目录编辑定义空属性默认值列描述zerofill主键自增长唯一键外键定义表的约束是为了保证插入数据库中的数据是符合预期的约束的本质是通过技术手段使程序员插入正确的数据。空属性在实际开发中若要保证字段不为空可在定义属性的时候指定not null如下所示默认值当某一种数据会经常性的出现在某个具体的值时可以在建表的时候就指定好在需要真实数据的时候用户可以选择性的使用默认值指定默认值的关键字为default如下所示当用户定义了not null时但却没有在对应的列插入数据显示的错误信息为没有默认值如下所示说明如果用户没有明确指定某一列要插入的数据用的是default建表的过程中对应的列没有设置default的值无法直接插入。如果用户没有指明默认值Mysql建表时会自动补全为默认值为null同时对某一列可以同时设置default和not null这两个是不冲突的。列描述列描述语法为comment用来专门描述字段会根据表创建语句保存用来给程序员来进行了解。zerofill之前定义int类型时用desc查看表结构发现对应的类型为int(10)这是MySQL数据库对数据类型做了优化括号里的数字代表宽度若宽度小于设定的宽度可以通过添加zerofill约束自动填充0但是在MySQL数据库中该存多少还是存多少。如下所示主键主键约束primary key用来唯一的约束该字段里面的数据被约束的字段不能重复并且不能为空一张表最多只能有一个主键主键所在的列通常是整数类型。如下所示去掉主键如下添加主键约束如下同时在建表时也可以在最后指明主键在最后添加主键时可以添加多列到主键中这种添加多列为主键的称为多列主键如下所示自增长自增长的关键字为auto_increment当对应的字段不给值会自动的被系统触发系统会从当前字段中已经有的最大值 1操作得到一个新的不同的值。通常和主键搭配使用作为逻辑主键。如下图所示查看建表语句如下所示发现在最后有一个AUTO_INCREMENT的值这个用来记录下一插入的时候要插入的值这个用户也可以自己设置。任何一个字段要做自增长前提本身是一个索引即key一栏有值自增长字段必须是整数一张表最多只能有一个自增长。若想要获取最后一次插入的AUTO_INCREMENT的值可以使用last_insert_id()函数如下所示唯一键一张表中有往往有很多字段需要唯一性数据不能重复但是一张表中只能有一个主键唯一键就可以解决表中有多个字段需要唯一性约束的问题。 唯一键的本质和主键差不多唯一键允许为空而且可以多个为空空字段不做唯一性比较。关于唯一键和主键的区别 我们可以简单理解成主键更多的是标识在表中唯一性的。而唯一键更多的是保证插入的数据和其他数据不要冲突更多的是保证业务上的唯一性。如下所示外键外键用于定义主表和从表之间的关系外键约束主要定义在从表上主表则必须是有主键或unique约束当定义外键后要求外键列数据必须在主表的主键列存在或为null。外键的语法如下foreign key (字段名) references 主表(列)如下所示若要删除从表中数据要先将主表中的产生关联的数据删除后才能删除从表中的数据。