COLUMNS

Applies to: check marked yes Databricks SQL check marked yes Databricks Runtime 10.4 LTS and above check marked yes Unity Catalog only

INFORMATION_SCHEMA.COLUMNS describes columns of tables and views (relations) in the catalog.

The rows returned are limited to the relations the user is privileged to interact with.

Definition

The COLUMNS relation contains the following columns:

Name

Data type

Nullable

Standard

Description

TABLE_CATALOG

STRING

No

Yes

Catalog that contains the relation.

TABLE_SCHEMA

STRING

No

Yes

Schema that contains the relation.

TABLE_NAME

STRING

No

Yes

Name of the relation the column is part of.

COLUMN_NAME

STRING

No

Yes

Name of the column.

ORDINAL_POSITION

INTEGER

No

Yes

The position (numbered from 1) of the column within the relation.

COLUMN_DEFAULT

STRING

No

Yes

The default value used when the column is not specified in an INSERT, NULL if undefined.

IS_NULLABLE

STRING

No

Yes

YES if column is nullable, NO otherwise.

FULL_DATA_TYPE

STRING

No

No

The data type as specified in the column definition.

DATA_TYPE

STRING

No

Yes

The simple data type name of the column, or STRUCT, or ARRAY.

CHARACTER_MAXIMUM_LENGTH

INTEGER

Yes

Yes

Always NULL, reserved for future use.

CHARACTER_OCTET_LENGTH

STRING

Yes

Yes

Always NULL, reserved for future use.

NUMERIC_PRECISION

INTEGER

Yes

Yes

For base-2 integral numeric types, FLOAT, and DOUBLE, the number of supported bits. For DECIMAL the number of digits, NULL otherwise.

NUMERIC_PRECISION_RADIX

INTEGER

Yes

Yes

For DECIMAL 10, for all other numeric types 2, NULL otherwise.

NUMERIC_SCALE

INTEGER

Yes

Yes

For integral numeric types 0, for DECIMAL the number of digits to the right of the decimal point, NULL otherwise.

DATETIME_PRECISION

INTEGER

Yes

Yes

For DATE 0, for TIMESTAMP, and INTERVALSECOND 3, any other INTERVAL 0, NULL otherwise.

INTERVAL_TYPE

STRING

Yes

Yes

For INTERVAL the unit portion of the interval, e.g. 'YEAR TO MONTH', NULL otherwise.

INTERVAL_PRECISION

INTERAL

Yes

Yes

Always NULL, reserved for future use.

MAXIMUM_CARDINALITY

INTEGER

Yes

Yes

Always NULL, reserved for future use.

IS_IDENTITY

STRING

No

Yes

Always ‘NO’, reserved for future use.

IDENTITY_GENERATION

STRING

Yes

Yes

Always NULL, reserved for future use.

IDENTITY_START

STRING

Yes

Yes

Always NULL, reserved for future use.

IDENTITY_INCREMENT

STRING

Yes

Yes

Always NULL, reserved for future use.

IDENTITY_MAXIMUM

STRING

Yes

Yes

Always NULL, reserved for future use.

IDENTITY_MINIMUM

STRING

Yes

Yes

Always NULL, reserved for future use.

IDENTITY_CYCLE

STRING

Yes

Yes

Always NULL, reserved for future use.

IS_GENERATED

STRING

Yes

Yes

Always NULL, reserved for future use.

GENERATION_EXPRESSION

STRING

Yes

Yes

Always NULL, reserved for future use.

IS_SYSTEM_TIME_PERIOD_START

STRING

No

Yes

Always NO, reserved for future use.

IS_SYSTEM_TIME_PERIOD_END

STRING

No

Yes

Always NO, reserved for future use.

SYSTEM_TIME_PERIOD_TIMESTAMP_GENERATION

STRING

Yes

Yes

Always NULL, reserved for future use.

IS_UPDATABLE

STRING

No

Yes

YES if column is updatable, NO otherwise.

PARTITION_ORDINAL_POSITION

INTEGER

Yes

No

Position (numbered from 1) of the column in the partition, NULL if not a partitioning column.

COMMENT

STRING

Yes

No

Optional description of the column.

Constraints

The following constraints apply to the COLUMNS relation:

Class

Name

Column List

Description

Primary key

COLUMNS_PK

TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME

Unique identifier for the column.

Unique key

COLUMNS_UK

TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION)

Unique identifier the column.

Foreign key

COLUMN_TABLES_FK

TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME

References TABLES.

Examples

-- Show the columns of the CATALOG_PRIVILEGES relation in the main.information_schema schema.
> SELECT ordinal_position, column_name, data_type
    FROM main.information_schema.columns
    WHERE table_schema = 'information_schema'
      AND table_name = 'catalog_privileges'
    ORDER BY ordinal_position;
  1  grantor        STRING
  2  grantee        STRING
  3  catalog_name   STRING
  4  privilege_type STRING
  5  is_grantable   STRING