> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cockroachlabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SQL Statements

export const InternalLink = ({version, path = "", children, ...props}) => {
  let detectedVersion = version || "stable";
  if (typeof window !== 'undefined' && !version) {
    const match = window.location.pathname.match(/\/docs\/([^/]+)/);
    if (match) {
      detectedVersion = match[1];
    }
  }
  const normalizedPath = path.startsWith("/") ? path.slice(1) : path;
  return <a href={`/docs/${detectedVersion}/${normalizedPath}`} {...props}>
      {children}
    </a>;
};

CockroachDB supports the following SQL statements.

In the <InternalLink path="cockroach-sql#help">`cockroach` SQL shell</InternalLink>, use `\h [statement]` to get inline help about a statement.

## Data definition statements

| Statement | Usage |
| - | - |
| <InternalLink path="alter-database">`ALTER DATABASE`</InternalLink> | Apply a schema change to a database. |
| <InternalLink path="alter-default-privileges">`ALTER DEFAULT PRIVILEGES`</InternalLink> | Change the default <InternalLink path="security-reference/authorization#privileges">privileges</InternalLink> for objects created by specific roles/users in the current database. |
| <InternalLink path="alter-domain">`ALTER DOMAIN`</InternalLink> | Modify a user-defined <InternalLink path="domain">domain data type</InternalLink>. |
| <InternalLink path="alter-external-connection">`ALTER EXTERNAL CONNECTION`</InternalLink> | Update an external connection's URI. |
| <InternalLink path="alter-function">`ALTER FUNCTION`</InternalLink> | Modify a <InternalLink path="user-defined-functions">user-defined function</InternalLink>. |
| <InternalLink path="alter-index">`ALTER INDEX`</InternalLink> | Apply a schema change to an index. |
| <InternalLink path="alter-partition">`ALTER PARTITION`</InternalLink> | Configure the replication zone for a partition. |
| <InternalLink path="alter-procedure">`ALTER PROCEDURE`</InternalLink> | Modify a <InternalLink path="stored-procedures">stored procedure</InternalLink>. |
| <InternalLink path="alter-range">`ALTER RANGE`</InternalLink> | Configure the replication zone for a system range. |
| <InternalLink path="alter-schema">`ALTER SCHEMA`</InternalLink> | Alter a user-defined schema. |
| <InternalLink path="alter-sequence">`ALTER SEQUENCE`</InternalLink> | Apply a schema change to a sequence. |
| <InternalLink path="alter-table">`ALTER TABLE`</InternalLink> | Apply a schema change to a table. |
| <InternalLink path="alter-trigger">`ALTER TRIGGER`</InternalLink> | Modify a <InternalLink path="triggers">trigger</InternalLink>. |
| <InternalLink path="alter-type">`ALTER TYPE`</InternalLink> | Modify a user-defined, <InternalLink path="enum">enumerated data type</InternalLink>. |
| <InternalLink path="alter-user">`ALTER USER`</InternalLink> | Add, change, or remove a user's password and to change the login privileges for a role. |
| <InternalLink path="alter-role">`ALTER ROLE`</InternalLink> | Add, change, or remove a <InternalLink path="create-role">role's</InternalLink> password and to change the login privileges for a role. |
| <InternalLink path="alter-view">`ALTER VIEW`</InternalLink> | Apply a schema change to a view. |
| <InternalLink path="comment-on">`COMMENT ON`</InternalLink> | Associate a comment to a database, table, or column. |
| <InternalLink path="create-database">`CREATE DATABASE`</InternalLink> | Create a new database. |
| <InternalLink path="create-domain">`CREATE DOMAIN`</InternalLink> | Create a user-defined <InternalLink path="domain">domain data type</InternalLink>. |
| <InternalLink path="create-function">`CREATE FUNCTION`</InternalLink> | Create a <InternalLink path="user-defined-functions">user-defined function</InternalLink>. |
| <InternalLink path="create-index">`CREATE INDEX`</InternalLink> | Create an index for a table. |
| <InternalLink path="create-procedure">`CREATE PROCEDURE`</InternalLink> | Create a <InternalLink path="stored-procedures">stored procedure</InternalLink>. |
| <InternalLink path="create-schema">`CREATE SCHEMA`</InternalLink> | Create a user-defined schema. |
| <InternalLink path="create-sequence">`CREATE SEQUENCE`</InternalLink> | Create a new sequence. |
| <InternalLink path="create-table">`CREATE TABLE`</InternalLink> | Create a new table in a database. |
| <InternalLink path="create-table-as">`CREATE TABLE AS`</InternalLink> | Create a new table in a database using the results from a <InternalLink path="selection-queries">selection query</InternalLink>. |
| <InternalLink path="create-trigger">`CREATE TRIGGER`</InternalLink> | Create a new <InternalLink path="triggers">trigger</InternalLink> on a specified table. |
| <InternalLink path="create-type">`CREATE TYPE`</InternalLink> | Create a user-defined, <InternalLink path="enum">enumerated data type</InternalLink>. |
| <InternalLink path="create-view">`CREATE VIEW`</InternalLink> | Create a new <InternalLink path="views">view</InternalLink> in a database. |
| <InternalLink path="drop-database">`DROP DATABASE`</InternalLink> | Remove a database and all its objects. |
| <InternalLink path="drop-type#drop-a-domain">`DROP DOMAIN`</InternalLink> | Remove a user-defined <InternalLink path="domain">domain data type</InternalLink>. |
| <InternalLink path="drop-function">`DROP FUNCTION`</InternalLink> | Remove a <InternalLink path="user-defined-functions">user-defined function</InternalLink> from a database. |
| <InternalLink path="drop-index">`DROP INDEX`</InternalLink> | Remove an index for a table. |
| <InternalLink path="drop-owned-by">`DROP OWNED BY`</InternalLink> | Drop all objects owned by and any <InternalLink path="grant">grants</InternalLink> on objects not owned by a <InternalLink path="security-reference/authorization#roles">role</InternalLink>. |
| <InternalLink path="drop-procedure">`DROP PROCEDURE`</InternalLink> | Remove a <InternalLink path="stored-procedures">stored procedure</InternalLink>. |
| <InternalLink path="drop-schema">`DROP SCHEMA`</InternalLink> | Drop a user-defined schema. |
| <InternalLink path="drop-sequence">`DROP SEQUENCE`</InternalLink> | Remove a sequence. |
| <InternalLink path="drop-table">`DROP TABLE`</InternalLink> | Remove a table. |
| <InternalLink path="drop-trigger">`DROP TRIGGER`</InternalLink> | Remove a <InternalLink path="triggers">trigger</InternalLink>. |
| <InternalLink path="drop-type">`DROP TYPE`</InternalLink> | Remove a user-defined, <InternalLink path="enum">enumerated data type</InternalLink>. |
| <InternalLink path="drop-view">`DROP VIEW`</InternalLink> | Remove a view. |
| <InternalLink path="refresh">`REFRESH`</InternalLink> | Refresh the stored query results of a <InternalLink path="views#materialized-views">materialized view</InternalLink>. |
| <InternalLink path="show-columns">`SHOW COLUMNS`</InternalLink> | View details about columns in a table. |
| <InternalLink path="show-constraints">`SHOW CONSTRAINTS`</InternalLink> | List constraints on a table. |
| <InternalLink path="show-create">`SHOW CREATE`</InternalLink> | View the `CREATE` statement for a database, function, sequence, table, <InternalLink path="triggers">trigger</InternalLink>, or view. |
| <InternalLink path="show-databases">`SHOW DATABASES`</InternalLink> | List databases in the cluster. |
| <InternalLink path="show-default-session-variables-for-role">`SHOW DEFAULT SESSION VARIABLES FOR ROLE`</InternalLink> | List the values for updated <InternalLink path="set-vars">session variables</InternalLink> that are applied to a given <InternalLink path="security-reference/authorization#roles">user or role</InternalLink>. |
| <InternalLink path="show-enums">`SHOW ENUMS`</InternalLink> | List user-defined, <InternalLink path="enum">enumerated data types</InternalLink> in a database. |
| <InternalLink path="show-full-table-scans">`SHOW FULL TABLE SCANS`</InternalLink> | List recent queries that used a full table scan. |
| <InternalLink path="show-index">`SHOW INDEX`</InternalLink> | View index information for a table or database. |
| <InternalLink path="show-locality">`SHOW LOCALITY`</InternalLink> | View the locality of the current node. |
| <InternalLink path="show-partitions">`SHOW PARTITIONS`</InternalLink> | List partitions in a database. |
| <InternalLink path="show-regions">`SHOW REGIONS`</InternalLink> | List the <InternalLink path="multiregion-overview#cluster-regions">cluster regions</InternalLink> or <InternalLink path="multiregion-overview#database-regions">database regions</InternalLink> in a <InternalLink path="multiregion-overview">multi-region cluster</InternalLink>. |
| <InternalLink path="show-super-regions">`SHOW SUPER REGIONS`</InternalLink> | List the <InternalLink path="multiregion-overview#super-regions">super regions</InternalLink> associated with a database in a <InternalLink path="multiregion-overview">multi-region cluster</InternalLink>. |
| <InternalLink path="show-schemas">`SHOW SCHEMAS`</InternalLink> | List the schemas in a database. |
| <InternalLink path="show-sequences">`SHOW SEQUENCES`</InternalLink> | List the sequences in a database. |
| <InternalLink path="show-tables">`SHOW TABLES`</InternalLink> | List tables or views in a database or virtual schema. |
| <InternalLink path="show-triggers">`SHOW TRIGGERS`</InternalLink> | List the <InternalLink path="triggers">triggers</InternalLink> defined on a table. |
| <InternalLink path="show-types">`SHOW TYPES`</InternalLink> | List user-defined <InternalLink path="data-types">data types</InternalLink> in a database. |
| <InternalLink path="show-ranges">`SHOW RANGES`</InternalLink> | Show range information for all data in a table or index. |
| <InternalLink path="show-range-for-row">`SHOW RANGE FOR ROW`</InternalLink> | Show range information for a single row in a table or index. |
| <InternalLink path="show-zone-configurations">`SHOW ZONE CONFIGURATIONS`</InternalLink> | List details about existing <InternalLink path="configure-replication-zones">replication zones</InternalLink>. |

