Skip to content

数据库安装与连接:PostgreSQL、MySQL 与客户端 ​

你要学会什么 ​

第一次学习 SQL,先把数据库跑起来。安装 PostgreSQL 或 MySQL,连接到服务器,创建数据库和表,插入测试数据。已有数据库经验的读者可以快速确认环境,再进入后续查询语法。

本文使用 PostgreSQL 16 作为主要环境,MySQL 8.0 作为对照。两者的基本查询语法高度相似,差异会在具体章节中标注。

选择数据库:PostgreSQL vs MySQL ​

两个都是流行的开源关系数据库:

特性PostgreSQLMySQL
标准符合性更严格遵循 SQL 标准部分扩展语法
数据类型更丰富(JSONB、数组、UUID)传统类型为主
窗口函数完整支持8.0+ 支持
事务隔离默认 Read Committed默认 Repeatable Read
适用场景复杂查询、数据分析Web 应用、读多写少

本课程选择 PostgreSQL 作为主要环境,因为它对 SQL 标准的支持更完整,但所有基础概念在 MySQL 中同样适用。

安装 PostgreSQL ​

macOS ​

使用 Homebrew 安装:

bash
brew install postgresql@16
brew services start postgresql@16

验证安装:

bash
psql --version

预期输出:

text
psql (PostgreSQL) 16.x

Ubuntu/Debian ​

bash
sudo apt update
sudo apt install postgresql-16 postgresql-client-16
sudo systemctl start postgresql
sudo systemctl enable postgresql

Windows ​

从 PostgreSQL 官网 下载安装包,运行安装向导。默认端口 5432,记住设置的密码。

连接 PostgreSQL ​

安装后,PostgreSQL 会创建一个名为 postgres 的超级用户。

首次连接 ​

macOS/Linux:

bash
psql -U postgres

如果提示权限错误,使用:

bash
sudo -u postgres psql

Windows(在 SQL Shell 中):

text
Server [localhost]:
Database [postgres]:
Port [5432]:
Username [postgres]: postgres
Password: [输入安装时设置的密码]

成功连接后,看到提示符:

text
postgres=#

创建自己的用户和数据库 ​

sql
-- 创建新用户
CREATE USER learner WITH PASSWORD 'password123';

-- 创建数据库
CREATE DATABASE learning_sql OWNER learner;

-- 退出
\q

重新连接到新数据库:

bash
psql -U learner -d learning_sql

PostgreSQL 常用命令 ​

这些是 psql 客户端的元命令(以 \ 开头),不是 SQL 语句:

命令作用
\l列出所有数据库
\c database_name连接到指定数据库
\dt列出当前数据库的所有表
\d table_name查看表结构
\q退出
\?查看所有元命令帮助
\h SQL命令查看 SQL 命令帮助

创建第一个表 ​

sql
-- 创建用户表
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    age INT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

解释:

  • SERIAL:自动递增的整数,PostgreSQL 特有(MySQL 用 AUTO_INCREMENT)
  • PRIMARY KEY:主键,唯一标识每一行
  • VARCHAR(n):可变长度字符串,最大 n 个字符
  • NOT NULL:不允许为空
  • UNIQUE:不允许重复
  • TIMESTAMP:日期时间类型
  • DEFAULT:默认值

查看表结构:

sql
\d users

输出:

text
                                      Table "public.users"
   Column   |            Type             | Collation | Nullable |              Default
------------+-----------------------------+-----------+----------+-----------------------------------
 id         | integer                     |           | not null | nextval('users_id_seq'::regclass)
 name       | character varying(50)       |           | not null |
 email      | character varying(100)      |           | not null |
 age        | integer                     |           |          |
 created_at | timestamp without time zone |           |          | CURRENT_TIMESTAMP
Indexes:
    "users_pkey" PRIMARY KEY, btree (id)
    "users_email_key" UNIQUE CONSTRAINT, btree (email)

插入测试数据 ​

sql
INSERT INTO users (name, email, age) VALUES
    ('Alice', 'alice@example.com', 30),
    ('Bob', 'bob@example.com', 25),
    ('Charlie', 'charlie@example.com', 35),
    ('Diana', 'diana@example.com', 28),
    ('Eve', 'eve@example.com', NULL);

注意 Eve 的年龄是 NULL(未知),后续章节会学习如何处理 NULL。

验证插入:

sql
SELECT * FROM users;

输出:

text
 id |  name   |        email        | age |       created_at
----+---------+---------------------+-----+------------------------
  1 | Alice   | alice@example.com   |  30 | 2026-09-20 10:30:00
  2 | Bob     | bob@example.com     |  25 | 2026-09-20 10:30:00
  3 | Charlie | charlie@example.com |  35 | 2026-09-20 10:30:00
  4 | Diana   | diana@example.com   |  28 | 2026-09-20 10:30:00
  5 | Eve     | eve@example.com     |     | 2026-09-20 10:30:00

MySQL 对照 ​

安装 MySQL ​

macOS:

bash
brew install mysql@8.0
brew services start mysql@8.0
mysql_secure_installation  # 设置 root 密码

Ubuntu/Debian:

bash
sudo apt install mysql-server-8.0
sudo mysql_secure_installation

连接 MySQL ​

bash
mysql -u root -p

MySQL 与 PostgreSQL 的差异 ​

创建表时的主要差异:

sql
-- MySQL 版本
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,  -- MySQL 用 AUTO_INCREMENT
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    age INT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;  -- MySQL 需要指定存储引擎

元命令差异:

功能PostgreSQLMySQL
列出数据库\lSHOW DATABASES;
切换数据库\c dbnameUSE dbname;
列出表\dtSHOW TABLES;
查看表结构\d tablenameDESCRIBE tablename;

图形化客户端(可选) ​

命令行足够学习使用,但图形化工具更直观:

练习 ​

  1. 安装与连接:安装 PostgreSQL 或 MySQL,成功连接到数据库服务器。

  2. 创建数据库:创建一个名为 practice 的数据库,创建自己的用户并授予权限。

  3. 创建商品表:创建一个 products 表,包含以下列:

    • id(主键,自动递增)
    • name(商品名称,不允许为空)
    • price(价格,DECIMAL 类型)
    • stock(库存,整数)
    • category(类别,字符串)
  4. 插入数据:向 products 表插入至少 5 条商品记录,包含不同类别。

  5. 查看数据:使用 SELECT * FROM products; 查看所有商品。

完成练习后,打开本章答案页核对。

下一步 ​

环境确认完成。下一节学习 SELECT 语句:如何选择列、使用别名、计算表达式。

回到第一章概览 · 返回SQL 学习路线

用心记录每一步成长