主键(Primary Key)是数据库表中用于唯一标识每一行记录的字段。主键具有以下特点:
主键在数据库中起到了索引的作用,可以提高查询效率。通常,数据库表的每一行记录都应该有一个主键字段。常见的主键类型包括自增长整数(如自增长的ID字段)、GUID(全局唯一标识符)等。
主键约束指示一列或一组列可用作表中行的唯一标识符。这要求值既是唯一的,又不是 null。因此,以下两个表定义接受相同的数据:
PostgreSQL中的主键是用于唯一标识表中记录的一列或一组列。主键具有以下特点:
CREATE TABLE products (
product_no integer UNIQUE NOT NULL,
name text,
price numeric
);
CREATE TABLE products (
product_no integer PRIMARY KEY,
name text,
price numeric
);
主键可以跨越多个列;语法类似于 Unique Constraints:
CREATE TABLE example (
a integer,
b integer,
c integer,
PRIMARY KEY (a, c)
);
添加主键将自动在主键中列出的列或列组上创建唯一的 B 树索引,并强制标记这些列NOT NULL。
一个表最多可以有一个主键。(可以有任意数量的唯一和非空约束,它们在功能上几乎相同,但只能将一个约束标识为主键。关系数据库理论规定每个表都必须有一个主键。PostgreSQL 不强制执行此规则,但通常最好遵循它。
主键对于文档和客户端应用程序都很有用。例如,允许修改行值的 GUI 应用程序可能需要知道表的主键才能唯一地标识行。如果已声明主键,数据库系统还可以通过多种方式使用主键;例如,主键为引用其表的外键定义默认目标列。
除了在创建表时定义主键,还可以使用以下语法在已有的表中添加主键:
ALTER TABLE table_name
ADD CONSTRAINT constraint_name PRIMARY KEY (column1, column2, ...);
在上述语法中,constraint_name是主键约束的名称,column1, column2, …是主键列的名称。
使用主键可以提高数据的检索效率,并确保数据的完整性和唯一性。