## Data manipulation statements

| Statement | Usage |
| - | - |
| <InternalLink path="create-table-as">`CREATE TABLE AS`</InternalLink> | Create a new table in a database using the results from a <InternalLink path="selection-queries">selection query</InternalLink>. |
| <InternalLink path="copy">`COPY FROM`</InternalLink> | Copy data from a third-party client to a CockroachDB cluster.<br />For compatibility with PostgreSQL drivers and ORMs, CockroachDB supports `COPY FROM` statements issued from third-party clients. To import data from files, use an <InternalLink path="import-into">`IMPORT INTO`</InternalLink> statement instead. |
| <InternalLink path="delete">`DELETE`</InternalLink> | Delete specific rows from a table. |
| <InternalLink path="do">`DO`</InternalLink> | Execute a <InternalLink path="plpgsql">PL/pgSQL</InternalLink> code block. |
| <InternalLink path="export">`EXPORT`</InternalLink> | Export an entire table's data, or the results of a `SELECT` statement, to CSV files. |
| <InternalLink path="import-into">`IMPORT INTO`</InternalLink> | Bulk-insert CSV data into an existing table. |
| <InternalLink path="insert">`INSERT`</InternalLink> | Insert rows into a table. |
| <InternalLink path="select-clause">`SELECT`</InternalLink> | Select specific rows and columns from a table and optionally compute derived values. |
| <InternalLink path="select-for-update">`SELECT FOR UPDATE`</InternalLink> | Order transactions by controlling concurrent access to one or more rows of a table. |
| <InternalLink path="selection-queries#table-clause">`TABLE`</InternalLink> | Select all rows and columns from a table. |
| <InternalLink path="truncate">`TRUNCATE`</InternalLink> | Delete all rows from specified tables. |
| <InternalLink path="update">`UPDATE`</InternalLink> | Update rows in a table. |
| <InternalLink path="upsert">`UPSERT`</InternalLink> | Insert rows that do not violate uniqueness constraints; update rows that do. |
| <InternalLink path="selection-queries#values-clause">`VALUES`</InternalLink> | Return rows containing specific values. |

