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
停止容器后自动删除容器