La vue columns contient des informations sur toutes les colonnes de table (et colonnes de vue) de la base de données. Les colonnes système (oid, etc.) ne sont pas inclus. Seules les colonnes, auxquelles l'utilisateur a accès, sont affichées (qu'il soit le propriétaire ou qu'il ait quelques droits).
Tableau 32.10. Colonnes de columns
Nom | Type de données | Description |
---|---|---|
table_catalog | sql_identifier | Nom de la base de données contenant la table (toujours la base de données courante) |
table_schema | sql_identifier | Nom du schéma contenant la table |
table_name | sql_identifier | Nom de la table |
column_name | sql_identifier | Nom de la colonne |
ordinal_position | cardinal_number | Position de la colonne dans la table (la numérotation commençant à 1) |
column_default | character_data | Expression par défaut de la colonne |
is_nullable | character_data | YES si la colonne peut contenir des valeurs NULL, NO dans le cas contraire. Une contrainte not NULL est une façon pour obtenir qu'une colonne soit connue comme ne pouvant pas contenir de valeurs NULL mais il en existe d'autres. |
data_type | character_data | Le type de données de la colonne, s'il s'agit d'un type interne ou d'un tableau (ARRAY) (dans ce cas, voir la vue element_types) sinon défini par l'utilisateur (USER-DEFINED) (dans ce cas, le type est identifié dans udt_name et dispose des colonnes associés). Si la colonne est basée sur un domaine, cette colonne est une référence au type sous-jacent du domaine (et le domaine est identifié dans domain_name et dispose des colonnes associées). |
character_maximum_length | cardinal_number | Si data_type identifie un caractère ou un type de chaîne de bits, la longueur maximum déclarée ; NULL pour tous les autres types de données ou si aucune longueur maximum n'a été déclarée. |
character_octet_length | cardinal_number | Si data_type identifie un type caractère, la longueur maximum en octets (bytes) d'un datum (ceci ne devrait pas concerner les utilisateurs PostgreSQL™) ; NULL pour les autres types de données. |
numeric_precision | cardinal_number | Si data_type identifie un type numérique, cette colonne contient la précision (déclarée ou implicite) du type pour cette colonne. Cette précision indique le nombre de chiffres significatifs. Elle pourrait être exprimée en décimal (base 10) ou en binaire (base 2) comme indiqué dans la colonne numeric_precision_radix. Pour tous les autres types de données, la colonne est NULL. |
numeric_precision_radix | cardinal_number | Si data_type identifie un type numérique, cette colonne indique dans quel base les valeurs des colonnes numeric_precision et numeric_scale sont exprimées. La valeur est soit 2 soit 10. Pour tous les autres types de données, cette colonne est NULL. |
numeric_scale | cardinal_number | Si data_type identifie un type numeric exactement, cette colonne contient l'échelle (déclarée ou implicite) du type de cette colonne. L'échelle indique le nombre de chiffres significatifs à la droite du point décimal. Elle pourrait être exprimée en décimal (base 10) ou en binaire (base 2), comme indiqué dans la colonne numeric_precision_radix. Pour tous les autres types de données, cette colonne est NULL. |
datetime_precision | cardinal_number | Si data_type identifie une date, une heure ou un type interval, la précision déclarée ; NULL pour tous les autres types de données ou si aucune précision n'a été déclarée. |
interval_type | character_data | Pas encore implémenté |
interval_precision | character_data | Pas encore implémenté |
character_set_catalog | sql_identifier | S'applique à une fonctionnalité non disponible dans PostgreSQL™ |
character_set_schema | sql_identifier | S'applique à une fonctionnalité non disponible dans PostgreSQL™. |
character_set_name | sql_identifier | S'applique à une fonctionnalité non disponible dans PostgreSQL™. |
collation_catalog | sql_identifier | S'applique à une fonctionnalité non disponible dans PostgreSQL™. |
collation_schema | sql_identifier | S'applique à une fonctionnalité non disponible dans PostgreSQL™. |
collation_name | sql_identifier | S'applique à une fonctionnalité non disponible dans PostgreSQL™. |
domain_catalog | sql_identifier | Si la colonne a un type domain, le nom de la base de données où le type est défini (toujours la base de données courante), sinon NULL. |
domain_schema | sql_identifier | Si la colonne a un type domain, le nom du schéma où le domaine est défini, sinon NULL. |
domain_name | sql_identifier | Si la colonne a un type de domaine, le nom du domaine, sinon NULL. |
udt_catalog | sql_identifier | Nom de la base de données où le type de données de la colonne (le type sous-jacent du domaine, si applicable) est défini (toujours la base de données courante) |
udt_schema | sql_identifier | Nom du schéma où le type de données de la colonne (le type sous-jacent du domaine, si applicable) est défini |
udt_name | sql_identifier | Nom du type de données de la colonne (le type sous-jacent du domaine, si applicable) |
scope_catalog | sql_identifier | S'applique à une fonctionnalité non disponible dans PostgreSQL™. |
scope_schema | sql_identifier | S'applique à une fonctionnalité non disponible dans PostgreSQL™. |
scope_name | sql_identifier | S'applique à une fonctionnalité non disponible dans PostgreSQL™. |
maximum_cardinality | cardinal_number | Toujours NULL car les tableaux ont toujours une cardinalité maximum illimitée avec PostgreSQL™ |
dtd_identifier | sql_identifier | Un identifiant du descripteur du type de données de la colonne, unique parmi les descripteurs de type de données contenu dans la table. Ceci est principalement utile pour joindre d'autres instances de ces identifiants (le format spécifique de l'identifiant n'est ni défini ni assuré de rester identique dans les versions futures). |
is_self_referencing | character_data | S'applique à une fonctionnalité non disponible dans PostgreSQL™. |
is_identity | character_data | S'applique à une fonctionnalité non disponible dans PostgreSQL™ |
identity_generation | character_data | S'applique à une fonctionnalité non disponible dans PostgreSQL™ |
identity_start | character_data | S'applique à une fonctionnalité non disponible dans PostgreSQL™ |
identity_increment | character_data | S'applique à une fonctionnalité non disponible dans PostgreSQL™ |
identity_maximum | character_data | S'applique à une fonctionnalité non disponible dans PostgreSQL™ |
identity_minimum | character_data | S'applique à une fonctionnalité non disponible dans PostgreSQL™ |
identity_cycle | character_data | S'applique à une fonctionnalité non disponible dans PostgreSQL™ |
is_generated | character_data | S'applique à une fonctionnalité non disponible dans PostgreSQL™ |
generation_expression | character_data | S'applique à une fonctionnalité non disponible dans PostgreSQL™ |
is_updatable | character_data | YES si la colonne est modifiable, NO dans le cas contraire (les colonnes des tables de base sont toujours modifiables, les colonnes des vues ne le sont pas nécessairement) |
Comme les types de données peuvent être définis avec une grande variété de moyens en SQL et comme PostgreSQL™ contient des moyens supplémentaires pour définir des types de données, leurs représentations dans le schéma d'information peut être assez complexe. La colonne data_type est supposée identifier le type de données interne sous-jacent de la colonne. Dans PostgreSQL™, cela signifie que le type est défini dans le schéma du catalogue système pg_catalog. Cette colonne pourrait être utile si l'application peut correctement gérer les types internes (par exemple, formater les types numériques différemment ou utiliser les données dans les colonnes de précisions). Les colonnes udt_name, udt_schema et udt_catalog identifient toujours le type de données sous-jacent de la colonne même si la colonne est basée sur un domaine (comme PostgreSQL™ traite les types internes comme des types définis par l'utilisateur, les types internes apparaissent aussi ici. Ceci est une extension du standard SQL). Ces colonnes devraient être utilisées si une application souhaite traiter les données différemment suivant le type car, dans ce cas, peu importe si la colonne est réellement basée sur un domaine. Si la colonne est basée sur un domaine, l'identité du domaine est stockée dans les colonnes domain_name, domain_schema et domain_catalog. Si vous souhaitez assembler les colonnes avec leur types de données associés et traiter les domaines comme des types séparés, vous pouvez écrire coalesce(domain_name, udt_name), etc.