<a id="access-management-statements" />

## Data control statements

| Statement | Usage |
| - | - |
| <InternalLink path="alter-policy">`ALTER POLICY`</InternalLink> | Alter a <InternalLink path="row-level-security">row-level security (RLS)</InternalLink> policy. |
| <InternalLink path="create-policy">`CREATE POLICY`</InternalLink> | Create a <InternalLink path="row-level-security">row-level security (RLS)</InternalLink> policy. |
| <InternalLink path="create-role">`CREATE ROLE`</InternalLink> | Create SQL <InternalLink path="security-reference/authorization#users-and-roles">roles</InternalLink>, which are groups containing any number of roles and users as members. |
| <InternalLink path="create-user">`CREATE USER`</InternalLink> | Create SQL users, which lets you control <InternalLink path="security-reference/authorization#managing-privileges">privileges</InternalLink> on your databases and tables. |
| <InternalLink path="drop-policy">`DROP POLICY`</InternalLink> | Drop a <InternalLink path="row-level-security">row-level security (RLS)</InternalLink> policy. |
| <InternalLink path="drop-provisioned-roles">`DROP PROVISIONED ROLES`</InternalLink> | Bulk-drop <InternalLink path="ldap-authentication#option-1-automatic-user-provisioning-recommended">auto-provisioned</InternalLink> SQL users that match filter criteria. |
| <InternalLink path="drop-role">`DROP ROLE`</InternalLink> | Remove one or more SQL <InternalLink path="security-reference/authorization#users-and-roles">roles</InternalLink>. |
| <InternalLink path="drop-user">`DROP USER`</InternalLink> | Remove one or more SQL users. |
| <InternalLink path="grant">`GRANT`</InternalLink> | Grant privileges to <InternalLink path="security-reference/authorization#users-and-roles">users and roles</InternalLink>, or add a <InternalLink path="security-reference/authorization#users-and-roles">role</InternalLink> or <InternalLink path="security-reference/authorization#create-and-manage-users">user</InternalLink> as a member to a role. |
| <InternalLink path="reassign-owned">`REASSIGN OWNED`</InternalLink> | Change the <InternalLink path="security-reference/authorization#object-ownership">ownership</InternalLink> of all database objects in the current database that are currently owned by a specific <InternalLink path="security-reference/authorization#roles">role</InternalLink> or <InternalLink path="security-reference/authorization#sql-users">user</InternalLink>. |
| <InternalLink path="revoke">`REVOKE`</InternalLink> | Revoke privileges from <InternalLink path="security-reference/authorization#create-and-manage-users">users</InternalLink> or <InternalLink path="security-reference/authorization#users-and-roles">roles</InternalLink>, or revoke a <InternalLink path="security-reference/authorization#users-and-roles">role</InternalLink> or <InternalLink path="security-reference/authorization#create-and-manage-users">user's</InternalLink> membership to a role. |
| <InternalLink path="show-grants">`SHOW GRANTS`</InternalLink> | View privileges granted to users. |
| <InternalLink path="show-policies">`SHOW POLICIES`</InternalLink> | Show the <InternalLink path="row-level-security">row-level security (RLS)</InternalLink> policies for a table. |
| <InternalLink path="show-roles">`SHOW ROLES`</InternalLink> | Lists the roles for all databases. |
| <InternalLink path="show-users">`SHOW USERS`</InternalLink> | Lists the users for all databases. |
| <InternalLink path="show-default-privileges">`SHOW DEFAULT PRIVILEGES`</InternalLink> | Show the default privileges for objects created by specific roles/users in the current database. |

