约束:
约束保证数据的完整性和一致性;
约束分为表级约束和列级约束,如果约束只针对某一个字段使用,那么就称列级约束;
如果约束针对两个或以上字段,称为表级约束。
按功能来分则分为:非空约束,主键约束,唯一约束,默认约束,外键约束
FOREIGN KEYp:
外键约束,保持数据一致性,完整性。实现一对一或一对多关系。
外键约束的要求:
1,父表和子表必须使用相同的存储引擎,而且禁止使用临时表。(父表:子表所参照的表子表:具有外键列的表)
2,数据表的存储引擎只能为InnoDB。
3.外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。( 外键列:曾经加过FOREIGN KEYp的列,参照列:外键列所参照的列称为参照列)
4,外键列和参展列必须创建索引。如果外键列不存在索引的话,mysql将自动创建索引 。( 如果参照列不存在索引的话,mysql不会自动创建索引。但如果参照列为主键的话,则会自动创建索引。主键在创建的同时会自动创建索引,所以参照列其实已经有了索引。而外键列上没有创建索引,mysql则会自动创建索引。)
一个简单的外键例子
先创建一个provinces表:
查看存储引擎是否是InnoDB:
再创建一个子表users:
这样一个简单的例子就完成了。
其中
users表为子表,(有外键表就称为子表),子表所参照的表provinces表为父表。
users表中的pid称为外键列,provinces表中的id称为参照列
最后查看是否创建索引:
这是查看provinces表是否创建索引,想要查看users表也是同理,把provinces改为users就好