# 数据库里migration是啥？

# 为什么存在这个东西？

在测试中，我们会写CREATE TABLE IF NOT EXISTS，但是在实际的代码中，我们不这么写，而是用这个migration去创建所有的表。

一般数据库或者ORM都有一些命令帮我们做这个，实际就是类似这样：

```typescript
async function migrate(dbClient) {
   await dbClient.query(`
     CREATE TABLE IF NOT EXISTS users (
       id SERIAL PRIMARY KEY,
       email VARCHAR(100) UNIQUE NOT NULL,
     )
    `);
}
```
