Comment pouvons-nous connaître la description de chaque colonne d'une table (DB2) via SQL?
Ma base de données est DB2.
select
tabname,
colname,
typename,
length,
scale,
default,
nulls,
identity,
generated,
remarks,
keyseq
from
syscat.columns
- NOTE: la clause where est sensible à la casse et doit être en majuscule
select
t.table_schema as Library
,t.table_name
,t.table_type
,c.column_name
,c.ordinal_position
,c.data_type
,c.character_maximum_length as Length
,c.numeric_precision as Precision
,c.numeric_scale as Scale
,c.column_default
,t.is_insertable_into
from sysibm.tables t
join sysibm.columns c
on t.table_schema = c.table_schema
and t.table_name = c.table_name
where t.table_schema = 'MYLIB'
and t.table_name = 'MYTABLE'
order by t.table_name, c.ordinal_position
- pour obtenir une liste de toutes les tables méta:
select * from sysibm.tables
where table_schema = 'SYSIBM'
SELECT
TABLE_CAT,
TABLE_SCHEM,
TABLE_NAME,
COLUMN_NAME,
DATA_TYPE,
TYPE_NAME,
COLUMN_SIZE,
COLUMN_TEXT
FROM "SYSIBM"."SQLCOLUMNS"
WHERE TABLE_SCHEM = 'SCHEMA'
AND TABLE_NAME = 'TABLE'
Il s’agit de DB2 V5R4 et n’est pas une table système, mais un SYSTEM VIEW
. Au cas où vous iriez fou à la recherche de la liste des tables.
Je travaille sur une boîte iSeries DB2 (v5r4), c’est une variante particulière de DB2.
Si vous êtes sur ou que vous vous connectez à un iSeries (AS/400), le lien mentionné par Anton est excellent (désolé, vous ne pouvez pas encore voter!)
Describe ne fonctionne pas sur un iSeries, mais fonctionnera avec DB2 sur les autres plates-formes.
describe table schema.table_name ;
SELECT COLNAME, REMARKS
FROM SYSCAT.COLUMNS
WHERE TABSCHEMA = 'MYSCHEMA'
AND TABNAME = 'MYTABLENAME'
select T1.name,T1.creator from sysibm.systables T1,sysibm.syscolumns
T2 where T1.name=T2.tbname and T1.creator=T2.tbccreator and
T1.creator='CREATOR NAME' and T2.name='COLUMN NAME'
A travaillé pour moi:
select * from sysibm.columns
where table_schema = 'MY_SCHEMA'