PostgreSQL vs MySQL 常用命令对比
一、连接数据库
| 操作 | PostgreSQL | MySQL |
|---|---|---|
| 连接 | psql -U user -d db |
mysql -u user -p db |
| 切换数据库 | \c dbname |
USE dbname; |
区别:
- PostgreSQL 使用
\c - MySQL 使用
USE
二、查看数据库
| 操作 | PostgreSQL | MySQL |
|---|---|---|
| 查看数据库 | \l 或查询系统表 |
SHOW DATABASES; |
区别:
- PostgreSQL 支持系统表查询(更灵活)
- MySQL 使用
SHOW
三、查看表
| 操作 | PostgreSQL | MySQL |
|---|---|---|
| 查看表 | \dt |
SHOW TABLES; |
| 表结构 | \d 表名 |
DESC 表名; |
区别:
\d是 PostgreSQL 客户端命令- MySQL 使用 SQL 语句
四、创建表
sql
-- PostgreSQL
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name TEXT
);
-- MySQL
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255)
);
区别:
- PostgreSQL 使用
SERIAL - MySQL 使用
AUTO_INCREMENT
五、插入数据
sql
INSERT INTO users (name) VALUES ('Alice');
获取自增 ID:
sql
-- PostgreSQL
INSERT INTO users (name) VALUES ('Alice') RETURNING id;
-- MySQL
INSERT INTO users (name) VALUES ('Alice');
SELECT LAST_INSERT_ID();
六、分页查询
sql
-- PostgreSQL
SELECT * FROM users LIMIT 10 OFFSET 20;
-- MySQL
SELECT * FROM users LIMIT 20, 10;
区别:
- PostgreSQL:
LIMIT + OFFSET - MySQL:
LIMIT offset, count
七、字符串拼接
sql
-- PostgreSQL
SELECT 'Hello' || ' World';
-- MySQL
SELECT CONCAT('Hello', ' World');
八、布尔值
sql
-- PostgreSQL
SELECT * FROM users WHERE active = true;
-- MySQL
SELECT * FROM users WHERE active = 1;
区别:
- PostgreSQL 有原生 boolean 类型
- MySQL 通常用 0/1
九、更新/删除
sql
UPDATE users SET name = 'Bob' WHERE id = 1;
DELETE FROM users WHERE id = 1;
PostgreSQL 支持返回结果:
sql
UPDATE users SET name = 'Bob' RETURNING *;
十、事务
sql
BEGIN;
COMMIT;
ROLLBACK;
区别:
- MySQL 默认开启自动提交
- PostgreSQL 默认事务更严格
十一、当前信息
| 操作 | PostgreSQL | MySQL |
|---|---|---|
| 当前数据库 | SELECT current_database(); |
SELECT DATABASE(); |
| 当前用户 | SELECT current_user; |
SELECT USER(); |
十二、索引
sql
CREATE INDEX idx_name ON users(name);
区别:
- PostgreSQL 支持更多高级索引类型(GIN、GiST 等)
- MySQL 常用 B-Tree