---
url: /duckdb/play-duckdb.md
description: 五分钟玩转超人气OLAP数据库DuckDB,快速上手
---

# 五分钟玩转超人气OLAP数据库DuckDB

本文将为同学们介绍如何用数据库管理工具DBeaver玩转DuckDB。如果你对DBeaver还不了解，可以查看：

[《一款免费开源的必备数据库管理工具—— DBeaver》](/tools/dbeaver)

## 开始上手

1. 启动DBeaver

![](/img/19b82635-b9b5-4cc4-9e3a-a0b4106a4b6e.png)

2. 新建数据库连接

![](/img/2d431afd-56a1-40e4-ad5a-d0fd5a90e5c4.png)

![](/img/a1f1499f-8ddf-4747-a519-05f65a8759b9.png)

> 告诉大家一个小诀窍，如果同学们遇到特定场景不清楚如何做数据库选型的时候，不妨看看左侧的分类，每个分类下都罗列出了相关的数据库，我们可以挑选一些做详细调研。

3. 搜索DuckDB，选择并下一步

![](/img/cf3af21b-a5dd-4f99-b19a-cded4c72309f.png)

4. 创建数据库文件

![](/img/ed2626b8-a543-4150-8a92-1a07ebf4c670.png)

![](/img/80857f7c-b987-48c0-8128-b9740d0d143e.png)

![](/img/28d67edd-e0e8-48eb-9b81-2bcda55d5d60.png)

5. 测试连接

![](/img/071acf9f-3f93-4c29-9c91-b8d15dcd3906.png)

当弹出已连接，确认，点击完成，就已经可以使用DuckDB了。

6. 了解DuckDB文件

![](/img/9aa3f8e1-e769-4128-ad2b-b5d0c0bfd750.png)

![](/img/a2e51d82-8a35-4001-9d37-d5167de8bc17.png)

我们就可以看到，我们创建的名为`duckdb`的数据库本质上就是一个文件。

7. 新建SQL编辑器

![](/img/d4b25eb2-7435-4ec4-ade5-2a9fa696707a.png)
右击——SQL编辑器——新建SQL编辑器

![](/img/cd0b1b6a-3a92-425c-b04c-b90c1c4bc3c3.png)

编辑器创建好以后，请确保数据库选择也是正确的（上图红框内）

8. 创建第一张表`weather`

```sql
CREATE TABLE weather (
    city    VARCHAR,
    temp_lo INTEGER,
    temp_hi INTEGER,
    prcp    REAL,
    date    DATE
);
```

![](/img/fb5ff669-230a-44a8-9c3e-2b0bcf138613.png)

刷新后，左侧在`main —— 表`下已经出现`weather`表

![](/img/7b38b88f-cc85-4a77-8feb-b2ee2e5e46a5.png)

9. 插入第一条数据

```sql
INSERT INTO weather
VALUES ('San Francisco', 46, 50, 0.25, '1994-11-27');
```

![](/img/8df670c9-3f35-4bea-90a7-b7489a056b7b.png)

10. 查询数据

```sql
select * from main.weather ;
```

![](/img/166ddf32-8819-4ebc-9f53-0cd66d41a5c0.png)

11. 疯狂插入更多的数据

```sql
INSERT INTO main.weather
select * from main.weather;
```

当我把数据量变成近3亿后
![](/img/1b2f5b12-474d-4dbb-a1ab-3e31001a7c31.png)

数据库文件达到了近50M

![](/img/1078b89d-23ce-476f-a7e9-599a749efb26.png)

12. 尝试聚合查询

求和

```sql
select sum(temp_lo), sum(temp_hi) from main.weather limit 10;
```

![](/img/317b3c5b-545e-4ca6-8832-6ef38a764f74.png)

分组求和

```sql
select city, sum(temp_lo), sum(temp_hi) from main.weather
group by city;
```

![](/img/0ed2c444-6772-47d0-983f-0229988c79b3.png)

上亿数据量做聚合查询，都可以在秒级返回查询结果，这样的性能，Mysql表示压力很大。

至此，带领同学们初步体验了DucdDB变态般的非凡性能，我表示真的爱了。

## 进阶

本文只为同学们演示了DuckDB的基本用法，然而DuckDB更具神奇魅力的地方则在于可以直接使用外部的文件。后续将继续为同学们讲解用DuckDB如何查询外部文件数据。更多详细内容请关注：遇码，回复**duckdb**，获取官方文档。
