📅  最后修改于: 2023-12-03 15:06:45.029000             🧑  作者: Mango
在关系型数据库中,表与表之间可以通过外键建立关联关系。外键约束可以保证数据在插入或更新时的一致性,确保不会出现数据不一致现象。下面介绍如何使用 ALTER 命令添加外键约束的 SQL 查询。
添加外键约束的语法格式如下:
ALTER TABLE 子表
ADD CONSTRAINT 外键名
FOREIGN KEY(子表关联字段)
REFERENCES 父表(父表关联字段)
其中,
ALTER TABLE
:修改表的结构ADD CONSTRAINT
:添加一个约束条件FOREIGN KEY
:定义此表的外键字段REFERENCES
:指定外键参考的表和字段为了更好的理解,下面给出一个例子。
我们有两个表,一个是学生表(student),一个是年级表(grade),学生表中有一个年级字段(grade_id),它与年级表中的主键ID关联。
先创建 year 表:
CREATE TABLE `grade` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '年级名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
然后创建 student 表:
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '学生姓名',
`age` int(11) DEFAULT NULL COMMENT '学生年龄',
`grade_id` int(11) DEFAULT NULL COMMENT '学生所在年级ID',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
现在需要在 student 表的 grade_id 字段上创建外键约束。
ALTER TABLE `student`
ADD CONSTRAINT `fk_student_grade_id`
FOREIGN KEY(`grade_id`)
REFERENCES `grade`(`id`);
以上 SQL 语句的作用是将 student 表中的 grade_id 字段设为一个外键,参考的是 grade 表的主键 ID 字段,外键名为 fk_student_grade_id。
添加外键约束是关系型数据库设计的一个重要部分,可以用于保证数据的一致性和完整性。使用 ALTER 命令添加外键约束的 SQL 查询格式简单,但是需要正确指定子表和父表以及相应的关联字段。强烈建议在创建表时就添加外键约束,以保证数据的一致性。