pgsql怎么唯一和非空
时间: 2024-07-13 17:00:53 浏览: 60
pgsql12和pgsql9.6(包含对应版本的pggis)
在PostgreSQL(pgsql)中,为了保证表中的列具有唯一的值并且不允许为空,你可以使用两种约束:唯一约束(UNIQUE)和非空约束(NOT NULL)。这两种约束通常应用于定义主键或是在创建表时对特定字段的要求。
1. **唯一约束(UNIQUE)**:
- 使用 `UNIQUE` 关键字声明列:例如,如果你想确保用户邮箱地址在整个表中是唯一的,可以这样设置:
```sql
CREATE TABLE users (
id SERIAL PRIMARY KEY,
email VARCHAR(255) UNIQUE NOT NULL
);
```
- 如果你已经存在一些数据,想添加唯一约束但不希望违反现有记录,可以在已有列上使用 `ALTER TABLE` 命令添加约束:
```sql
ALTER TABLE users ADD CONSTRAINT unique_email UNIQUE (email);
```
2. **非空约束(NOT NULL)**:
- 在列定义时直接指定为 `NOT NULL`,如上面的 `email` 列示例。
- 如果已经存在的列希望修改成非空,同样用 `ALTER TABLE` 增加约束:
```sql
ALTER TABLE users ALTER COLUMN email SET NOT NULL;
```
**相关问题--:**
1. PostgreSQL如何避免数据冗余地设置唯一性?
2. 如何在已有的表结构中添加非空约束?
3. 如果试图插入一个NULL值到设置了NOT NULL约束的列会发生什么?
阅读全文