PostgreSQL Primary Key主键
在本节中,我们将了解 PostgreSQL 主键的工作原理、PostgreSQL 主键的示例以及如何通过SQL命令管理 PostgreSQL 主键约束。
并且,了解如何向当前表添加一个自动递增的 (SERIAL) 主键并删除一个主键。
PostgreSQL 的Primary Key主键是什么?
它是表中的一个字段,用于单独标识数据库表中的每一行或记录,并且它包含唯一值。
主键不包含任何空值。而对于这一点,我们也可以说主键是集合了一张表唯一的非空约束。如果该列有主键约束,则它不能为null 或为空。
它用于区分数据库表中的每条记录。我们可以包含其他唯一列,但我们在包含单个或多个字段的数据库表中只有一个主键。
它是创建数据库表时最关键的键,它可以是一个唯一的ID。它可以表示为一列或一组列。
主键的工作类似于唯一约束。尽管如此,主键和唯一约束之间的显着区别在于一个表只能有一个主键;但是,该表可以有一个或多个唯一且非空的约束。
当我们向表中插入新行时,主键列也可以使用SERIAL(自动递增)特性自动为特定行创建下一个数字。
换句话说,我们可以说PostgreSQL的主键只是字段或字段的分组,它唯一指定了数据。并且作为主键一部分的字段都不能具有 NULL 值。
每当将主键添加到表中时,PostgreSQL 都会在列组或列上创建一个唯一的 B 树索引,它描述了主键。
主键规则
如果我们正在处理PostgreSQL 主键,我们应该遵循以下规则:
- 主键列不能包含空值或空值。
- 主键列值必须是唯一的。
- 每个表只能有一个主键。
- 如果我们使用主键,我们应该使用推荐的INT 或 BIGINT数据类型。
如何在 PostgreSQL 中创建主键
在PostgreSQL中,我们可以借助以下命令创建主键:
- CREATE TABLE命令
- ALTER TABLE命令
现在,我们正在详细讨论这两个命令。
使用 CREATE TABLE 命令创建主键
我们可以在 CREATE TABLE 命令的帮助下在 PostgreSQL 中生成一个主键。
当我们使用CREATE TABLE 命令指定表的结构时,我们通常可以将主键添加到表中。
使用 create table 语句创建主键的语法
下图用于显示我们如何使用 CREATE TABLE 命令创建主键:
第一种语法用于在表中仅创建一个主键列:
CREATE TABLE table_name
(
column1 datatype CONSTRAINT constraint_name PRIMARY KEY,
column2 datatype [ NULL | NOT NULL ],
...
);
我们可以使用第二个插图在表中创建多个主键列:
CREATE TABLE table_name
(
column1 datatype [ NULL | NOT NULL ],
column2 datatype [ NULL | NOT NULL ],
...
CONSTRAINT constraint_name
PRIMARY KEY (column_name(s))
);
在上面的语法中,我们使用了以下参数,我们在下表中进行了讨论:
参数名称 | 描述 |
---|---|
Table_name | 这是我们要创建的表的名称。 |
column1, column2 | 这些是我们在表中创建的列。 |
constraint_name | constraint_name 用于指定主键的名称。 |
Column_name(s) | 这些列将成为主键。 |
使用 Create 命令的 PostgreSQL 主键示例
要了解PostgreSQL 主键的工作原理,我们将看到下面的示例,它描述了如何在 PostgreSQL 中使用主键。
在下面的示例中,我们创建一个名为Applicant的新表,其中包含四列,例如applicant_Id、applicant_username、applicant_password 和 applicant_email。
而applicant_id是主键,在Applicant表中唯一分类申请人id。
CREATE TABLE Applicant (
applicant_Id INT SERIAL PRIMARY KEY,
applicant_username VARCHAR(50),
applicant_password VARCHAR(30),
applicant_email VARCHAR(55));
执行上述命令后,我们会得到如下消息窗口,显示Applicant表已成功创建到Organization数据库中。
以Applicant 身份成功创建新表后,我们将在INSERT命令的帮助下向其中输入一些值。
INSERT INTO Applicant(applicant_id, applicant_username, applicant_password, applicant_email)
VALUES (101,'Mike Ross', 'Mikeross@', 'rossmike@javatpoint.com'),
(102, 'John Smith', 'Smith#john', 'Johnsmith11@javatpoint.com');
执行上述命令后,我们会得到如下消息窗口,显示这两个值已经成功插入到Applicant表中。
正如我们在上面的屏幕截图中看到的,第一个插入命令将被执行,因为我们已经为主键列使用了唯一值。
但是如果我们想使用与 101 相同的applicant_id值向Applicant表中插入一个值,那么 PostgreSQL 将发出错误。
INSERT INTO Applicant(applicant_id, applicant_username,
applicant_password, applicant_email)
VALUES (101,'Ava jane', '1234@56', 'Ava@javatpoint.com');
执行上述插入命令后,我们会得到如下错误:The Duplicate key value violates unique constraint "applicant_pkey " as applicant_id =101 values already exist.
热门文章
优秀文章