我有以下两个表:
CREATE TABLE IF NOT EXISTS Doctor
(
ssn CHAR(11) PRIMARY KEY,
name CHAR(30),
specialty CHAR(30),
yearsOfExperience INTEGER
);
CREATE TABLE IF NOT EXISTS Pri_Phy_Patient
(
ssn CHAR(11) PRIMARY KEY,
name CHAR(20),
age INTEGER,
address CHAR(200),
phy_ssn CHAR(11),
FOREIGN KEY (phy_ssn) REFERENCES Doctor(ssn)
);
select * from doctor
返回以下内容:
ssn name specialty yearsOfExperience
-------------------------------------------------
156188 Dr. Doctor Doctorism 12
338738 Dr. Jim Eyes 2
4354354 Dr. Man Legs 1
453543 Dr. Woman Arms 5
select * from pri_phy_patient
会返回此信息:
ssn name age address phy_ssn
-------------------------------------------------------------
1234134 Patrick 32 331 Patrickson Lane, Patton, CO NULL
1234597 Patty 23 331 Patterson Dr, Pattington, IL NULL
654643 Pamela 46 331 Pammerson Rd, Pammington, OR NULL
为什么phy_ssn
列的NULL
列为Pri_Phy_Patient
?我用phy_ssn
引用了Doctor(ssn)
。 phy_ssn
列是否不具备所有医生SSN?
答案 0 :(得分:0)
我认为术语"外键"对你来说并不是很清楚。
让我尝试解释一下。外键是引用另一个表中主键的字段。
让我们检查一下这个例子:
在此方案中,表AuthorId
中的列Book
引用表AuthorId
中的列Authors
。
现在让我们回到你的案子。表phy_ssn
中的列pri_phy_patient
是引用表格医生中的列ssn
,但它可以为空,因此它可以为空。它不应该包含所有的医生。
希望这有帮助!