PostgreSQL Primary key


PostgreSQL Primary key

在本节中,我们要了解的工作PostgreSQL的Primary key,例子中的PostgreSQL的Primary key,以及如何通过SQL命令来管理PostgreSQL的Primary key约束。

此外,了解如何将自动递增 (SERIAL) Primary key添加到当前表并删除Primary key

PostgreSQL 的Primary key是什么?

它是表中的一个字段,用于单独标识数据库表中的每一行或记录,并且它包含一个唯一值。

Primary key不包含任何空值。为此,我们也可以说Primary key正在收集表的唯一性非空约束。如果该列具有Primary key约束,则它不能为null 或为空

它用于区别地标识数据库表中的每条记录。我们可以包含其他唯一的列,但我们包含单个或多个字段的数据库表中只有一个Primary key

它是创建数据库表时最关键的键,它可以是唯一的 ID。它可以表示一列或一组列。

Primary key的工作类似于唯一约束。尽管如此,Primary key和唯一约束之间的显着区别是一张表只能有一个Primary key;但是,该表可以具有一个或多个唯一非空的约束。

当我们在表中插入新行时,Primary key列也可以使用SERIAL(自动增量)功能自动为特定行创建下一个数字。

换句话说,我们可以说PostgreSQL 的Primary key只是一个字段或一组字段,它唯一地指定了数据。并且作为Primary key一部分的字段都不能具有 NULL 值。

每当将Primary key添加到表中时,PostgreSQL 都会在列组或列上创建唯一的B 树索引,该索引描述了Primary key。

Primary key规则

如果我们正在处理PostgreSQL Primary key,我们应该遵循以下规则:

  • Primary key列不能包含 null 或空值。
  • Primary key列值必须是唯一的。
  • 每个表只能有一个Primary key。
  • 如果我们使用Primary key,我们应该使用推荐的INT 或 BIGINT数据类型。

如何在 PostgreSQL 中创建Primary key

在PostgreSQL 中,我们可以借助以下命令创建Primary key:

  • 创建表命令
  • 更改表命令

注意:在 PostgreSQL 中,ALTER TABLE 命令用于添加或删除Primary key。

现在,我们正在详细讨论这两个命令。

使用 CREATE TABLE 命令创建Primary key

我们可以使用 CREATE TABLE 命令的帮助在 PostgreSQL 中生成一个Primary key。

当我们使用CREATE TABLE 命令指定表的结构时,我们通常可以将Primary key添加到表中。

使用 create table 语句创建Primary key的语法

下图用于显示我们如何使用 CREATE TABLE 命令创建Primary key:

第一种语法用于在表中创建一个Primary key列

CREATE TABLE table_name  
(  
  column1 datatype CONSTRAINT constraint_name PRIMARY KEY,  
  column2 datatype [ NULL | NOT NULL ],  
  ...  
);

或者

我们可以使用第二个插图在表中创建多个Primary key列:

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 用于指定Primary key的名称。
Column_name(s) 这些是将成为Primary key的列。

使用 Create 命令的 PostgreSQL Primary key示例

要了解PostgreSQL Primary key的工作原理我们将看到以下示例,该示例描述了 PostgreSQL 中如何使用Primary key。

在下面的示例中,我们创建了一个名为Applicant的新表,其中包含四列,例如申请者 ID、申请者用户名、申请者密码和申请者电子邮件

并且applicant_id是Primary key,它唯一分类在申请人ID申请人\表。

CREATE TABLE Applicant (    
applicant_Id INT SERIAL PRIMARY KEY,    
applicant_username VARCHAR(50),     
applicant_password VARCHAR(30),    
applicant_email VARCHAR(55));

输出

执行上述命令后,我们将得到以下消息窗口,显示申请人\表已成功创建到组织数据库中。

PostgreSQL Primary key

成功创建as 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');

输出

执行上述命令后,我们会得到如下消息窗口,显示两个值已成功插入到申请\表中。

PostgreSQL Primary key

正如我们在上面的屏幕截图中看到的,第一个插入命令将被执行,因为我们使用了Primary key列的唯一值。

但是,如果我们想使用与101相同的申请者 ID值在申请表中再插入一个值,那么 PostgreSQL 将发出错误。

INSERT INTO Applicant(applicant_id, applicant_username,  
applicant_password, applicant_email)     
VALUES (101,'Ava jane', '1234@56', 'Ava@javatpoint.com');

输出

执行上述插入命令后,我们将收到以下错误:重复键值违反唯一约束“applicant_pkey ”,因为申请人_id = 101 个值已经存在。

PostgreSQL Primary key

在多列上定义Primary key

让我们看一个示例示例来了解PostgreSQL Primary key在多列上的工作。

假设我们要在多个列上指定Primary key;在这种情况下,我们可以看到下面的Create 命令示例,其中我们生成一个新表作为Trainee,\其Primary key是trainee_ID 和 trainee_roll_no的组合

CREATE TABLE Trainee (    
trainee_ID int,     
trainee_roll_No int,    
trainee_name varchar(45) NOT NULL,     
trainee_Age int,     
trainee_location varchar(25),    
Primary Key(trainee_ID, trainee_roll_No)    
 );

输出

执行上述命令后,我们会得到如下消息窗口,显示Trainee\表已成功创建到Organization数据库中。

PostgreSQL Primary key

注意:PostgreSQL 默认使用 table-name_pkey 作为Primary key约束的默认名称。

在上面的例子中,PostgreSQL为Trainee\表创建了Primary key约束 作为trainee_pkey\

