📜  ajouter une contrainte de clé étrangère sql (1)

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

SQL中添加外键约束

在SQL中,外键约束被用来确保表格之间的关联关系。通过添加外键约束,可以限制在一个表格中插入或更新特定值的能力取决于是否另一个表格中存在该值。

以下是如何在SQL中添加外键约束的步骤:

  1. 首先,需要创建相关表格。

例如,在本文中,我们将使用以下两个表格:

CREATE TABLE countries (
  id INT PRIMARY KEY,
  name VARCHAR(50)
);

CREATE TABLE cities (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  country_id INT,
  FOREIGN KEY (country_id) REFERENCES countries(id)
);

在这里,我们创建了两个表格: 一个叫作“countries”的国家表格,以及一个叫作“cities”的城市表格。 城市表格包含一个名为“country_id”的列,它是一个代表国家表格中某个国家的外键。 国家表格中的“id”列是主键,将用作在城市表格中引用关联数据的外键。

  1. 然后,使用“FOREIGN KEY”语句定义外键约束。 语法如下:
ALTER TABLE cities ADD FOREIGN KEY (country_id) REFERENCES countries (id);

在此语句中,“cities”是城市表格,“country_id”是城市表格中的列,“countries”是国家表格,而“id”是国家表格中的列 – 即,它是城市表格中的“country_id”列引用的列或主键。

  1. 确保添加了正确的外键约束。

可以使用以下语句来检查是否添加了正确的外键约束:

SHOW CREATE TABLE cities;

这将显示“cities”表格的详细信息,包括外键约束。输出应如下所示:

CREATE TABLE `cities` (
  `id` int(11) NOT NULL,
  `name` varchar(50) NOT NULL,
  `country_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `country_id` (`country_id`),
  CONSTRAINT `cities_ibfk_1` FOREIGN KEY (`country_id`) REFERENCES `countries` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

其中,“cities_ibfk_1”是外键约束的命名。

如果尝试插入不符合外键约束要求的数据,系统将抛出一个错误。

就这样,你已成功添加了一条外键约束!