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.

热门文章

优秀文章