📜  使用 ALTER 命令添加外键约束的 SQL 查询(1)

📅  最后修改于: 2023-12-03 15:06:45.029000             🧑  作者: Mango

使用 ALTER 命令添加外键约束的 SQL 查询

在关系型数据库中,表与表之间可以通过外键建立关联关系。外键约束可以保证数据在插入或更新时的一致性,确保不会出现数据不一致现象。下面介绍如何使用 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 查询格式简单,但是需要正确指定子表和父表以及相应的关联字段。强烈建议在创建表时就添加外键约束,以保证数据的一致性。