PRIMARY KEY
约束。而副键(通常称为外键,Foreign Key)用于在两个表之间建立关联,确保一个表中的值对应于另一个表中的主键值,从而维护表之间的引用完整性。设置外键时,使用FOREIGN KEY
约束,并指定参照的主表和主键列。简而言之,主键用于唯一标识记录,外键用于表间关联,共同维护数据库的完整性和一致性。在数据库设计中,主键(Primary Key)和副键(通常称为外键,Foreign Key)是构建表之间关系、确保数据完整性的重要概念,了解如何在SQL语句中设置它们,对于设计高效、可靠的数据库系统至关重要。
(图片来源网络,侵删)主键(Primary Key)
主键是表中每条记录的唯一标识符,一个表只能有一个主键,但主键可以包含多个列(称为复合主键),主键的值必须唯一,且不允许为NULL。
(图片来源网络,侵删)设置主键的SQL语句示例:
(图片来源网络,侵删)假设我们有一个名为students
的表,想要将student_id
列设置为主键:
CREATE TABLE students ( student_id INT NOT NULL, name VARCHAR(100), age INT, PRIMARY KEY (student_id) );
如果表已经存在,想要添加主键,可以使用ALTER TABLE
语句:
ALTER TABLE students ADD PRIMARY KEY (student_id);
但请注意,在添加主键之前,必须确保该列中没有重复的值,并且没有NULL值。
(图片来源网络,侵删)副键(外键,Foreign Key)
(图片来源网络,侵删)外键用于在两个表之间建立连接,一个表的外键是另一个表的主键,外键用于维护参照完整性,确保一个表中的数据与另一个表中的数据相匹配。
(图片来源网络,侵删)设置外键的SQL语句示例:
(图片来源网络,侵删)假设我们有两个表:students
(学生表)和courses
(课程表),现在我们想创建一个enrollments
(注册表)来记录学生选修的课程,其中student_id
是外键,指向students
表的主键,course_id
是外键,指向courses
表的主键。
创建students
和courses
表(如果尚未创建):
CREATE TABLE students ( student_id INT NOT NULL, name VARCHAR(100), age INT, PRIMARY KEY (student_id) ); CREATE TABLE courses ( course_id INT NOT NULL, course_name VARCHAR(100), PRIMARY KEY (course_id) );
创建enrollments
表并设置外键:
CREATE TABLE enrollments ( enrollment_id INT AUTO_INCREMENT, student_id INT, course_id INT, enrollment_date DATE, PRIMARY KEY (enrollment_id), FOREIGN KEY (student_id) REFERENCES students(student_id), FOREIGN KEY (course_id) REFERENCES courses(course_id) );
在这个例子中,enrollments
表的student_id
和course_id
列被设置为外键,分别引用students
表和courses
表的主键。
常见问题解答
(图片来源网络,侵删)Q: 如果一个表已经存在,我如何添加外键?
(图片来源网络,侵删)A: 如果表已经存在,你可以使用ALTER TABLE
语句来添加外键,向enrollments
表添加外键的SQL语句如下:
ALTER TABLE enrollments ADD FOREIGN KEY (student_id) REFERENCES students(student_id), ADD FOREIGN KEY (course_id) REFERENCES courses(course_id);
Q: 外键约束有什么作用?
(图片来源网络,侵删)A: 外键约束的主要作用是维护数据库的参照完整性,它确保了一个表中的外键值必须匹配另一个表的主键值,从而防止了数据不一致的情况,在enrollments
表中,你不能插入一个不存在的student_id
或course_id
,因为这会违反外键约束。
Q: 复合主键和外键有什么区别?
(图片来源网络,侵删)A: 复合主键是由两个或多个列组成的唯一标识符,用于唯一标识表中的每一行,而外键是表中的一个或多个列,这些列的值是另一个表的主键的值,用于在两个表之间建立关系,简而言之,复合主键用于唯一标识表内的记录,而外键用于在表之间建立和维护关系。
(图片来源网络,侵删)
网友留言: