【PostgreSQL建表语句详解】:掌握PostgreSQL数据建模
发布时间: 2024-07-24 07:35:04 阅读量: 54 订阅数: 44 


# 1. PostgreSQL建表语句基础
PostgreSQL中的建表语句用于创建新的数据库表,定义表的结构和属性。基本语法如下:
```sql
CREATE TABLE table_name (
column_name data_type [constraints],
...
);
```
* `table_name`:表的名称。
* `column_name`:表的列名称。
* `data_type`:列的数据类型,如`INT`、`VARCHAR`、`DATE`等。
* `constraints`:可选的列约束,如`NOT NULL`、`UNIQUE`、`PRIMARY KEY`等。
# 2. PostgreSQL数据类型与约束
### 2.1 数据类型概述
#### 2.1.1 基本数据类型
PostgreSQL提供了一系列基本数据类型,用于表示不同的数据值。这些数据类型包括:
- **布尔型 (boolean)**:表示真或假。
- **整数型 (integer)**:表示整数值,范围从 -2147483648 到 2147483647。
- **小整数型 (smallint)**:表示整数值,范围从 -32768 到 32767。
- **大整数型 (bigint)**:表示整数值,范围从 -9223372036854775808 到 9223372036854775807。
- **实数型 (real)**:表示浮点值,精度为 7 位有效数字。
- **双精度型 (double precision)**:表示浮点值,精度为 15 位有效数字。
- **字符串型 (text)**:表示可变长度的文本字符串。
- **二进制数据型 (bytea)**:表示可变长度的二进制数据。
#### 2.1.2 复杂数据类型
除了基本数据类型外,PostgreSQL还提供了复杂数据类型,用于表示更复杂的数据结构。这些数据类型包括:
- **数组类型 (array)**:表示一组相同数据类型的元素。
- **复合类型 (composite)**:表示一组不同数据类型的元素。
- **枚举类型 (enum)**:表示一组预定义的值。
- **范围类型 (range)**:表示一个值范围。
- **JSON类型 (json)**:表示JSON数据。
### 2.2 约束定义
约束用于确保表中的数据满足特定条件。PostgreSQL支持多种类型的约束,包括:
#### 2.2.1 NOT NULL约束
NOT NULL约束指定列不能包含空值。
```sql
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL
);
```
在上面的示例中,`name`列被定义为NOT NULL,这意味着它不能包含空值。
#### 2.2.2 UNIQUE约束
UNIQUE约束指定列中的值必须唯一。
```sql
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
order_number TEXT UNIQUE
);
```
在上面的示例中,`order_number`列被定义为UNIQUE,这意味着表中不能有两个具有相同`order_number`值的记录。
#### 2.2.3 PRIMARY KEY约束
PRIMARY KEY约束指定列中的值唯一且非空。PRIMARY KEY约束通常用于标识表中的记录。
```sql
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL
);
```
在上面的示例中,`id`列被定义为PRIMARY KEY,这意味着它不能包含空值并且表中不能有两个具有相同`id`值的记录。
# 3. PostgreSQL表结构设计
### 3.1 表结构设计原则
#### 3.1.1 范式化设计
范式化设计是一种数据建模技术,旨在减少数据冗余和提高数据一致性。范式化分为多个范式,每个范式都有特定的规则:
- **第一范式
0
0
相关推荐




