SQL语句中如何设置主键与副键(外键)

0 24
在SQL中,设置主键(Primary Key)用于唯一标识表中的每一行,确保数据的唯一性和完整性。主键列的值不能重复且不允许为NULL。设置主键时,通常使用PR...
在SQL中,设置主键(Primary Key)用于唯一标识表中的每一行,确保数据的唯一性和完整性。主键列的值不能重复且不允许为NULL。设置主键时,通常使用PRIMARY KEY约束。而副键(通常称为外键,Foreign Key)用于在两个表之间建立关联,确保一个表中的值对应于另一个表中的主键值,从而维护表之间的引用完整性。设置外键时,使用FOREIGN KEY约束,并指定参照的主表和主键列。简而言之,主键用于唯一标识记录,外键用于表间关联,共同维护数据库的完整性和一致性。

在数据库设计中,主键(Primary Key)和副键(通常称为外键,Foreign Key)是构建表之间关系、确保数据完整性的重要概念,了解如何在SQL语句中设置它们,对于设计高效、可靠的数据库系统至关重要。

在数据库设计中,主键(Primary Key)和副键(通常称为外键,Foreign Key)是构建表之间关系、确保数据完整性的重要概念,了解如何在SQL语句中设置它们,对于设计高效、可靠的数据库系统至关重要。
(图片来源网络,侵删)

主键(Primary Key)

主键(Primary Key)
(图片来源网络,侵删)

主键是表中每条记录的唯一标识符,一个表只能有一个主键,但主键可以包含多个列(称为复合主键),主键的值必须唯一,且不允许为NULL。

主键是表中每条记录的唯一标识符,一个表只能有一个主键,但主键可以包含多个列(称为复合主键),主键的值必须唯一,且不允许为NULL。
(图片来源网络,侵删)

设置主键的SQL语句示例

设置主键的SQL语句示例:
(图片来源网络,侵删)

假设我们有一个名为students的表,想要将student_id列设置为主键:

假设我们有一个名为students的表,想要将student_id列设置为主键:
(图片来源网络,侵删)
CREATE TABLE students (
    student_id INT NOT NULL,
    name VARCHAR(100),
    age INT,
    PRIMARY KEY (student_id)
);

如果表已经存在,想要添加主键,可以使用ALTER TABLE语句:

如果表已经存在,想要添加主键,可以使用ALTER TABLE语句:
(图片来源网络,侵删)
ALTER TABLE students
ADD PRIMARY KEY (student_id);

但请注意,在添加主键之前,必须确保该列中没有重复的值,并且没有NULL值。

但请注意,在添加主键之前,必须确保该列中没有重复的值,并且没有NULL值。
(图片来源网络,侵删)

副键(外键,Foreign Key)

副键(外键,Foreign Key)
(图片来源网络,侵删)

外键用于在两个表之间建立连接,一个表的外键是另一个表的主键,外键用于维护参照完整性,确保一个表中的数据与另一个表中的数据相匹配。

外键用于在两个表之间建立连接,一个表的外键是另一个表的主键,外键用于维护参照完整性,确保一个表中的数据与另一个表中的数据相匹配。
(图片来源网络,侵删)

设置外键的SQL语句示例

设置外键的SQL语句示例:
(图片来源网络,侵删)

假设我们有两个表:students(学生表)和courses(课程表),现在我们想创建一个enrollments(注册表)来记录学生选修的课程,其中student_id是外键,指向students表的主键,course_id是外键,指向courses表的主键。

假设我们有两个表:students(学生表)和courses(课程表),现在我们想创建一个enrollments(注册表)来记录学生选修的课程,其中student_id是外键,指向students表的主键,course_id是外键,指向courses表的主键。
(图片来源网络,侵删)

创建studentscourses表(如果尚未创建):

创建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表并设置外键:

创建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_idcourse_id列被设置为外键,分别引用students表和courses表的主键。

在这个例子中,enrollments表的student_id和course_id列被设置为外键,分别引用students表和courses表的主键。
(图片来源网络,侵删)

常见问题解答

常见问题解答
(图片来源网络,侵删)

Q: 如果一个表已经存在,我如何添加外键?

Q: 如果一个表已经存在,我如何添加外键?
(图片来源网络,侵删)

A: 如果表已经存在,你可以使用ALTER TABLE语句来添加外键,向enrollments表添加外键的SQL语句如下:

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: 外键约束有什么作用?

Q: 外键约束有什么作用?
(图片来源网络,侵删)

A: 外键约束的主要作用是维护数据库的参照完整性,它确保了一个表中的外键值必须匹配另一个表的主键值,从而防止了数据不一致的情况,在enrollments表中,你不能插入一个不存在的student_idcourse_id,因为这会违反外键约束。

A: 外键约束的主要作用是维护数据库的参照完整性,它确保了一个表中的外键值必须匹配另一个表的主键值,从而防止了数据不一致的情况,在enrollments表中,你不能插入一个不存在的student_id或course_id,因为这会违反外键约束。
(图片来源网络,侵删)

Q: 复合主键和外键有什么区别?

Q: 复合主键和外键有什么区别?
(图片来源网络,侵删)

A: 复合主键是由两个或多个列组成的唯一标识符,用于唯一标识表中的每一行,而外键是表中的一个或多个列,这些列的值是另一个表的主键的值,用于在两个表之间建立关系,简而言之,复合主键用于唯一标识表内的记录,而外键用于在表之间建立和维护关系。

A: 复合主键是由两个或多个列组成的唯一标识符,用于唯一标识表中的每一行,而外键是表中的一个或多个列,这些列的值是另一个表的主键的值,用于在两个表之间建立关系,简而言之,复合主键用于唯一标识表内的记录,而外键用于在表之间建立和维护关系。
(图片来源网络,侵删)
最后修改时间:
文章相关标签:
优质vps
上一篇 2024年08月03日 12:37
下一篇 2024年08月03日 12:39

评论已关闭