如果我们想定义Primary key约束的名称,我们可以使用CONSTRAINT 子句,如以下命令所示:

CONSTRAINT constraint_name PRIMARY KEY(column_1, column_2,...);

使用 ALTER TABLE 命令创建Primary key

我们可以使用ALTER TABLE命令的帮助在 PostgreSQL 中生成一个Primary key。

由于很少为现有表指定Primary key,为了添加Primary key约束,我们可以使用 ALTER TABLE 命令。

使用 alter table 语句创建Primary key的语法

下图用于在 PostgreSQL 中使用ALTER TABLE 命令创建Primary key:

ALTER TABLE table_name   
ADD PRIMARY KEY(column_list);

或者

ALTER TABLE table_name  
ADD CONSTRAINT [ constraint_name ]  
PRIMARY KEY (index_col1, index_col2, ... index_col_n)

在上述语法中,我们使用了以下参数,我们在下表中讨论了这些参数:

参数名称 描述
Table_name 它是我们将要修改的表的名称。
Column_list 这些是我们在表中创建的列。
constraint_name 它用于定义Primary key的名称。
index_col1, index_col2, ... index_col_n 这些是用于构建Primary key的列。

使用 ALTER TABLE 命令的 PostgreSQL Primary key示例

要了解PostgreSQL Primary key如何使用 ALTER TABLE 命令,我们将看到以下示例。

在下面的例子中,我们创建一个名为新表的客户\,它不包含Primary key列表中说明。

CREATE TABLE Customers (    
Customer_ID int NOT NULL,     
Customer_Name varchar(45),     
Customer_Age int,     
Customer_Address varchar(25)    
 );

输出

执行上述命令后,我们会得到如下消息窗口,显示Customers\表已经成功创建到Organization\表中。

PostgreSQL Primary key

如果我们想向Customers\表添加Primary key约束,我们可以使用下面的 ALTER TABLE 命令:

ALTER TABLE Customers  
ADD PRIMARY KEY (Customer_ID);

输出

执行上述命令后,我们将看到以下消息窗口,显示客户表已成功更改为类似的数据库。

PostgreSQL Primary key

在使用 CREATE TABLE 和 ALTER TABLE 命令了解PostgreSQL Primary key的工作后,我们将尝试向当前表添加一个自动递增的Primary key。

如何向当前表添加自动递增的Primary key

让我们看一个向当前表添加自动递增Primary key的示例。

假设我们使用 CREATE table 命令的帮助创建了一个表作为卖方\,并且该特定表不包含任何Primary key。

CREATE TABLE Seller(  
Name VARCHAR(255));

输出

执行完上面的命令后,我们会检索到一个消息窗口,显示Seller\表已经成功创建到Organization数据库中。

PostgreSQL Primary key

成功创建Seller\表后,我们将在INSERT命令的帮助下向其中输入一些值。

INSERT INTO Seller (NAME)  
VALUES  
    ('Apple iPhone'),  
    ('Google),  
    ('Samsung');

输出

执行上述命令后,我们会得到如下消息窗口,显示三个值已成功插入到Seller\表中。

PostgreSQL Primary key

创建并插入Seller\表的值后,我们将使用SELECT命令从Seller\表中检索数据:

SELECT *FROM Seller;

输出

成功执行上述命令后,我们将得到以下结果: PostgreSQL 返回存在于Seller\表中的数据:

PostgreSQL Primary key

如果我们想在卖家\表中添加一个新列作为Seller_id,它也是一个Primary key列

我们使用以下命令,其中Seller_id列自动递增 1,如以下示例所示:

ALTER TABLE Seller  
ADD COLUMN Seller_id SERIAL PRIMARY KEY;

输出

执行上述命令后,我们会得到如下消息窗口,显示Seller\表已经修改成功。

PostgreSQL Primary key

更改Seller\表后,我们将再次使用 select 命令来验证特定表的修改。

SELECT Seller_id, Name  
FROM Seller;

输出

执行上述命令后,我们将获得以下输出,其中显示对卖家\表的修改成功。

PostgreSQL Primary key

如何删除 PostgreSQL Primary key

在 PostgreSQL 中,我们可以借助ALTER TABLE命令删除Primary key。

使用 alter table 命令删除Primary key的语法

下图用于在 PostgreSQL 中使用 ALTER TABLE 命令删除Primary key:

ALTER TABLE table_name    
DROP PRIMARY KEY;

或者

ALTER TABLE table_name   
DROP CONSTRAINT primary_key_constraint;

在上述语法中,我们使用了以下参数,我们在下表中讨论了这些参数:

范围 描述
table_name 表名参数用于指定表名,需要修改。
constraint_name 约束名称参数用于定义我们要删除的Primary key的名称。

使用 ALTER TABLE 命令删除 PostgreSQL Primary key的示例

让我们看一个从定义的表中删除Primary key的示例示例。

为此,我们在ALTER TABLE命令的帮助下使用申请人\表删除Primary key,如下面的语句所示:

ALTER TABLE Applicant  
DROP CONSTRAINT Applicant_pkey;

输出

成功实施上述命令后,我们会得到下面的消息窗口中显示Primary key已被删除申请\表。

PostgreSQL Primary key

概述

PostgreSQL Primary key部分,我们学习了以下主题:

  • 我们已经使用CREATE TABLE命令为特定表创建Primary key
  • 我们已经理解了使用CREATE TABLE改变 PostgreSQL Primary key的概念
  • 我们向现有表添加了一个自动递增的Primary key
  • 我们已经使用ALTER TABLE命令从特定表中删除Primary key