<a id="data-consistency-statements" />

## Data consistency statements

| Statement | Usage |
| - | - |
| <InternalLink path="inspect">`INSPECT`</InternalLink> | Run data consistency validation checks against tables or databases. |
| <InternalLink path="show-inspect-errors">`SHOW INSPECT ERRORS`</InternalLink> | View issues detected by <InternalLink path="inspect">`INSPECT`</InternalLink> data consistency validation jobs. |

<a id="transaction-management-statements" />

## Transaction control statements

| Statement | Usage |
| - | - |
| <InternalLink path="begin-transaction">`BEGIN`</InternalLink> | Initiate a <InternalLink path="transactions">transaction</InternalLink>. |
| <InternalLink path="call">`CALL`</InternalLink> | Call a <InternalLink path="stored-procedures">stored procedure</InternalLink>. |
| <InternalLink path="commit-transaction">`COMMIT`</InternalLink> | Commit the current <InternalLink path="transactions">transaction</InternalLink>. |
| <InternalLink path="savepoint">`SAVEPOINT`</InternalLink> | Start a <InternalLink path="transactions#nested-transactions">nested transaction</InternalLink>. |
| <InternalLink path="release-savepoint">`RELEASE SAVEPOINT`</InternalLink> | Commit a <InternalLink path="transactions#nested-transactions">nested transaction</InternalLink>. |
| <InternalLink path="rollback-transaction#rollback-a-nested-transaction">`ROLLBACK TO SAVEPOINT`</InternalLink> | Roll back and restart the <InternalLink path="transactions#nested-transactions">nested transaction</InternalLink> started at the corresponding `SAVEPOINT` statement. |
| <InternalLink path="rollback-transaction">`ROLLBACK`</InternalLink> | Roll back the current <InternalLink path="transactions">transaction</InternalLink> and all of its <InternalLink path="transactions#nested-transactions">nested transaction</InternalLink>, discarding all transactional updates made by statements inside the transaction. |
| <InternalLink path="set-transaction">`SET TRANSACTION`</InternalLink> | Set the priority for the session or for an individual <InternalLink path="transactions">transaction</InternalLink>. |
| <InternalLink path="show-vars">`SHOW`</InternalLink> | View the current <InternalLink path="transactions">transaction settings</InternalLink>. |
| <InternalLink path="show-transactions">`SHOW TRANSACTIONS`</InternalLink> | View all currently active transactions across the cluster or on the local node. |

