SQL 必知必会样例数据库
如果你问我如何学习 SQL 语言, 我毫不犹豫会推荐你这本豆瓣评分高达 9.0 的书籍 SQL必知必会. 正如书中所说, 学习 SQL 的最好方法是自己动手实践, 但是搭建一个可供练习的数据库环境却没那么容易, 博主通过 Docker 构建了样例数据库, 只需两条命令即可启动练习环境, 支持 MySQL、PostgreSQL 和 SQLite3

前置条件
- 已安装 Docker 环境, Docker Desktop 官网
- Docker Hub 访问能力, 因为 Docker Hub 访问有点麻烦, 博主提供了阿里云的镜像仓库, 将仓库路径前缀的
linrepo改成registry.cn-hangzhou.aliyuncs.com/lepo即可
启动环境
数据库版本
- MySQL: 8.0.43
- PostgreSQL: 17.6
- SQLite: 3.49.2
启动数据库服务器
- MySQL
- PostgreSQL
- SQLite3
docker run -d -p 6603:3306 -e MYSQL_ROOT_PASSWORD=123456 linrepo/mysql-in-10-min
参数
-d后台运行-p绑定数据库3306端口到宿主机6603端口-e通过环境变量设置root密码为123456
docker run -d -p 2345:5432 -e POSTGRES_PASSWORD=123456 linrepo/postgres-in-10-min
参数
-d后台运行-p绑定数据库5432端口到宿主机2345端口-e通过环境变量设置postgres密码为123456
SQLite 没有服务器, 可以直接启动练习环境
客户端连接
下面的示例通过官方客户端连接, 因为已经暴露端口, 也可以使用 GUI 工具例如 DBeaver 连接
- MySQL
- PostgreSQL
- SQLite3
docker run -it --rm mysql:8.0.43 mysql -hhost.docker.internal -P6603 -Dsql-in-10-min -uroot -p123456
参数
-it交互式运行--rm停止容器后自动删除容器- 宿主机的 host 不是
localhost而是host.docker.internal -P指定数据库端口-D指定数据库库名-u指定连接账号-p指定连接密码
docker run -it --rm -e PGPASSWORD=123456 postgres:17.6 psql -hhost.docker.internal -p2345 -dsql-in-10-min -Upostgres
参数
-it交互式运行--rm停止容器后自动删除容器- 宿主机的 host 不是
localhost而是host.docker.internal -p指定数据库端口-d指定数据库库名-U指定连接账号- 通过
-e环境变量指定连接密码
docker run -it --rm linrepo/sqlite-in-10-min
参数
-it交互式运行--rm停止容器后自动删除容器