MySQL InnoDB foreign key between different databases

MySQL InnoDB foreign key between different databases

MySQL数据库是应用广泛的关系型数据库管理系统,常常会出现需要在不同的数据库之间建立外键关系的情况。本文将会介绍如何在MySQL的InnoDB引擎下建立不同数据库之间的外键关系,并附上详细的操作示例。

阅读更多:MySQL 教程

InnoDB引擎下不同数据库之间的外键关系

在MySQL数据库的InnoDB引擎下,外键的建立是通过约束(constraint)实现的。在同一个数据库中建立外键可以通过如下语句实现:

ALTER TABLE 表名称 ADD CONSTRAINT 外键名称 FOREIGN KEY (列名称) REFERENCES 关联表名称(关联列名称);

如果需要在不同的数据库之间建立外键,需要在关联表名称前面加上数据库名称和”.”,例如:

ALTER TABLE 表名称 ADD CONSTRAINT 外键名称 FOREIGN KEY (列名称) REFERENCES 数据库名称.关联表名称(关联列名称);

需要注意的是,在建立外键关系之前,必须保证两个数据库都存在且都是InnoDB引擎。此外,建立外键关系的表格也必须拥有InnoDB引擎,并且列集必须匹配。

操作示例

假设我们有两个数据库db1和db2,它们都是InnoDB引擎。我们需要在db1的表格t1中建立一个指向db2表格t2的外键关系。操作步骤如下:

  1. 创建数据库db1和db2
CREATE DATABASE IF NOT EXISTS db1;
CREATE DATABASE IF NOT EXISTS db2;
  1. 创建表格t1和t2
USE db1;
CREATE TABLE IF NOT EXISTS t1 (
  id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  data VARCHAR(50),
  t2_id INT,
  CONSTRAINT fk_t2 FOREIGN KEY (t2_id) REFERENCES db2.t2(id)
);

USE db2;
CREATE TABLE IF NOT EXISTS t2 (
  id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  data VARCHAR(50)
);
  1. 插入数据
USE db2;
INSERT INTO t2 (data) VALUES ("Hello World!");

USE db1;
INSERT INTO t1 (data, t2_id) VALUES ("This is a test", 1);
  1. 查询结果
SELECT t1.data, t2.data FROM db1.t1 JOIN db2.t2 ON t1.t2_id = t2.id;

结果应该如下:

+----------------+--------------+
| data           | data         |
+----------------+--------------+
| This is a test | Hello World! |
+----------------+--------------+

总结

通过本文的操作示例,我们了解到如何在MySQL的InnoDB引擎下建立不同数据库之间的外键关系。确保数据库都采用了InnoDB引擎,并通过约束(constraint)实现关联关系,可以使数据库的设计更为合理化和规范化。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程