## Session management statements

| Statement | Usage |
| - | - |
| <InternalLink path="reset-vars">`RESET session variable`</InternalLink> | Reset a session variable to its default value. |
| <InternalLink path="set-vars">`SET session variable`</InternalLink> | Set a current session variable. |
| <InternalLink path="set-transaction">`SET TRANSACTION`</InternalLink> | Set the priority for an individual <InternalLink path="transactions">transaction</InternalLink>. |
| <InternalLink path="show-trace">`SHOW TRACE FOR SESSION`</InternalLink> | Return details about how CockroachDB executed a statement or series of statements recorded during a session. |
| <InternalLink path="show-vars">`SHOW session variable`</InternalLink> | List the current session or transaction settings. |

## Cluster management statements

| Statement | Usage |
| - | - |
| <InternalLink path="reset-cluster-setting">`RESET CLUSTER SETTING`</InternalLink> | Reset a cluster setting to its default value. |
| <InternalLink path="set-cluster-setting">`SET CLUSTER SETTING`</InternalLink> | Set a cluster-wide setting. |
| <InternalLink path="show-cluster-setting">`SHOW ALL CLUSTER SETTINGS`</InternalLink> | List the current cluster-wide settings. |
| <InternalLink path="show-sessions">`SHOW SESSIONS`</InternalLink> | List details about currently active sessions. |
| <InternalLink path="cancel-session">`CANCEL SESSION`</InternalLink> | Cancel a long-running session. |

## Query management statements

| Statement | Usage |
| - | - |
| <InternalLink path="cancel-query">`CANCEL QUERY`</InternalLink> | Cancel a running SQL query. |
| <InternalLink path="show-statements">`SHOW STATEMENTS`/`SHOW QUERIES`</InternalLink> | List details about current active SQL queries. |

## Query planning statements

| Statement | Usage |
| - | - |
| <InternalLink path="create-statistics">`CREATE STATISTICS`</InternalLink> | Create table statistics for the <InternalLink path="cost-based-optimizer">cost-based optimizer</InternalLink> to use. |
| <InternalLink path="explain">`EXPLAIN`</InternalLink> | View debugging and analysis details for a statement that operates over tabular data. |
| <InternalLink path="explain-analyze">`EXPLAIN ANALYZE`</InternalLink> | Execute the query and generate a physical query plan with execution statistics. |
| <InternalLink path="show-statement-hints">`SHOW STATEMENT HINTS`</InternalLink> | List <InternalLink path="cost-based-optimizer#statement-hints">statement hints</InternalLink> for a SQL statement fingerprint. |
| <InternalLink path="show-statistics">`SHOW STATISTICS`</InternalLink> | List table statistics used by the <InternalLink path="cost-based-optimizer">cost-based optimizer</InternalLink>. |

