Firebird: ottenere l’elenco delle tabelle,viste e colonne

Illustro in questo articolo delle Query per ottenere l’elenco dei nomi delle tabelle e delle colonne di un database Firebird. Alcune delle informazioni qui riportate le ho prese e tradotte dalle FAQ del sito ufficiale di Firebird alla pagina http://www.firebirdfaq.org/faq174/

Firebird, come altri database, ha delle tabelle di sistema dove memorizza vari parametri. Tutte le tabelle e le viste sono memorizzate nella tabella di sistema RDB$RELATIONS. Le tabelle e le viste di sistema hanno il flag RDB$SYSTEM_FLAG impostato, invece le tabelle e le viste definite dall’utente hanno questo flag impostato a NULL oppure a zero. Le viste si distinguono dalle tabelle dal momento che hanno impostato il flag RDB$VIEW_BLR. Le colonne delle tabelle e delle viste sono memorizzate nella tabella di sistema RDB$RELATION_FIELDS.

Passiamo a vedere le istruzioni SQL da fornire a Firebird per ottenere l’elenco delle tabelle,viste e colonne da noi create:

Elenco delle tabelle

SELECT rdb$relation_name
FROM rdb$relations
WHERE rdb$view_blr IS NULL
AND (rdb$system_flag IS NULL OR rdb$system_flag = 0);

Elenco delle viste

SELECT rdb$relation_name
FROM rdb$relations
WHERE rdb$view_blr IS NOT NULL
AND (rdb$system_flag IS NULL OR rdb$system_flag = 0);

Elenco delle tabelle con le relative colonne

SELECT f.rdb$relation_name, f.rdb$field_name
FROM rdb$relation_fields f
JOIN rdb$relations r ON f.rdb$relation_name = r.rdb$relation_name
AND r.rdb$view_blr IS NULL
AND (r.rdb$system_flag IS NULL OR r.rdb$system_flag = 0)
ORDER BY 1, f.rdb$field_position;

Elenco delle colonne di una data tabella

SELECT rdb$field_name
FROM rdb$relation_fields
WHERE rdb$relation_name='NOME_DELLA_TABELLA'
Se questo articolo ti è piaciuto, condividilo su un social:
Se l'articolo ti è piaciuto o ti è stato utile, potresti dedicare un minuto a leggere questa pagina, dove ho elencato alcune cose che potrebbero farmi contento? Grazie :)