Query below lists all columns in a table in Teradata database with their details.
Query
SELECT col.DatabaseName,
col.TableName,
col.ColumnName,
col.ColumnType as DataType,
col.ColumnLength,
col.DecimalTotalDigits,
col.DecimalFractionalDigits,
case col.Nullable
when 'Y' then 'Yes'
else 'No' end as Nullable,
col.DefaultValue,
col.ColumnConstraint,
CASE WHEN pks.TableName IS NOT NULL
THEN 'Yes'
ELSE 'No' END AS PrimaryIndex,
CASE WHEN pks.TableName IS NOT NULL
THEN 'Yes'
ELSE 'No' END AS PrimaryKey,
CASE WHEN fks.ChildDB IS NOT NULL
THEN 'Yes'
ELSE 'No' END AS ForeignKey,
CASE WHEN uqs.UniqueFlag IS NOT NULL
THEN 'Yes'
ELSE 'No' END AS UniqueKey
FROM DBC.ColumnsV col
JOIN DBC.TablesV tab
ON col.DataBaseName = tab.DataBaseName
AND col.TableName = tab.TableName
AND tab.TableKind = 'T'
LEFT JOIN DBC.IndicesV pks
ON tab.DatabaseName = pks.DatabaseName
AND tab.TableName = pks.TableName
AND tab.PrimaryKeyIndexId = pks.IndexNumber
AND col.ColumnName = pks.ColumnName
LEFT JOIN DBC.IndicesV uqs
ON col.DatabaseName = uqs.DatabaseName
AND col.TableName = uqs.TableName
AND col.ColumnName = uqs.ColumnName
AND uqs.IndexType = 'U'
LEFT JOIN DBC.IndicesV pis
ON col.DatabaseName = pis.DatabaseName
AND col.TableName = pis.TableName
AND col.ColumnName = pis.ColumnName
AND uqs.IndexNumber = 1
LEFT JOIN DBC.All_RI_ChildrenV fks
ON fks.ChildDB = col.DatabaseName
AND fks.ChildTable = col.TableName
AND fks.ChildKeyColumn = col.ColumnName
WHERE col.DataBaseName NOT IN ('All', 'Crashdumps', 'DBC', 'dbcmngr',
'Default', 'External_AP', 'EXTUSER', 'LockLogShredder', 'PUBLIC',
'Sys_Calendar', 'SysAdmin', 'SYSBAR', 'SYSJDBC', 'SYSLIB',
'SystemFe', 'SYSUDTLIB', 'SYSUIF', 'TD_SERVER_DB', 'TDStats',
'TD_SYSGPL', 'TD_SYSXML', 'TDMaps', 'TDPUSER', 'TDQCD',
'tdwm', 'SQLJ', 'TD_SYSFNLIB', 'SYSSPATIAL')
ORDER BY col.DatabaseName,
col.TableName,
col.ColumnId;
Columns
- DatabaseName - database name
- TableName - table name
- ColumnName - column name
- DataType - type of data column contains
- ColumnLength - maximum length of the field
- DecimalTotalDigits - total number of digits allowed
- DecimalFractionalDigits - total number of fractional digits
- Nullable - indicate if column is nullable
- DefaultValue - column default value
- ColumnConstraint - column check constraint
- PrimaryIndex - indicate if column is primary index
- PrimaryKey - indicate if column is primary key
- ForeignKey - indicate if column is foreign key
- UniqueKey - indicate if column is unique key
Rows
- One row represents one column
- Scope of rows: represent all columns in database
- Ordered by database name, table name