【PostgreSQL】从零开始:(三十九)约束-主键
2023-12-31 05:21:43
主键
主键(Primary Key)是数据库表中用于唯一标识每一行记录的字段。主键具有以下特点:
- 唯一性:每个主键值在表中是唯一的,不允许出现重复值。
- 非空性:主键字段的值不能为空,即主键字段不能为null。
- 不可更改性:一旦主键值被分配给某行记录,就不能再修改。
主键在数据库中起到了索引的作用,可以提高查询效率。通常,数据库表的每一行记录都应该有一个主键字段。常见的主键类型包括自增长整数(如自增长的ID字段)、GUID(全局唯一标识符)等。
主键约束指示一列或一组列可用作表中行的唯一标识符。这要求值既是唯一的,又不是 null。因此,以下两个表定义接受相同的数据:
PostgreSQL中的主键
PostgreSQL中的主键是用于唯一标识表中记录的一列或一组列。主键具有以下特点:
- 主键必须是唯一的,每个记录必须有一个唯一的主键值。
- 主键不能为NULL,每个记录必须有一个非空的主键值。
- 主键可以由一列或多列组成。
- 主键可以用来引用其他表中的记录(外键)。
- 主键值由数据库自动生成或由用户指定。
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, …是主键列的名称。
使用主键可以提高数据的检索效率,并确保数据的完整性和唯一性。
文章来源:https://blog.csdn.net/sinat_36528886/article/details/135232765
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!