在MySQL中,关系数据库表与表之间的关联可以通过使用“外键”来实现。在创建表时,使用外键可以使多个表之间实现数据的一致性,保证关联表的数据完整性。
在MySQL中,创建外键需要遵循以下步骤:
CREATE TABLE 必须先创建关联表1(如下): CREATE TABLE 表名1 (字段名1-1 数据类型,字段名1-2 数据类型, ...........,CONSTRAINT 外键名称 FOREIGN KEY (主表字段名1) REFERENCES 关联表2(关联表2字段名2) )CREATE TABLE 关联表2(如下): CREATE TABLE 表名2(字段名2-1 数据类型,字段名2-2 数据类型, ...........,PRIMARY KEY (主键名) )
在以上语句中,创建表1时,字段名1-1等是表1所需要的字段描述,CONSTRAINT 外键名称定义外键名称,在FOREIGN KEY(主表字段名)中定义主表所需的外键字段名称,REFERENCES关联表2 (关联表2字段名2)表示定义关联表以及关联表所需的字段名。
例如,我们使用外键定义两个表:customers(客户)和orders(订单)。
CREATE TABLE customers(CustomerID INT NOT NULL AUTO_INCREMENT,FirstName VARCHAR(50) NOT NULL,LastName VARCHAR(50) NOT NULL,PRIMARY KEY(CustomerID));CREATE TABLE orders(OrderID INT NOT NULL AUTO_INCREMENT,OrderNumber INT NOT NULL,CustomerID INT,PRIMARY KEY(OrderID),CONSTRAINT FK_CustomerOrder FOREIGN KEY(CustomerID)REFERENCES customers(CustomerID))
以上代码定义了两种表——客户表和订单表。 在定义订单表时,我们使用了外键“FK_CustomerOrder”链接两个表。 FK_CustomerOrder是外键名称, CustomerID是主表字段名,customers是关联表名称, CustomerID是关联表名称的字段名。
使用外键时,我们可以实现数据的一致性,保证了所有订单都必须属于某个客户,在插入失败之前,不允许插入不属于任何客户的订单。同时,外键还可以帮助我们在删除或修改数据时,避免出现引用的数据无法删除或修改的情况。