创建第一个数据库与表:MySQL / PostgreSQL 对照练习
用一组最小 SQL 在 MySQL 和 PostgreSQL 中创建数据库、表并插入查询数据,建立最早期的操作手感。
#type / howto
#status / growing
#tech / dev / backend
#resource / mysql
#resource / postgresql
[!info] related notes
- 前置笔记: SQL, 主键、外键与约束
- 相关 MOC: 数据库 MOC
- 相关资源: MySQL, PostgreSQL
创建第一个数据库与表:MySQL / PostgreSQL 对照练习
目标
在 MySQL 和 PostgreSQL 中各自完成一次最小闭环:
- 创建数据库
- 创建表
- 插入数据
- 查询数据
前置条件
- 已准备好本地数据库实例
- 已能进入 MySQL / PostgreSQL 命令行
步骤
MySQL
CREATE DATABASE tf_playground;
USE tf_playground;
CREATE TABLE users (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE
);
INSERT INTO users (name, email)
VALUES ('Alice', 'alice@example.com');
SELECT id, name, email
FROM users;
PostgreSQL
CREATE DATABASE tf_playground;
连接到新数据库后:
CREATE TABLE users (
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE
);
INSERT INTO users (name, email)
VALUES ('Alice', 'alice@example.com');
SELECT id, name, email
FROM users;
验证
- 两边都成功创建了
users表 - 都能查到一条
Alice - 试着重复插入同样的邮箱,应看到唯一约束报错
常见问题
- MySQL 的
AUTO_INCREMENT与 PostgreSQL 的IDENTITY写法不同 - PostgreSQL 创建数据库后,通常要重新连接到新数据库再建表
- 如果字符集、时区或默认 schema 和预期不同,先不要急着加复杂配置,先把最小闭环跑通