# eXtremeSQL and ANSI Standards

> eXtremeSQL provides a SQL-89 compatible query language with many extensions:

> - Arrays
> - Structures
> - References
> - Support of all C++ built-in types
> - User-defined functions

> Also there are some incompatibilities with the ANSI standard:

> - Assigning null values to columns of some types is not supported.
> - Changing the database schema at runtime (add table, add index,...) is not supported.
> - Identifiers are case sensitive (SQL keywords are case insensitive).
> - Views are not updatable.
> - Insofar as eXtremeDB has no notion of a “remote table”, materialized views are irrelevant (i.e. not supported).
> - Constraints are not enforced by the SQL interface itself, but are enforced by the underlying eXtremeDB runtime.
> - `RIGHT OUTER JOIN` and `FULL OUTER JOIN` are not implemented.
> - Triggers are not supported, but underlying eXtremeDB event notifications will be invoked if the eXtremeSQL action causes such an event.