SQL 如何添加外键
在本文中,我们将学习如何将外键添加到我们的SQL数据库表的列中。
SQL中的 FOREIGN KEY 用于在数据库中连接两个表的记录。在一个表中被定义为FOREIGN KEY的列必须是同一个数据库中另一个表中的PRIMARY KEY。
我们可以通过以下两种方式轻松向列添加外键:
- 使用Create table语句添加外键
- 使用Alter Table语句添加外键
如果您想将FOREIGN KEY添加到SQL表中的列中,请按照给定顺序执行以下步骤:
- 在系统中创建数据库。
- 在同一数据库中创建两个表。
- 在添加外键之前查看表结构。
- 向表中添加外键。
- 查看表结构。
现在,我们将通过示例解释上述步骤:
步骤1:创建数据库
在结构化查询语言中,创建数据库是在数据库中存储结构化表的第一步。
使用以下SQL语法创建数据库:
CREATE DATABASE Database_Name;
假设你想创建 Vehicles 数据库。为此,您需要在结构化查询语言中键入以下命令:
CREATE DATABASE Vehicles;
步骤2:在数据库中创建两个表
现在,您需要使用以下SQL语法在数据库中创建表:
CREATE TABLE table_name
(
column_Name_1 data type (size of the column_1),
column_Name_2 data type (size of the column_2),
column_Name_3 data type (size of the column_3),
...
column_Name_N data type (size of the column_1)
);
以下SQL查询在 Vehicles 数据库中创建 Cars_Details 表。
CREATE TABLE Cars_Details
(
Car_Number INT AUTO_INCREMENT PRIMARY KEY,
Model INT,
Cars_Name VARCHAR (20),
Colour VARCHAR (20),
);
下面的查询在 Vehicles 数据库中创建了 Cars_Price_Details 表:
CREATE TABLE Cars_Price_Details
(
Model INT NOT NULL PRIMARY KEY,
Cars_Price INT NOT NULL
);
步骤3:在添加外键之前查看表结构
在创建表和插入数据后,您可以通过在SQL应用程序中键入以下查询来查看两个表的结构:
DESC Cars
or
DESCRIBE Cars ;
Field | Type | NULL | Key | Default | Extra |
---|---|---|---|---|---|
Car_Number | INT | NO | PRI | NULL | auto_increment |
Model | INT | Yes | - | NULL | - |
Car_Name | Varchar(20) | Yes | - | NULL | |
Color | Varchar(20) | Yes | - | NULL | - |
DESC Cars_Price_Details;
Field | Type | NULL | Key | Default | Extra |
---|---|---|---|---|---|
Car_Model | INT | No | PRI | NULL | - |
Car_Price | INT | No | - | NULL |
步骤4:在表中的列上添加外键
如果您想在表创建时添加外键,那么您必须使用以下SQL中的CREATE TABLE语法:
CREATE TABLE table_name1
(
Column_Name_1 data type (size of the column_1),
Column_Name_2 data type (size of the column_2),
......,
Column_Name_N data type (size of the column_N) FOREIGN KEY REFERENCES Table_Name2 (Column_Name)
) ;
示例
下面的查询在Cars_Details表的’Model’列上添加了外键:
CREATE TABLE Cars_Details
(
Car_Number INT AUTO_INCREMENT,
Model INT FOREIGN KEY REFERENCES Cars_Price_Details (Car_Model),
Cars_Name VARCHAR (20),
Color VARCHAR (20) UNIQUE,
Price INT NOT NULL
) ;
这个SQL查询使用外键将 Cars_Details 表与 Cars_Price_Details 表连接起来。
步骤5:在添加外键后查看表结构
要检查在第4步执行的查询的结果, 你需要在SQL中键入以下DESC命令:
DESC Cars_Details;
字段 | 类型 | 允许为空 | 键 | 默认值 | 额外信息 |
---|---|---|---|---|---|
Car_Number | INT | 是 | 主键 | NULL | 自增 |
Model | INT | 否 | 外键 | NULL | - |
Car_Name | Varchar(20) | 是 | - | NULL | - |
Color | Varchar(20) | 是 | - | NULL | - |
Price | INT | 否 | - | NULL | - |
Average | INT | 否 | - | 0 | - |
如上输出所示,Model列被创建为外键。
向现有表添加外键
如果你想向现有表添加外键,你需要在SQL中使用以下ALTER语法:
ALTER TABLE Table_Name1 ADD CONSTRAINT ForeignKey_Name FOREIGN KEY (Column_Name) REFERENCES Table_Name2 (Column_Name);
以下查询在数据库系统中已有Cars_Details表时,在Model列上添加了一个FOREIGN KEY:
ALTER TABLE Cars_Details ADD CONSTRAINT FK_Cars_Details FOREIGN KEY (Model) REFERENCES Cars_Price_Details (Car_Model);
这个SQL查询使用外键将 Cars_Details 表与 Cars_Price_Details 表连接起来。
从表中删除外键
如果你想从表的列中删除外键,你需要在SQL中使用以下 ALTER 语法:
ALTER TABLE Table_Name DROP FOREIGN KEY Foreign_Key_Name;
以下查询从Cars_Details表的Model列中删除了创建的FOREIGN KEY:
ALTER TABLE Cars DROP FOREIGN KEY FK_Cars_Details;