---
name: azion-crie-e-gerencie-bancos-de-dados
description: >-
  Crie um banco de dados no SQL Database pelo Azion Console, pela API da Azion ou pela biblioteca azion, e depois liste, recupere e exclua esse banco.
---

# Crie e gerencie bancos de dados

Você cria um banco de dados no [SQL Database](/pt-br/documentacao/plataforma/sql-database/) pelo Azion Console, pela API da Azion ou pela biblioteca `azion`. As mesmas três interfaces listam os bancos de dados da sua conta, recuperam um e excluem um.

Um banco de dados novo carrega o nome que você definiu e nada mais. Para as tabelas, as linhas e o SQL que as lê, consulte [Crie tabelas e consulte dados](/pt-br/documentacao/guias/desenvolvimento-de-aplicacoes/dados/criar-tabelas-edge-sql/).

---

## Pré-requisitos

- SQL Database habilitado na sua conta. O produto está em Preview e não é habilitado por padrão, então solicite acesso pelo [time de suporte técnico](/pt-br/documentacao/suporte/).
- Um nome para o banco de dados, com no mínimo 6 e no máximo 50 caracteres, escrito com letras, números e o hífen. Dois bancos de dados de uma mesma conta não compartilham um nome.
- A permissão **Edit SQL Database**, que concede permissão para criar e editar bancos de dados e os seus dados pela API da Azion. **View SQL Database** concede permissão para visualizá-los. Consulte [Teams Permissions](/pt-br/documentacao/fundamentos/teams-permissions/).
- Uma conta com acesso ao Azion Console, para os três procedimentos no Console. Consulte [Como acessar o Azion Console](/pt-br/documentacao/guias/plataforma/conta-e-billing/como-acessar-o-azion-console/).
- Um [personal token](/pt-br/documentacao/guias/plataforma/conta-e-billing/personal-tokens/) para autorizar as quatro requisições à API.
- Node e o pacote `azion`, para os procedimentos com a biblioteca. A biblioteca lê o seu token de `AZION_TOKEN`, e `AZION_DEBUG` ativa o log das requisições. Consulte [Biblioteca SQL da Azion](/pt-br/documentacao/devtools/azion-lib/sql/).

---

## Crie um banco de dados usando Azion Console

Um banco de dados é criado na página **SQL Database**, e o formulário pede um nome e nada mais. Para criar o banco de dados:

