云服务器免费试用

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

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

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

(图片来源网络,侵删)

主键(Primary Key)

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

(图片来源网络,侵删)

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

(图片来源网络,侵删)

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

(图片来源网络,侵删)
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_idcourse_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_idcourse_id,因为这会违反外键约束。

(图片来源网络,侵删)

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

(图片来源网络,侵删)

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

(图片来源网络,侵删)

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942@qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: SQL语句中如何设置主键与副键(外键)
本文地址: https://solustack.com/167378.html

相关推荐:

网友留言:

我要评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。