外键约束

约束:NOT NULL,PRIMARY KEY,UNIQUE KEY,DEFAULT,FOREIGN KEY

约束保证数据完整性,一致性

约束分为:表级约束,列级约束

约束类型:

NOT NULL 非空约束

PRIMARY KEY 主键约束

UNIQUE KEY 唯一约束

DEFAULT 默认约束

FOREIGN KEY 外键约束

外键约束

1 作用:数据一致性完整性,实现一对一或一对多关系

2 要求:

1)父表和子表(具有外键列的称为子表,子表参照的表为父表)必须使用相同的存储引擎,禁止使用临时表。

2)数据表的存储引擎只能是InnoDB。

3)外键列和参照列必须要有相似的数据类型,其中数字的长度或是否有符号位必须相同,字符的长度则可以不同。

4)外键列和参照列必须创建索引(参照列没有索引,MySQL自动创建索引,而外键列没有索引MySQL不会)。

3 编辑数据表默认存储引擎

MySQL配置文件,my.ini,修改默认引擎为INNODB

default-storage-engine=INNODB  

4 例子:打开test数据库,创建provinces数据表,创建user数据表,设置外键约束,当pid和provinces表中的id长度和符号位不一致,无法创建外键约束。有外键的表user表是子表,子表参照的province表是父表。pid是外键列,id是参照列。

错误,字段长度不一致


5 查看数据表引擎

show create table tbl_name

查看索引 

show indexes from provinces

6 外键约束的参照操作

创建一个user1表,参照属性为cascade
province中插入数据
user1中插入
删除父表,子表也删除

7 实际中,不使用物理外键,使用逻辑外键约束

8 表级约束与列级约束

对一个数据列的约束,为列级约束 

对多个数据列的约束,为表级约束

列级约束既可以在列定义时声明,也可以在列定义以后声明。表级约束只能在列定义后声明。常用列级约束

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容