---
title: "SQL feature support"
url: "https://docs.yugabyte.com/stable/api/ysql/sql-feature-support/"
---

# SQL feature support

Summary of YugabyteDB's conformance to the SQL standard

YugabyteDB supports most standard SQL features

YugabyteDB is a distributed SQL database that implements many [standard SQL](https://en.wikipedia.org/wiki/SQL "standard SQL") features while introducing some unique capabilities due to its distributed nature. The following provides an overview of SQL features that are fully supported, partially supported, and features that are currently work in progress. Whether you're designing new applications or migrating existing workloads, this guide will help you understand how YugabyteDB's SQL capabilities compare to other SQL-based systems, ensuring smooth adoption and development.

## Data types

|   | Data type                                                                 | Documentation                                                                                             |
|---|---------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------|
|   | `ARRAY`                                                                   | [Array data types](/stable/api/ysql/datatypes/type_array/ "Array data types")                                           |
|   | `BINARY`                                                                  | [Binary data types](/stable/api/ysql/datatypes/type_binary/ "Binary data types")                                        |
|   | `BIT`,`BYTES`                                                             |                                                                                                           |
|   | `BOOLEAN`                                                                 | [Boolean data types](/stable/api/ysql/datatypes/type_bool/ "Boolean data types")                                        |
|   | `CHAR`, `VARCHAR`, `TEXT`                                                 | [Character data types](/stable/api/ysql/datatypes/type_character/ "Character data types")                               |
|   | `COLLATE`                                                                 | [Collations](/stable/explore/ysql-language-features/advanced-features/collations/ "Collations")          |
|   | `DATE`, `TIME`, `TIMESTAMP`, `INTERVAL`                                   | [Date and time data types](/stable/api/ysql/datatypes/type_datetime/ "Date and time data types")                        |
|   | `DEC`, `DECIMAL`, `NUMERIC`                                               | [Fixed point numbers](/stable/api/ysql/datatypes/type_numeric/#fixed-point-numbers "Fixed point numbers")               |
|   | `ENUM`                                                                    | [Enumerations](/stable/explore/ysql-language-features/data-types/#enumerations-enum-type "Enumerations") |
|   | `FLOAT`, `REAL`, `DOUBLE PRECISION`                                       | [Floating-point numbers](/stable/api/ysql/datatypes/type_numeric/#floating-point-numbers "Floating-point numbers")      |
|   | `JSON`, `JSONB`                                                           | [JSON data types](/stable/api/ysql/datatypes/type_json/ "JSON data types")                                              |
|   | `MONEY`                                                                   | [Money data types](/stable/api/ysql/datatypes/type_money/ "Money data types")                                           |
|   | `SERIAL`, `SMALLSERIAL`, `BIGSERIAL`                                      | [Serial data types](/stable/api/ysql/datatypes/type_serial/ "Serial data types")                                        |
|   | `SMALLINT, INT, INTEGER, BIGINT`                                          | [Integers](/stable/api/ysql/datatypes/type_numeric/#integers "Integers")                                                |
|   | `INT4RANGE`, `INT8RANGE`, `NUMRANGE`, `TSRANGE`, `TSTZRANGE`, `DATERANGE` | [Range data types](/stable/api/ysql/datatypes/type_range/ "Range data types")                                           |
|   | `UUID`                                                                    | [UUID data type](/stable/api/ysql/datatypes/type_uuid/ "UUID data type")                                                |
|   | `XML`                                                                     | [XML data type and functions](/stable/api/ysql/datatypes/type_xml/ "XML data type and functions")                       |
|   | `TSVECTOR`                                                                |                                                                                                           |
|   | UDT(Base, Enumerated, Range, Composite, Array, Domain types)              |                                                                                                           |

## Schema operations

|   | Operation                         | Documentation                                                                                                                         |
|---|-----------------------------------|---------------------------------------------------------------------------------------------------------------------------------------|
|   | Altering tables                   | [ALTER TABLE](/stable/api/ysql/the-sql-language/statements/ddl_alter_table/ "ALTER TABLE")                                                          |
|   | Altering databases                | [ALTER DATABASE](/stable/api/ysql/the-sql-language/statements/ddl_alter_db/ "ALTER DATABASE")                                                       |
|   | Altering a column's name          |                                                                                                                                       |
|   | Altering a column's default value |                                                                                                                                       |
|   | Altering a column's data type     |                                                                                                                                       |
|   | Adding columns                    | [ADD COLUMN](/stable/api/ysql/the-sql-language/statements/ddl_alter_table/ "ADD COLUMN")                                                            |
|   | Removing columns                  | [DROP COLUMN](/stable/api/ysql/the-sql-language/statements/ddl_alter_table/ "DROP COLUMN")                                                          |
|   | Adding constraints                | [ADD CONSTRAINT](/stable/api/ysql/the-sql-language/statements/ddl_alter_table/#add-alter-table-constraint-constraints "ADD CONSTRAINT")             |
|   | Removing constraints              | [DROP CONSTRAINT](/stable/api/ysql/the-sql-language/statements/ddl_alter_table/#drop-constraint-constraint-name-restrict-cascade "DROP CONSTRAINT") |
|   | Altering indexes                  |                                                                                                                                       |
|   | Adding indexes                    | [CREATE INDEX](/stable/api/ysql/the-sql-language/statements/ddl_create_index/ "CREATE INDEX")                                                       |
|   | Removing indexes                  |                                                                                                                                       |
|   | Adding a primary key              |                                                                                                                                       |
|   | Dropping a primary key            |                                                                                                                                       |
|   | Altering a primary key            |                                                                                                                                       |
|   | Adding user-defined schemas       | [CREATE SCHEMA](/stable/api/ysql/the-sql-language/statements/ddl_create_schema/ "CREATE SCHEMA")                                                    |
|   | Removing user-defined schemas     |                                                                                                                                       |
|   | Altering user-defined schemas     |                                                                                                                                       |

## Constraints

|   | Feature                                       | Documentation                                                                                                               |
|---|-----------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------|
|   | Check                                         | [Check constraint](/stable/explore/ysql-language-features/data-manipulation/#check-constraint "Check constraint")          |
|   | Unique                                        | [Unique constraint](/stable/explore/ysql-language-features/data-manipulation/#unique-constraint "Unique constraint")       |
|   | Not Null                                      | [Not Null constraint](/stable/explore/ysql-language-features/data-manipulation/#not-null-constraint "Not Null constraint") |
|   | Primary Key                                   | [Primary keys](/stable/explore/ysql-language-features/indexes-constraints/primary-key-ysql/ "Primary keys")                |
|   | Foreign Key                                   | [Foreign keys](/stable/explore/ysql-language-features/data-manipulation/#foreign-key-constraint/ "Foreign keys")           |
|   | Default Value                                 |                                                                                                                             |
|   | Deferrable Foreign Key constraints            |                                                                                                                             |
|   | Deferrable Primary Key and Unique constraints |                                                                                                                             |
|   | Exclusion constraints                         |                                                                                                                             |

## Indexes

|   | Component            | Documentation                                                                                                                                         |
|---|----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------|
|   | Indexes              | [Indexes and constraints](/stable/explore/ysql-language-features/indexes-constraints/ "Indexes and constraints")                                     |
|   | GIN indexes          | [GIN indexes](/stable/explore/ysql-language-features/indexes-constraints/gin/ "GIN indexes")                                                         |
|   | Partial indexes      | [Partial indexes](/stable/explore/ysql-language-features/indexes-constraints/partial-index-ysql/ "Partial indexes")                                  |
|   | Expression indexes   | [Expression indexes](/stable/explore/ysql-language-features/indexes-constraints/expression-index-ysql/ "Expression indexes")                         |
|   | Multi-column indexes | [Multi-column indexes](/stable/explore/ysql-language-features/indexes-constraints/secondary-indexes-ysql/#multi-column-index "Multi-column indexes") |
|   | Covering indexes     | [Covering indexes](/stable/explore/ysql-language-features/indexes-constraints/covering-index-ysql/ "Covering indexes")                               |
|   | GiST indexes         |                                                                                                                                                       |
|   | BRIN indexes         |                                                                                                                                                       |
|   | B-tree indexes       | B-tree index is treated as an LSM index.                                                                                                              |

## Transactions

|   | Feature                    | Documentation                                                                                       |
|---|----------------------------|-----------------------------------------------------------------------------------------------------|
|   | Transactions               | [Transactions](/stable/explore/transactions/ "Transactions")                                       |
|   | `BEGIN`                    | [BEGIN](/stable/api/ysql/the-sql-language/statements/txn_begin/ "BEGIN")                                          |
|   | `COMMIT`                   | [COMMIT](/stable/api/ysql/the-sql-language/statements/txn_commit/ "COMMIT")                                       |
|   | `ROLLBACK`                 | [ROLLBACK](/stable/api/ysql/the-sql-language/statements/txn_rollback/ "ROLLBACK")                                 |
|   | `SAVEPOINT`                | [SAVEPOINT](/stable/api/ysql/the-sql-language/statements/savepoint_create/ "SAVEPOINT")                           |
|   | `ROLLBACK TO SAVEPOINT`    | [ROLLBACK TO SAVEPOINT](/stable/api/ysql/the-sql-language/statements/savepoint_rollback/ "ROLLBACK TO SAVEPOINT") |
|   | `PREPARE TRANSACTION (XA)` |                                                                                                     |

## Roles and Permissions

|   | Component             | Details                                                                                        |
|---|-----------------------|------------------------------------------------------------------------------------------------|
|   | Users                 | [Manage users and roles](/stable/secure/authorization/create-roles/ "Manage users and roles") |
|   | Roles                 | [Manage users and roles](/stable/secure/authorization/create-roles/ "Manage users and roles") |
|   | Object ownership      |                                                                                                |
|   | Privileges            | [Grant privileges](/stable/secure/authorization/ysql-grant-permissions/ "Grant privileges")   |
|   | Default privileges    |                                                                                                |
|   | Row level security    |                                                                                                |
|   | Column level security |                                                                                                |

## Queries

|   | Component                                                           | Details                                                                                                                                   |
|---|---------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------|
|   | FROM, WHERE, GROUP BY, HAVING, DISTINCT, LIMIT/OFFSET, WITH queries | [Group data](/stable/explore/ysql-language-features/queries/#group-data "Group data")                                                    |
|   | EXPLAIN query plans                                                 | [Analyze queries with EXPLAIN](/stable/launch-and-manage/monitor-and-alert/query-tuning/explain-analyze/ "Analyze queries with EXPLAIN") |
|   | JOINs (INNER/OUTER, LEFT/RIGHT)                                     | [Join columns](/stable/explore/ysql-language-features/queries/#join-columns "Join columns")                                              |
|   | Expressions and Operators                                           | [Expressions and operators](/stable/explore/ysql-language-features/expressions-operators/ "Expressions and operators")                   |
|   | Common Table Expressions (CTE) and Recursive Queries                | [Recursive queries and CTEs](/stable/explore/ysql-language-features/queries/#ctes "Recursive queries and CTEs")                          |
|   | Upserts (INSERT ... ON CONFLICT DO NOTHING/UPDATE)                  | [Upsert](/stable/explore/ysql-language-features/data-manipulation/#upsert "Upsert")                                                      |

## Advanced SQL

|   | Component                                            | Details                                                                                                                                                |
|---|------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------|
|   | Stored procedures                                    | [Stored procedures](/stable/explore/ysql-language-features/advanced-features/stored-procedures/ "Stored procedures")                                  |
|   | User-defined functions                               | [Functions](/stable/api/ysql/user-defined-subprograms-and-anon-blocks/#functions "Functions")                                                                        |
|   | Cursors                                              | [Cursors](/stable/explore/ysql-language-features/advanced-features/cursor/ "Cursors")                                                                 |
|   | Row-level triggers (BEFORE, AFTER, INSTEAD OF)       |                                                                                                                                                        |
|   | Statement-level triggers (BEFORE, AFTER, INSTEAD OF) |                                                                                                                                                        |
|   | Deferrable triggers                                  |                                                                                                                                                        |
|   | Transition tables (REFERENCING clause for triggers)  |                                                                                                                                                        |
|   | Sequences                                            | [Auto-Increment column values](/stable/explore/ysql-language-features/data-manipulation/#auto-increment-column-values "Auto-Increment column values") |
|   | Identity columns                                     |                                                                                                                                                        |
|   | Views                                                | [Views](/stable/explore/ysql-language-features/advanced-features/views/ "Views")                                                                      |
|   | Table inheritance                                    | [Table inheritance](/stable/api/ysql/the-sql-language/ddl-inherit/ "Table inheritance")                                                                              |
|   | Materialized views                                   | [Materialized views](/stable/explore/ysql-language-features/advanced-features/views/#materialized-views "Materialized views")                         |
|   | Window functions                                     | [Window functions](/stable/api/ysql/exprs/window_functions/ "Window functions")                                                                                      |
|   | Common table expressions                             |                                                                                                                                                        |
|   | Extensions                                           | [PostgreSQL extensions](/stable/additional-features/pg-extensions/ "PostgreSQL extensions")                                                           |
|   | Foreign data wrappers                                | [Foreign data wrappers](/stable/explore/ysql-language-features/advanced-features/foreign-data-wrappers/ "Foreign data wrappers")                      |
|   | Large objects                                        |                                                                                                                                                        |
