跳到主要内容

SQL 必知必会样例数据库

小林
后端开发工程师, 专注Go开发、微服务和云原生

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

img

前置条件

  • 已安装 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

启动数据库服务器

docker run -d -p 6603:3306 -e MYSQL_ROOT_PASSWORD=123456 linrepo/mysql-in-10-min

参数

  • -d 后台运行
  • -p 绑定数据库 3306 端口到宿主机 6603 端口
  • -e 通过环境变量设置 root 密码为 123456

客户端连接

下面的示例通过官方客户端连接, 因为已经暴露端口, 也可以使用 GUI 工具例如 DBeaver 连接

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 指定连接密码

查看内容

查看数据库

show databases;

返回结果

+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sql-in-10-min |
| sys |
+--------------------+
5 rows in set (0.00 sec)

查看所有表

show tables;

返回结果

+-------------------------+
| Tables_in_sql-in-10-min |
+-------------------------+
| Customers |
| OrderItems |
| Orders |
| Products |
| Vendors |
+-------------------------+
5 rows in set (0.00 sec)

OK, 今天的内容讲到这里, 觉得不错的点个赞 👍鼓励一下作者吧 😄

参考