> For the complete documentation index, see [llms.txt](https://mariadb.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mariadb.com/docs/server/reference/sql-statements/data-definition.md).

# Data Definition (DDL)

{% columns %}
{% column %}
{% content-ref url="/pages/TjLOT0EMCbDdZ82Swvvu" %}
[Atomic DDL](/docs/server/reference/sql-statements/data-definition/atomic-ddl.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Learn about crash-safe DDL operations in MariaDB. This feature ensures data definition statements are either fully committed or completely rolled back, preventing metadata inconsistency.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/w2XGqXHoFlWYE2bTzejg" %}
[CONSTRAINT](/docs/server/reference/sql-statements/data-definition/constraint.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Complete constraints reference: PRIMARY KEY, FOREIGN KEY, UNIQUE, and CHECK syntax in CREATE/ALTER TABLE, ON DELETE/UPDATE actions, TABLE\_CONSTRAINTS table.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/W4nres4WAm7goiCo8575" %}
[RENAME TABLE](/docs/server/reference/sql-statements/data-definition/rename-table.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Change the name of one or more tables atomically. This command moves tables within or between databases while preserving their data and structure.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/Ru6KbmmmTHmNHQWECg30" %}
[Renaming Databases](/docs/server/reference/sql-statements/data-definition/renaming-databases.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Learn the supported methods for renaming a database. Since RENAME DATABASE is not available, this guide outlines safe workarounds like dumping and reloading or moving tables.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/UwBG1CGSem2VHN4SDO6s" %}
[ALTER](/docs/server/reference/sql-statements/data-definition/alter.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Access the reference for ALTER statements. This section lists commands to modify existing database objects, including tables, databases, users, and servers.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/txaLhPgKCRth3MtjDcwU" %}
[CREATE](/docs/server/reference/sql-statements/data-definition/create.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Explore the CREATE statements used to define new database objects. This guide covers syntax for creating databases, tables, indexes, views, and stored routines.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/9OkmTkEKXfLyURan8xcp" %}
[DROP](/docs/server/reference/sql-statements/data-definition/drop.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Find statements to remove database objects. This section details the syntax for deleting databases, tables, users, and other entities when they are no longer needed.
{% endcolumn %}
{% endcolumns %}
