mysql怎么创建外键表
时间 : 2023-03-14 15:59:01声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

在 MySQL 中,要创建外键表,需要在创建表的时候使用 FOREIGN KEY 关键字来指定相应的外键列。下面给出一个例子来说明具体的操作步骤。

假设我们有两个表,一个是学生表 Student,一个是课程表 Course,它们的字段组成如下:

```sql

CREATE TABLE Student (

id INT AUTO_INCREMENT PRIMARY KEY,

name VARCHAR(50) NOT NULL,

age INT NOT NULL,

gender VARCHAR(10) NOT NULL,

course_id INT NOT NULL

);

CREATE TABLE Course (

id INT AUTO_INCREMENT PRIMARY KEY,

name VARCHAR(50) NOT NULL,

teacher VARCHAR(50) NOT NULL

);

在上述的学生表中,我们添加了一个名为 course_id 的列,它用来表示学生所选用的课程。为了保证 course_id 的参考完整性,我们需要将其设为一个外键,引用到课程表的 id 列上,即每个学生的 course_id 必须是课程表中已有的 id。

要实现这一点,我们可以修改上述的学生表的定义,如下所示:

```sql

CREATE TABLE Student (

id INT AUTO_INCREMENT PRIMARY KEY,

name VARCHAR(50) NOT NULL,

age INT NOT NULL,

gender VARCHAR(10) NOT NULL,

course_id INT NOT NULL,

FOREIGN KEY (course_id) REFERENCES Course(id)

);

在上述代码中,我们使用 FOREIGN KEY 关键字来指定 course_id 列作为外键,使用 REFERENCES 关键字来引用课程表的 id 列。这样,当我们执行查询操作时,就会自动检查每个学生的 course_id 是否在课程表中存在,从而保证了外键参考完整性。

需要注意的是,当我们创建外键表时,需要确保被引用的表(在本例中为 Course)已经存在。否则,在执行创建表的命令时,就会抛出一个错误。因此,为了避免这种错误发生,我们需要先创建并完善被引用表的定义,再创建引用该表的外键表。

在 MySQL 中,外键是一种用于关联两个表的重要机制,它可以保证数据的完整性和一致性。通过外键,我们可以定义一个表与加入它的其他表之间的关系,以控制删除和更新操作的影响。下面是创建外键表的步骤。

1. 创建主表

创建主表(也称为“父表”)是创建外键表最基本的步骤。在此过程中,我们需要定义表的列及其数据类型、约束等信息。例如,下面是创建一个名为 `customers` 的主表的示例:

CREATE TABLE customers (

id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,

name VARCHAR(50),

email VARCHAR(50)

);

在此例中,我们定义了三个列:`id`、`name` 和 `email`。`id` 是主键列,它通过 AUTO_INCREMENT 自动编号。请注意,主表的主键列必须定义为索引,否则无法创建外键。

2. 创建外键表

创建外键表(也称为“子表”)的过程与创建主表类似。在此过程中,我们需要定义表的列及其数据类型、约束等信息,并为外键列指定对应主表的主键列。例如,下面是创建一个名为 `orders` 的外键表的示例:

CREATE TABLE orders (

id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,

customer_id INT NOT NULL,

amount DECIMAL(10,2),

FOREIGN KEY (customer_id) REFERENCES customers(id)

);

在此例中,我们定义了三个列:`id`、`customer_id` 和 `amount`。`customer_id` 是外键列,它通过 `REFERENCES` 关键字指定对应主表的主键列 `id`。请注意,子表的外键列必须具有与对应主表的主键列相同的数据类型和约束。

3. 添加外键

现在我们已经创建了带有外键列的子表,我们还需要向 MySQL 服务器添加外键关系。为此,我们可以使用 `ALTER TABLE` 命令。例如,要添加 `orders` 表的 `customer_id` 列与 `customers` 表的 `id` 列之间的外键关系,请执行以下操作:

ALTER TABLE orders

ADD CONSTRAINT fk_orders_customers

FOREIGN KEY (customer_id) REFERENCES customers(id);

在此例中,我们使用 `ADD CONSTRAINT` 子句添加约束,将 `customer_id` 列定义为外键列,并将其与 `customers` 表的 `id` 列建立外键关系。注意,我们还为外键约束指定了一个名称 `fk_orders_customers`,以便稍后进行管理和查找。

这三个步骤概括如下:

1. 创建主表(定义主键并唯一索引)。

2. 创建外键表(定义外键列并将其房东为对应主表的主键)。

3. 添加外键关系(使用 "ALTER TABLE" 命令添加外键关系)。

这是使用 MySQL 创建外键表的基本步骤,它们将帮助您建立关联数据库的强制强完整性。