暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用表格数据-主键

FortuneXu 2025-10-22
44

摘要: 在本教程中,你将了解主键以及如何使用 PostgreSQL 主键约束为表创建主键。

定义主键

主键是一个列或一组列,用于唯一标识表中的每一行。它确保主键列中的每一行都有一个不同的值。

例如, brand_id 列是下面 brands 表的主键:

brand_id name
1 Apple
2 Samsung
3 Google

在这个 brands 表中,brand_id 为 1 的品牌名称是 Apple ,2 代表 Samsung ,31 表示 Google 。brand_id 列中没有重复的数字。

在 PostgreSQL 中,您可以使用 PRIMARY KEY 约束为表定义主键。

如果主键是单个列,您可以通过在主键列后添加 PRIMARY KEY 关键字,将 PRIMARY KEY 约束定义为列约束:

CREATE TABLE table_name( column1 data_type PRIMARY KEY,    column2 data_type,    column3 data_type,    ... );

在这种语法中,column1 是表的主键列。

当主键列包含两列或更多列时,您可以将主键定义为表约束:

CREATE TABLE table_name(    column1 data_type,    column2 data_type,   column3 data_type,   ...    PRIMARY KEY (column1, column2) );

在这种语法中,主键包含 column1 和 column2 。换句话说,没有两行在 column1 和 column2 中具有相同的值。当主键由两个或更多列组成时,它被称为复合主键。

为表添加主键

如果您有一个没有主键的表,可以使用以下 ALTER TABLE 语句添加一个主键:

ALTER TABLE table_name ADD PRIMARY KEY (column1, column2, ...);

自增主键

自增列是主键的常用选择,因其简单高效。它会为插入表中的每一行新记录自动生成一个唯一编号,无需手动输入,同时确保数据的唯一性。

要在 PostgreSQL 中定义自增列,需使用 GENERATED ALWAYS AS IDENTITY 属性,如下所示:

id INT GENERATED ALWAYS AS IDENTITY

请注意,由于权限和完整性缺失问题,不建议使用 SERIAL。

创建 PostgreSQL 主键示例

让我们来看一些定义主键的示例。

为表定义主键列

按照以下示例以创建一个名为 brands 的表,其中 brand_id 作为主键列:

CREATE TABLE brands ( brand_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name VARCHAR(50) );

由于 brand_id 列是自动递增的,因此您无需为该列提供值。

以下语句将向 brands 表中插入一行新数据:

INSERT INTO brands (name) VALUES ('Apple') RETURNING *;

该语句向 brands 表中插入一行数据,其 id 为 1。

brand_id | name ----------+------- 1 | Apple

如果插入新行,其 ID 将为 2 :

INSERT INTO brands (name) VALUES ('Samsung') RETURNING *;

输出:

brand_id | name ----------+--------- 1 | Apple 2 | Samsung

创建复合主键示例

主键可以由两个或多个列组成。例如,以下 CREATE TABLE 语句创建了一个新表 product_tags ,其主键包含 product_id 和 tag_id 列:

CREATE TABLE product_tags ( product_id INT, tag_id INT, PRIMARY KEY (product_id, tag_id) );

总结

  • 主键是一个列或一组列,用于唯一标识表中的一行。
  • 使用 PostgreSQL 的 PRIMARY KEY 约束为表定义主键。
  • 使用 GENERATED ALWAYS AS IDENTITY PRIMARY KEY 来定义自增主键。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论