达梦数据库创建表 字段限制
时间: 2025-07-19 19:32:13 浏览: 8
在达梦数据库中创建表时,可以通过定义完整性约束来对字段进行限制。这些约束可以确保数据的准确性和一致性,包括主键约束、唯一性约束、非空约束、检查约束等[^3]。
### 主键约束
主键约束用于唯一标识表中的每一行记录。一个表只能有一个主键,但主键可以由多个字段组成(复合主键)。主键字段不允许为空(NULL)。
```sql
CREATE TABLE user_data (
id INT PRIMARY KEY,
user_info VARCHAR(2000) CHECK (user_info IS JSON)
);
```
在这个例子中,`id` 字段被定义为主键,确保每条记录都有唯一的标识[^2]。
### 唯一性约束
唯一性约束确保某列或某几列的组合值在整个表中是唯一的。与主键不同,唯一性约束允许有空值(NULL),但通常只允许一个 NULL 值存在。
```sql
CREATE TABLE user_data (
id INT PRIMARY KEY,
email VARCHAR(255) UNIQUE,
user_info VARCHAR(2000) CHECK (user_info IS JSON)
);
```
这里 `email` 字段被定义为唯一性约束,以确保每个用户的电子邮件地址是唯一的。
### 非空约束
非空约束确保某列不能包含空值(NULL)。可以在定义字段时直接指定 `NOT NULL` 来实现。
```sql
CREATE TABLE user_data (
id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
user_info VARCHAR(2000) CHECK (user_info IS JSON)
);
```
在这个例子中,`name` 字段被定义为非空约束,表示该字段必须有值。
### 检查约束
检查约束用于限制某列的取值范围。可以通过 `CHECK` 关键字来定义条件表达式,从而保证输入的数据符合特定的规则。
```sql
CREATE TABLE user_data (
id INT PRIMARY KEY,
age INT CHECK (age >= 0 AND age <= 150),
user_info VARCHAR(2000) CHECK (user_info IS JSON)
);
```
在这个例子中,`age` 字段被定义为检查约束,确保年龄值在 0 到 150 之间。
### 复合约束
如果完整性约束涉及多个列,则需要使用表级约束。这种情况下,可以在 `CREATE TABLE` 语句的末尾定义约束,并为其命名。
```sql
CREATE TABLE order_details (
order_id INT,
product_id INT,
quantity INT,
PRIMARY KEY (order_id, product_id),
CHECK (quantity > 0)
);
```
在这个例子中,`order_id` 和 `product_id` 的组合作为主键,确保每个订单和产品的组合是唯一的。
### 约束命名
为了便于管理和维护,建议为约束显式命名。如果不指定名称,系统将自动为其生成名称。
```sql
CREATE TABLE user_data (
id INT CONSTRAINT pk_user_id PRIMARY KEY,
name VARCHAR(100) CONSTRAINT nn_user_name NOT NULL,
age INT CONSTRAINT chk_user_age CHECK (age >= 0 AND age <= 150),
user_info VARCHAR(2000) CONSTRAINT chk_user_json CHECK (user_info IS JSON)
);
```
通过这种方式,可以为每个约束指定明确的名称,方便后续的查询和管理。
### 总结
达梦数据库提供了丰富的字段约束机制,能够满足大多数数据完整性需求。根据实际业务场景,可以选择合适的约束类型,并合理地组织约束定义,以确保数据的一致性和可靠性。
---
阅读全文
相关推荐




















