📜  如何在 SQL 中创建具有多个外键的表?

📅  最后修改于: 2022-05-13 01:55:13.618000             🧑  作者: Mango

如何在 SQL 中创建具有多个外键的表?

当一个表中的非主属性列引用主键并且与该表的主属性列具有相同的列时,称为外键。它奠定了两个表之间的关系,这主要有助于表的规范化。根据需求,一个表可以有多个外键。

在本文中,让我们看看如何在 MSSQL 中创建具有多个外键的表。

句法:

column_name(non_prime) data_type REFERENCES table_name(column_name(prime)

步骤 1:创建数据库

我们使用以下命令创建名为 GeeksforGeeks 的数据库:



询问:

CREATE DATABASE GeeksforGeeks

步骤 2:使用数据库

要使用 GeeksforGeeks 数据库,请使用以下命令:

询问:

USE GeeksforGeeks

第 3 步:创建 3 个表。表 student_details 包含引用表 student_branch_details 和 student_address 的两个外键。

询问:



CREATE TABLE student_details(
  stu_id VARCHAR(8) NOT NULL PRIMARY KEY,
  stu_name VARCHAR(20),
  stu_branch VARCHAR(20) FOREIGN KEY REFERENCES student_branch_details(stu_branch),
  stu_pin_code VARCHAR(6) FOREIGN KEY REFERENCES student_address(stu_pin_code)
  );
CREATE TABLE student_branch_details(
  stu_branch VARCHAR(20) PRIMARY KEY,
  subjects INT,
  credits INT
);
CREATE TABLE student_address(
  stu_pin_code VARCHAR(6) PRIMARY KEY,
  stu_state VARCHAR(20),
  student_city VARCHAR(20)
);

输出:

可以在 UI 左侧的对象资源管理器的表部分中检查键的数量和类型。

第 4 步:向表中插入数据

使用以下 SQL 查询将行插入 student_branch_details 和 student_address 表中:

询问:

INSERT INTO student_branch_details VALUES
  ('E.C.E',46,170),
  ('E.E.E',47,178),
  ('C.S.E',44,160)

INSERT INTO student_address VALUES
  ('555555', 'xyz','abc'),
  ('666666', 'yyy','aaa'),
  ('777777','zzz','bbb'),
  ('888888','www','ccc'),
  ('999999','vvv','ddd')

将行插入 student_details

询问:



INSERT INTO student_details VALUES
('1940001','PRATHAM','E.C.E','555555'),
('1940002','ASHOK','C.S.E','666666'),
('1940003','PAVAN KUMAR','C.S.E','777777'),
('1940004','SANTHOSH','E.C.E','888888'),
('1940005','THAMAN','E.C.E','999999'),
('1940006','HARSH','E.E.E','888888')

第 5 步:验证插入的数据

使用以下 SQL 查询在插入行后查看表 student_details、student_branch_details、student_address:

询问:

SELECT * FROM student_details
SELECT * FROM student_branch_details
SELECT * FROM student_address

输出: