摘要: 在本教程中,你将学习如何设计数据库表以及如何使用 PostgreSQL 的 CREATE TABLE 语句创建新表。
设计表
PostgreSQL 数据库由一组相关的表组成。在 PostgreSQL 中创建表之前,你需要回答三个最重要的问题:
- 你打算在表中存储什么样的信息?
- 这些信息具有哪些属性?
- 这些属性中的每一个都包含什么类型的数据?
假设你想管理产品库存:
| 产品名称 | 品牌 | 数量 | 价格 |
|---|---|---|---|
| iPhone 14 | Apple | 50 | 999.99 |
| Galaxy S22 | Samsung | 40 | 899.99 |
| Galaxy Tab A8 | Samsung | 30 | 229.99 |
| Pixel Slate | 10 | 799.99 | |
| … | … | … | … |
要做到这一点,你可以回答以下三个问题:
1)、你打算存储什么样的信息?
我们将要存储产品库存清单。为此,我们将创建一个名为 inventories 的表格。
2)、该信息具有哪些属性
每条库存记录包含以下信息:
- product name
- brand
- quantity
- price
因此, inventories 表将有四列:
- name
- brand
- quantity
- price
3)、这些属性中的每一个都包含什么类型的数据?
每个表列存储特定类型的数据:
name列存储产品名称,例如iPhone、Galaxy等。它们都是字符串。- 品牌列存储着如
Apple和Samsung等品牌。这些品牌也都是字符串。 - 数量列存储产品数量,例如 10、21、30。这些数量都是整数。
price列存储产品价格,例如 899.99 和 299.99 。产品价格是十进制数。
以下是 inventories 表的摘要:
| Column Name | Data Type |
|---|---|
| name | string |
| brand | string |
| quantity | integer |
| price | decimal |
创建表语句
在 PostgreSQL 中,CREATE TABLE 语句允许你在数据库中创建一个新表。
以下是 CREATE TABLE 语句的基本语法:
CREATE TABLE table_name (
column_name1 data_type,
column_name2 data_type
...
);
在以下语法中:
CREATE TABLE 是指示 PostgreSQL 在数据库中创建新表的关键字。关键字可以是小写或大写。按照惯例,关键字使用大写是为了使其在语句中更加突出。
table_name 是一个标识符,用于指定表的名称。
按照惯例,在 PostgreSQL 中,表名使用蛇形命名法和复数名词:
Snake case 是一种命名约定,您用小写字母书写所有字母,并用下划线替换每个字母。例如 products ,brands,以及 product_categories。
在 CREATE TABLE table_names 子句之后,需在括号 () 内指定列的列表,各列之间用逗号分隔。
以下是定义列的基本语法:
column_name data_type
在这种语法中,你需要指定列名及其数据类型。按照惯例,列名也使用 Snake case 名法。
例如,以下 CREATE TABLE 语句会在 PostgreSQL 数据库中创建一个新表:
CREATE TABLE inventories (
name VARCHAR(255),
brand VARCHAR(50),
quantity INT,
price DECIMAL(19, 2)
);
在这个 inventories 表中:
name和brand列的数据类型为VARCHAR,即变长字符型。length说明符255和50指定了这些列可存储的最大长度。例如,如果尝试插入一个超过255个字符的名称,将会遇到错误。
quantity 列的类型为INT或整数。其范围是从 -2,147,483,648 到 +2,147,483,647 。如果输入的值超出此范围,将会出现错误。
price 列的数据类型为 DEC(19,2) 。它最多可以存储19位小数,其中小数点前最多17位,小数点后为2位。
以下表格展示了表设计中的列数据类型与 PostgreSQL 数据类型的映射关系:
| Column | Data Type | PostgreSQL data type |
|---|---|---|
| name | string | VARCHAR |
| brand | string | VARCHAR |
| quantity | integer | INTEGER |
| price | decimal | DEC(19, 2) |
总结
- 数据库由一系列表组成。
- 表存储记录列表。
- 表名使用复数名词并采用
Snake case命名法。 - 使用
PostgreSQL的CREATE TABLE语句在数据库中创建新表。