1. **Abra a lista de bancos de dados**

   Acesse [Azion Console](https://console.azion.com/) > **SQL Database**.

2. **Inicie um novo banco de dados**

   Selecione o controle de criação **SQL Database**. A página **Create Database** abre.

3. **Nomeie o banco de dados**

   Em **General**, insira um **Name** de 6 a 50 caracteres, formado por letras, números e o hífen. Qualquer outro caractere é recusado com "Use only letters, numbers and hyphen (-)".

4. **Selecione Save**

O banco de dados aparece na lista **SQL Database**. O seu **Status** marca `creating` até o banco de dados estar pronto, o que leva cerca de 15 segundos.

---

## Crie um banco de dados usando a API

Envie uma requisição `POST` ao endpoint de bancos de dados. O corpo aceita `name` e `active`, e nenhum outro campo. Para criar o banco de dados:

1. **Envie a requisição de criação**

   ```bash
   curl --location --request POST 'https://api.azion.com/v4/workspace/sql/databases' \
   --header 'Accept: application/json' \
   --header 'Content-Type: application/json' \
   --header 'Authorization: Token [TOKEN VALUE]' \
   --data '{"name":"my-database"}'
   ```

2. **Leia a resposta**

   A API responde com HTTP `202`. O `state` do envelope é `pending` enquanto o `status` do próprio banco de dados é `creating`:

   ```json
   {
     "state": "pending",
     "data": {
       "id": 1234,
       "name": "my-database",
       "status": "creating",
       "active": true,
       "last_modified": "2026-01-01T12:00:00.000000Z",
       "last_editor": "user@example.com",
       "product_version": "1.0"
     }
   }
   ```

3. **Consulte até o banco de dados estar pronto**

   O provisionamento leva cerca de 15 segundos. Envie `GET /databases/{database_id}` até `status` marcar `created`.

O banco de dados é armazenado sob o identificador inteiro em `data.id`, e todas as outras operações recebem esse identificador no caminho. `last_modified`, `last_editor` e `product_version` são somente leitura.

> **nota**
>
> Um nome com menos de 6 caracteres ou mais de 50 retorna HTTP `400` com o erro `14000`, `Invalid Database Name Format`. Um nome com menos de 6 caracteres também retorna `10048`, `Min Length`. Um nome que a conta já tem retorna HTTP `400` com o erro `14001`, `Name Already In Use.`

---

## Crie um banco de dados usando a biblioteca azion

`azion/sql` executa as mesmas operações a partir de Node e TypeScript. Um único import plano carrega as funções de banco de dados e as funções de consulta:

```javascript
import { createDatabase, getDatabase, getDatabases, deleteDatabase, useQuery, useExecute, getTables } from 'azion/sql';
```

A biblioteca não é um passthrough das formas da API. Ela converte os campos do registro para camelCase, em `lastModified`, `lastEditor` e `productVersion`, e uma consulta que ela executa retorna `columns` e `rows` sem `rows_read`, `rows_written` ou `query_duration_ms`.

Para criar o banco de dados, passe o nome para `createDatabase`:

```javascript
import { createDatabase } from 'azion/sql';

const { data, error } = await createDatabase('my-database');
```

O banco de dados é criado com o nome que você passou, e ele aparece na lista **SQL Database** da sua conta. `data` carrega o registro armazenado, e `error` carrega uma `message` e a `operation` que falhou.

---

## Liste os seus bancos de dados

Uma listagem é limitada à conta com a qual a requisição se autentica, e ela traz todos os bancos de dados que essa conta criou.

### Azion Console

A página **SQL Database** do Azion Console lista todos os bancos de dados da sua conta, com as colunas **Name**, **Status**, **Last Editor** e **Last Modified**. Uma conta que não tem nenhum banco de dados mostra o estado vazio "No SQL Databases yet", com a linha "Create your first database to store relational data and run SQL queries."

### A API

Envie uma requisição `GET` ao endpoint de bancos de dados:

```bash
curl --location 'https://api.azion.com/v4/workspace/sql/databases' \
--header 'Accept: application/json' \
--header 'Authorization: Token [TOKEN VALUE]'
```

A resposta carrega um objeto de banco de dados por entrada sob `results`, com a página a que eles pertencem:

```json
{
  "count": 1,
  "total_pages": 1,
  "page": 1,
  "page_size": 10,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": 1234,
      "name": "my-database",
      "status": "created",
      "active": true,
      "last_modified": "2026-01-01T12:00:00.000000Z",
      "last_editor": "user@example.com",
      "product_version": "1.0"
    }
  ]
}
```

`count` é quantos bancos de dados correspondem à requisição, e `total_pages` é em quantas páginas eles se dividem no `page_size` atual. `next` e `previous` trazem as páginas adjacentes, e são `null` nas duas extremidades.

Quatro parâmetros de consulta moldam a resposta. `page` seleciona a página, e `page_size` define quantos bancos de dados ela traz: o padrão é 10 e o teto é 100, acima do qual o endpoint retorna HTTP `400` com o erro `10097`, `Invalid Page Size`. `search` corresponde parcialmente a um nome. `ordering` recebe um nome de campo, prefixado com `-` para ordem decrescente.

### A biblioteca azion

Passe os mesmos parâmetros para `getDatabases`:

```javascript
import { getDatabases } from 'azion/sql';

const { data, error } = await getDatabases({ page: 1, page_size: 10 });
```

`data` carrega os bancos de dados da sua conta. `page`, `page_size`, `search` e `ordering` restringem a listagem, como fazem no endpoint da API.

---

## Recupere um banco de dados

Uma recuperação retorna um banco de dados e o estado em que ele está. A API o encontra pelo identificador dele; a biblioteca `azion` o encontra pelo nome dele.

### Azion Console

Acesse [Azion Console](https://console.azion.com/) > **SQL Database**, então selecione o banco de dados na lista. A visão do banco de dados abre com três abas: **Tables**, **Editor** e **Settings**.

### A API

Envie uma requisição `GET` ao banco de dados, com o identificador dele no caminho:

```bash
curl --location 'https://api.azion.com/v4/workspace/sql/databases/<database-id>' \
--header 'Accept: application/json' \
--header 'Authorization: Token [TOKEN VALUE]'
```

A API responde com HTTP `200` e retorna o registro sob `data`. Este envelope não carrega a chave `state`, diferente da resposta de criação:

```json
{
  "data": {
    "id": 1234,
    "name": "my-database",
    "status": "created",
    "active": true,
    "last_modified": "2026-01-01T12:00:00.000000Z",
    "last_editor": "user@example.com",
    "product_version": "1.0"
  }
}
```

`status` marca `created` quando o banco de dados está pronto. Um identificador que a conta não tem retorna HTTP `404` com o erro `10004`, `Not Found`.

> **nota**
>
> `name` é somente leitura após a criação, e `active` é aceito apenas na criação. Nenhum dos dois campos pode ser editado depois: `PATCH` e `PUT` em um banco de dados retornam HTTP `405` com o erro `10007`, `Method Not Allowed`. Um nome diferente significa um novo banco de dados.

### A biblioteca azion

`getDatabase` recebe o nome do banco de dados, não o identificador dele:

```javascript
import { getDatabase } from 'azion/sql';

const { data, error } = await getDatabase('my-database');
```

A chamada retorna o registro com os campos em camelCase:

```json
{
  "data": {
    "id": 1234,
    "name": "my-database",
    "status": "created",
    "active": true,
    "lastModified": "2026-01-01T12:00:00.000000Z",
    "lastEditor": "user@example.com",
    "productVersion": "1.0"
  }
}
```

Um nome que a conta não tem retorna `{}`, sem `data` e sem `error`. Teste `data` antes de ler um campo dele.

---

## Exclua um banco de dados

Um banco de dados é excluído pela identidade que cada interface conhece: Azion Console pela linha dele, a API e a biblioteca `azion` pelo identificador dele.

> **Atenção**
>
> Uma exclusão não pode ser desfeita. Azion remove o banco de dados e os dados dele, e você não consegue mais escrever nele nem ler dele. As informações dele não podem ser recuperadas depois.

### Azion Console

Acesse [Azion Console](https://console.azion.com/) > **SQL Database**, então selecione **Delete** na linha do banco de dados. A ação fica desabilitada enquanto o status é `creating` ou `deleting`.

A linha desaparece da lista **SQL Database**.

### A API

Envie uma requisição `DELETE` ao banco de dados, com o identificador dele no caminho:

```bash
curl --location --request DELETE 'https://api.azion.com/v4/workspace/sql/databases/<database-id>' \
--header 'Accept: application/json' \
--header 'Authorization: Token [TOKEN VALUE]'
```

A API responde com HTTP `202` e informa que aceitou a requisição, sem devolver nenhum registro:

```json
{"state": "pending"}
```

A API aceita a exclusão mesmo enquanto o status ainda é `creating`. Em segundos, o banco de dados retorna HTTP `404` com o erro `10004`, `Not Found`.

### A biblioteca azion

`deleteDatabase` recebe o identificador do banco de dados, não o nome dele:

```javascript
import { deleteDatabase } from 'azion/sql';

const { data, error } = await deleteDatabase(1234);
```

O banco de dados é removido da sua conta, e `data` carrega o `state` da requisição, como faz o envelope de exclusão da API.

---

## Próximos passos

- [Crie tabelas e consulte dados](/pt-br/documentacao/guias/desenvolvimento-de-aplicacoes/dados/criar-tabelas-edge-sql.md): Defina as tabelas do banco de dados que você criou, insira linhas e leia-as de volta com SQL.
- [Bancos de dados e consultas](/pt-br/documentacao/plataforma/sql-database/bancos-de-dados-e-consultas.md): Todos os campos, operações, envelopes e códigos de erro dos endpoints do SQL Database.
- [Consulte um banco de dados de uma function](/pt-br/documentacao/guias/desenvolvimento-de-aplicacoes/dados/listando-dados-edge-functions-edge-sql.md): Acesse o banco de dados de uma function e retorne as linhas dele para uma requisição.
- [Limites do SQL Database](/pt-br/documentacao/plataforma/sql-database/limites.md): Os limites de nome, de coluna e de tamanho de página, e o uso que cada plano inclui.
