04-PostgreSQL 学习笔记

Step 1:创建学习数据库

1.1 用 pgAdmin 连接(推荐)

  1. 开始菜单打开 pgAdmin 4

  2. 左侧 Servers → PostgreSQL 18 ,输入安装时设的 postgres 密码

  3. 右键 Databases → Create → Database

  4. 名称填:nodejs_studySave


Step 2:在 PostgreSQL 里建表

把数据库想象成 Excel 工作簿,表(Table) 就是一张 Sheet:

概念 类比 Excel 例子
数据库 Database 整个 .xlsx 文件 nodejs_study
表 Table 一张 Sheet userstodos
行 Row 一行数据 张三这个用户
列 Column 一列表头 emailname
主键 PK 每行唯一编号 id = 1, 2, 3...
外键 FK 「这行属于谁」的引用 todos.user_id → users.id

你现在的 Todo 项目数据在内存数组里,重启服务就没了。建表之后,数据会持久存在硬盘上。


Primary key(主键)

作用: 唯一标识每一行。

  • 每一行的主键值不能重复

  • 主键列不能为空

  • 一张表通常只有 1 个主键(可以是单列,也可以是多列组合)

例如表里

是否主键 说明
id ✅ 是 每行唯一编号,适合当主键
title ❌ 否 标题可能重复,不适合做主键
done ❌ 否 只有 true/false,会大量重复

所以常见做法是:只给 id 设 Primary key,用自增整数当「身份证号」。


Not NULL(非空 / 必填)

作用: 这一列必须有值,不能留空。

  • 开启 Not NULL = 插入数据时必填

  • 关闭 Not NULL = 可以为 NULL(空)

你的表

Not NULL 含义
id 必须有值(主键本身就不能空)
title 标题必填
done 必须填 true 或 false;你有默认值 false,所以即使不写也会自动填

Not NULL ≠ Primary key,是两回事:

约束 含义
Not NULL 不能为空
Primary key 不能为空 不能重复 用来唯一标识一行

数据类型有哪些?

PostgreSQL 里类型很多,日常最常用的有这些:

数字

类型 用途 例子
integer / int 整数 1, 100
bigint 大整数 很大的 ID
serial 自增整数(实际是 integer + 序列) 主键 id
numeric(p,s) 精确小数 金额 99.99
real / double precision 浮点数 科学计算

文本

类型 用途 例子
character varying(n) / varchar(n) 可变长度字符串,最多 n 个字符 title VARCHAR(200)
text 不限长度文本 长文章、备注
char(n) 固定长度字符串 较少用

布尔

类型 用途 例子
boolean 真/假 done: true / false

日期时间

类型 用途 例子
date 日期 2026-06-22
time 时间 14:30:00
timestamp 日期 + 时间 2026-06-22 14:30:00

其他常见

类型 用途
json / jsonb 存 JSON 数据
uuid 全局唯一 ID
bytea 二进制数据