## Job management statements

Jobs in CockroachDB represent tasks that might not complete immediately, such as schema changes or  backups or restores.

| Statement | Usage |
| - | - |
| <InternalLink path="cancel-job">`CANCEL JOB`</InternalLink> | Cancel a `BACKUP`, `RESTORE`, `IMPORT`, or `CHANGEFEED` job. |
| <InternalLink path="pause-job">`PAUSE JOB`</InternalLink> | Pause a `BACKUP`, `RESTORE`, `IMPORT`, or `CHANGEFEED` job. |
| <InternalLink path="resume-job">`RESUME JOB`</InternalLink> | Resume a paused `BACKUP`, `RESTORE`, `IMPORT`, or `CHANGEFEED` job. |
| <InternalLink path="show-jobs">`SHOW JOBS`</InternalLink> | View information on jobs. |

## Backup and restore statements

| Statement | Usage |
| - | - |
| <InternalLink path="backup">`BACKUP`</InternalLink> | Create disaster recovery backups of clusters, databases, and tables. |
| <InternalLink path="restore">`RESTORE`</InternalLink> | Restore clusters, databases, and tables using your backups. |
| <InternalLink path="show-backup">`SHOW BACKUP`</InternalLink> | List the contents of a backup. |
| <InternalLink path="create-schedule-for-backup">`CREATE SCHEDULE FOR BACKUP`</InternalLink> | Create a schedule for periodic backups. |
| <InternalLink path="alter-backup-schedule">`ALTER BACKUP SCHEDULE`</InternalLink> | Modify an existing backup schedule. |
| <InternalLink path="show-schedules">`SHOW SCHEDULES`</InternalLink> | View information on backup schedules. |
| <InternalLink path="pause-schedules">`PAUSE SCHEDULES`</InternalLink> | Pause backup schedules. |
| <InternalLink path="resume-schedules">`RESUME SCHEDULES`</InternalLink> | Resume paused backup schedules. |
| <InternalLink path="drop-schedules">`DROP SCHEDULES`</InternalLink> | Drop backup schedules. |
| <InternalLink path="alter-backup">`ALTER BACKUP`</InternalLink> | Add a new <InternalLink path="take-and-restore-encrypted-backups#use-key-management-service">KMS encryption key</InternalLink> to an encrypted backup. |

## Changefeed statements

<InternalLink path="change-data-capture-overview">Change data capture</InternalLink> (CDC) provides an  and core version of row-level change subscriptions for downstream processing.

| Statement | Usage |
| - | - |
| <InternalLink path="create-changefeed">`CREATE CHANGEFEED`</InternalLink> | Create a new changefeed to stream row-level changes in a configurable format to a configurable sink (e.g, <InternalLink path="changefeed-sinks#kafka">Kafka</InternalLink>, <InternalLink path="changefeed-sinks#cloud-storage-sink">cloud storage</InternalLink>). |
| <InternalLink path="create-schedule-for-changefeed">`CREATE SCHEDULE FOR CHANGEFEED`</InternalLink> | Create a scheduled changefeed to export data out of CockroachDB using an initial scan. to a configurable sink (e.g, <InternalLink path="changefeed-sinks#kafka">Kafka</InternalLink>, <InternalLink path="changefeed-sinks#cloud-storage-sink">cloud storage</InternalLink>). |
| <InternalLink path="changefeed-for">`EXPERIMENTAL CHANGEFEED FOR`</InternalLink> | (Core) Create a new changefeed to stream row-level changes to the client indefinitely until the underlying connection is closed or the changefeed is canceled. |
| <InternalLink path="alter-changefeed">`ALTER CHANGEFEED`</InternalLink> | Modify an existing changefeed. |

## External resource statements

| Statement | Usage |
| - | - |
| <InternalLink path="create-external-connection">`CREATE EXTERNAL CONNECTION`</InternalLink> | Create an external connection, which represents a provider-specific URI, to interact with resources that are external from CockroachDB. |
| <InternalLink path="show-create-external-connection">`SHOW CREATE EXTERNAL CONNECTION`</InternalLink> | Display the connection name and the creation statements for active external connections. |
| <InternalLink path="drop-external-connection">`DROP EXTERNAL CONNECTION`</InternalLink> | Drop an external connection. |
