# Database

[Snowflake Documentation](https://docs.snowflake.com/en/sql-reference/sql/create-database)

Represents a database in Snowflake.

## Examples

### Python

```python
database = Database(
    name="some_database",
    transient=True,
    owner="SYSADMIN",
    data_retention_time_in_days=7,
    max_data_extension_time_in_days=28,
    default_ddl_collation="utf8",
    tags={"project": "research", "priority": "high"},
    comment="This is a database."
)
```

A database can contain schemas. In Python, you can add a schema to a database in several ways: By database name:

```python
sch = Schema(
    name = "some_schema",
    database = "my_test_db",
)
```

By database object:

```python
db = Database(name = "my_test_db")
sch = Schema(
    name = "some_schema",
    database = db,
)
```

Or using the `add` method:

```python
db = Database(name = "my_test_db")
sch = Schema(name = "some_schema")
db.add(sch)
```

### YAML

```yaml
databases:
  - name: some_database
    transient: true
    owner: SYSADMIN
    data_retention_time_in_days: 7
    max_data_extension_time_in_days: 28
    default_ddl_collation: utf8
    tags:
      project: research
      priority: high
    comment: This is a database.
```

In yaml, you can add schemas to a database using the `schemas` field:

```yaml
databases:
  - name: some_database
    schemas:
      - name: another_schema
```

Or by name:

```yaml
databases:
  - name: some_database
schemas:
    - name: another_schema
      database: some_database
```

## Fields

* `name` (string, required) - The name of the database.
* `transient` (bool) - Specifies if the database is transient. Defaults to False.
* `owner` (string or [Role](/titan-core/resources/role.md)) - The owner role of the database. Defaults to "SYSADMIN".
* `data_retention_time_in_days` (int) - The number of days to retain data. Defaults to 1.
* `max_data_extension_time_in_days` (int) - The maximum number of days to extend data retention. Defaults to 14.
* `default_ddl_collation` (string) - The default collation for DDL statements.
* `tags` (dict) - A dictionary of tags associated with the database.
* `comment` (string) - A comment describing the database.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://titan-core.gitbook.io/titan-core/resources/database.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
