首先,大家需要先建立父表和子表。父表中通常包含一组主键,而子表中会将父表中的主键作为外键来参照,实现关联查询的效果。
CREATE TABLE `parent_table` ( `id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `child_table` ( `id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, `parent_id` INT UNSIGNED NOT NULL, `child_name` VARCHAR(20) NOT NULL, KEY `parent_id_index` (`parent_id`), CONSTRAINT `parent_reference` FOREIGN KEY (`parent_id`) REFERENCES `parent_table` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
可以看到,在子表中大家使用了FOREIGN KEY来创建外键约束,指向了父表中的id字段。同时,ON DELETE CASCADE和ON UPDATE CASCADE表示在删除或更新父表中id字段时也会同步删除或更新子表中的外键关联。
当大家需要删除父表中的数据时,如果其id被子表所引用,那么将无法删除父表中的该行数据,同时也无法删除子表中与之关联的行。这样可以避免出现数据不一致的情况。
在使用外键的过程中,除了点语法和SELECT查询外,其他SQL语句都已经默认考虑到了外键的约束,不需要再次设置。外键约束的使用可以提高数据的完整性和一致性,是一个常用的数据库设计和优化手段。