The createTable Change Type creates a table.


You can typically use the createTable Change Type when you want to create a table in your changelog file and then deploy it to your database. It can include columns and another values listed in this documentation.

Running the createTable Change Type

To create a table for your database, follow these steps:

  1. Add the createTable Change Type to your changeset with the needed attributes, as shown in the examples.
  2. Deploy your changeset by running the update command:
  3. liquibase update

Now, you should see a new table.

Running the createTable Change Type with dynamic values

If you want to set and dynamically pass a specific attribute in your changelog, you can add ${your-attribute} to one or more of your changesets, and then run those changesets as shown in the following examples:

<changeSet id="1" author="liquibase">
    <createTable tableName="department">
        <column name="id" type="int">
            <constraints primaryKey="true"/>
        <column name="dept" type="varchar(${dep.size})">
            <constraints nullable="false"/>
        <column name="emp_id" type="int">
            <constraints nullable="false"/>
liquibase -Ddep.size=50 update
<changeSet id="2" author="liquibase">
    <createTable catalogName="department2"
            remarks="A String"
        <column name="address" type="varchar(255)"/>
liquibase -Dtablespace='tablespaceQA' update

Note: For more information, see Substituting Properties in Changelogs.

Available attributes

Name Description Required for Supports

Name of the catalog


If true, creates the table only if it does not already exist. Appends IF NOT EXISTS syntax to SQL query. Liquibase 4.24.0+

  asany, cockroachdb, db2, db2z, derby, edb, h2, hsqldb, informix, ingres, mariadb, mssql, mysql, oracle, postgresql, sqlite, sybase

A short descriptive comment


Name of the schema


Name of the table

all all
tablespace Name of the tablespace to use to create the table in all

Nested tags

Name Description Required for Supports Multiple allowed

Column definitions.

Note: YAML and JSON changelogs using the column tag must nest it within a columns tag.

all all yes

Database support

Database Notes Auto Rollback
DB2/LUW Supported Yes
DB2/z Supported Yes
Derby Supported Yes
Firebird Supported Yes
H2 Supported Yes
HyperSQL Supported Yes
INGRES Supported Yes
Informix Supported Yes
MariaDB Supported Yes
MySQL Supported Yes
Oracle Supported Yes
PostgreSQL Supported Yes
Snowflake Supported Yes
SQL Server Supported Yes
SQLite Supported Yes
Sybase Supported Yes
Sybase Anywhere Supported Yes