CockroachDB 数据库 CREATE TABLE 语法实战 列类型与约束配置示例

CockroachDB 数据库阿木 发布于 2025-07-03 14 次阅读


CockroachDB 数据库:CREATE TABLE 语法实战(列类型与约束配置示例)

CockroachDB 是一个开源的、分布式的关系型数据库,它旨在提供与 PostgreSQL 兼容的 SQL 语法和工具,同时具备分布式系统的特性。在 CockroachDB 中,创建表是数据库设计的基础,而 `CREATE TABLE` 语句则是实现这一目标的核心。本文将围绕 `CREATE TABLE` 语法,详细介绍如何在 CockroachDB 中定义列类型、设置约束以及配置其他相关属性。

CockroachDB 简介

在开始之前,让我们简要回顾一下 CockroachDB 的特点:

- 分布式数据库:CockroachDB 设计为分布式系统,可以在多个节点上运行,提供高可用性和容错性。

- SQL 兼容性:CockroachDB 使用标准的 SQL 语法,使得开发者可以轻松迁移现有的 PostgreSQL 应用。

- ACID 事务:CockroachDB 保证所有操作都是 ACID(原子性、一致性、隔离性、持久性)的,确保数据的一致性。

`CREATE TABLE` 语法基础

`CREATE TABLE` 语句用于在 CockroachDB 中创建新表。以下是一个基本的 `CREATE TABLE` 语句示例:

sql

CREATE TABLE my_table (


id INT PRIMARY KEY,


name STRING,


age INT


);


在这个例子中,我们创建了一个名为 `my_table` 的表,包含三个列:`id`、`name` 和 `age`。`id` 列被指定为主键。

列类型

CockroachDB 支持多种数据类型,包括:

- 数值类型:INT、BIGINT、FLOAT、DECIMAL 等。

- 字符串类型:STRING、VARCHAR、CHAR 等。

- 日期和时间类型:TIMESTAMP、DATE、TIME 等。

- 布尔类型:BOOLEAN。

- 二进制类型:BLOB、BYTEA。

- JSON 类型:JSON、JSONB。

以下是一些列类型和约束配置的示例:

sql

CREATE TABLE users (


user_id INT PRIMARY KEY,


username STRING NOT NULL,


email STRING NOT NULL UNIQUE,


created_at TIMESTAMP WITH TIME ZONE DEFAULT now()


);


在这个例子中,我们创建了一个名为 `users` 的表,包含以下列:

- `user_id`:整数类型,作为主键。

- `username`:字符串类型,不能为空。

- `email`:字符串类型,不能为空,且具有唯一性约束。

- `created_at`:时间戳类型,默认值为当前时间。

约束配置

除了列类型,我们还可以在 `CREATE TABLE` 语句中设置各种约束,以确保数据的完整性和一致性。以下是一些常见的约束类型:

- 主键约束:确保每行都有一个唯一的标识符。

- 外键约束:确保表之间的关系保持一致。

- 唯一约束:确保列中的值是唯一的。

- 非空约束:确保列中的值不能为空。

以下是一个包含多种约束的示例:

sql

CREATE TABLE orders (


order_id INT PRIMARY KEY,


user_id INT NOT NULL,


order_date TIMESTAMP WITH TIME ZONE NOT NULL,


status STRING NOT NULL,


FOREIGN KEY (user_id) REFERENCES users(user_id)


);


在这个例子中,我们创建了一个名为 `orders` 的表,包含以下列和约束:

- `order_id`:整数类型,作为主键。

- `user_id`:整数类型,不能为空,并引用 `users` 表的 `user_id` 列。

- `order_date`:时间戳类型,不能为空。

- `status`:字符串类型,不能为空。

其他配置

除了列类型和约束,我们还可以在 `CREATE TABLE` 语句中配置其他属性,例如:

- 分区键:将数据分散到不同的分区,以提高查询性能。

- 索引:创建索引以加快查询速度。

- 表注释:为表添加描述性注释。

以下是一个包含分区键和表注释的示例:

sql

CREATE TABLE sales (


region STRING,


year INT,


month INT,


amount DECIMAL,


PRIMARY KEY (region, year, month),


INDEX (year, month)


) PARTITION BY RANGE (year);


在这个例子中,我们创建了一个名为 `sales` 的表,包含以下配置:

- 分区键:`region`、`year` 和 `month`。

- 索引:`year` 和 `month`。

- 表注释:没有提供。

总结

在 CockroachDB 中,`CREATE TABLE` 语句是创建表的基础。通过合理配置列类型、约束和其他属性,我们可以设计出满足业务需求的数据库结构。本文介绍了 `CREATE TABLE` 语句的基本语法,以及如何设置列类型、约束和其他配置。通过这些知识,开发者可以更好地利用 CockroachDB 的强大功能,构建高性能、高可用的分布式数据库应用。