SQL联接的概念和键的约束

  • 本文关键字:约束 SQL sql
  • 更新时间 :
  • 英文 :


我对JOIN和约束之间的概念差异有疑问。我们在构建模型时使用主键和外键关系。

但是,如果我们可以使用JOIN来构建任何类型的左/全/内关系,为什么我们需要约束?添加参考以供进一步阅读将不胜感激。

JOIN允许您构造查询,以便从相关表中检索数据。例如,如果你有一个教师表和一个类似的班级表

CREATE Teachers (TeacherId INT NOT NULL PRIMARY KEY, TeacherName VARCHAR(100) NOT NULL);
CREATE Classes (ClassID INT NOT NULL PRIMARY KEY, TeacherId INT NOT NULL,
ClassName VARCHAR(100));

将它们连接到的查询

SELECT T.TeacherId, T.TeacherName, C.ClassId, C.ClassName 
FROM Teachers T
INNER JOIN Classes C on T.TeacherId=C.TeacherId

会让你找到每个老师正在教授的课程。

join可以用于连接任意两个表,即使它们之间没有任何有意义的关系:

SELECT T.* FROM Teachers 
INNER JOIN Reptiles R
On R.ReptileId = T.TeacherId

外键constraint可以防止插入违反约束的数据。或者防止删除会导致违反约束的数据。例如,教师和班级表之间的外键约束

ALTER TABLE Classes
ADD CONSTRAINT FK_Teacher_Class FOREIGN KEY (TeacherId)
REFERENCES Teachers (TeacherId)

如果教师仍注册为教授至少一个班级,则会阻止您删除该教师;它还将阻止您插入一个没有"教师"的类,或将一个类修改为具有没有匹配"教师"行的"教师ID"。

此外,还有其他类型的约束,例如CHECK约束控制允许特定列具有哪些值。

在现代数据库管理系统中,约束的存在可以用来优化SQL查询,因此它的效率要高得多。

我认为约束是用来不允许删除数组中的数据的,因为它知道它与另一个数据相关。基本上,它是数据保护。

最新更新