1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312
|
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>31.9.columns</title>
<link rel="stylesheet" href="stylesheet.css" type="text/css">
<link rev="made" href="pgsql-docs@postgresql.org">
<meta name="generator" content="DocBook XSL Stylesheets V1.70.0">
<link rel="start" href="index.html" title="PostgreSQL 8.1.4 Documentation">
<link rel="up" href="information-schema.html" title="Chapter31.The Information Schema">
<link rel="prev" href="infoschema-column-udt-usage.html" title="31.8.column_udt_usage">
<link rel="next" href="infoschema-constraint-column-usage.html" title="31.10.constraint_column_usage">
<link rel="copyright" href="ln-legalnotice.html" title="Legal Notice">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="sect1" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="infoschema-columns"></a>31.9.<code class="literal">columns</code></h2></div></div></div>
<p> The view <code class="literal">columns</code> contains information about all
table columns (or view columns) in the database. System columns
(<code class="literal">oid</code>, etc.) are not included. Only those columns are
shown that the current user has access to (by way of being the
owner or having some privilege).
</p>
<div class="table">
<a name="id693799"></a><p class="title"><b>Table31.7.<code class="literal">columns</code> Columns</b></p>
<div class="table-contents"><table summary="columns Columns" border="1">
<colgroup>
<col>
<col>
<col>
</colgroup>
<thead><tr>
<th>Name</th>
<th>Data Type</th>
<th>Description</th>
</tr></thead>
<tbody>
<tr>
<td><code class="literal">table_catalog</code></td>
<td><code class="type">sql_identifier</code></td>
<td>Name of the database containing the table (always the current database)</td>
</tr>
<tr>
<td><code class="literal">table_schema</code></td>
<td><code class="type">sql_identifier</code></td>
<td>Name of the schema containing the table</td>
</tr>
<tr>
<td><code class="literal">table_name</code></td>
<td><code class="type">sql_identifier</code></td>
<td>Name of the table</td>
</tr>
<tr>
<td><code class="literal">column_name</code></td>
<td><code class="type">sql_identifier</code></td>
<td>Name of the column</td>
</tr>
<tr>
<td><code class="literal">ordinal_position</code></td>
<td><code class="type">cardinal_number</code></td>
<td>Ordinal position of the column within the table (count starts at 1)</td>
</tr>
<tr>
<td><code class="literal">column_default</code></td>
<td><code class="type">character_data</code></td>
<td> Default expression of the column (null if the current user is
not the owner of the table containing the column)
</td>
</tr>
<tr>
<td><code class="literal">is_nullable</code></td>
<td><code class="type">character_data</code></td>
<td> <code class="literal">YES</code> if the column is possibly nullable,
<code class="literal">NO</code> if it is known not nullable. A not-null
constraint is one way a column can be known not nullable, but
there may be others.
</td>
</tr>
<tr>
<td><code class="literal">data_type</code></td>
<td><code class="type">character_data</code></td>
<td> Data type of the column, if it is a built-in type, or
<code class="literal">ARRAY</code> if it is some array (in that case, see
the view <code class="literal">element_types</code>), else
<code class="literal">USER-DEFINED</code> (in that case, the type is
identified in <code class="literal">udt_name</code> and associated
columns). If the column is based on a domain, this column
refers to the type underlying the domain (and the domain is
identified in <code class="literal">domain_name</code> and associated
columns).
</td>
</tr>
<tr>
<td><code class="literal">character_maximum_length</code></td>
<td><code class="type">cardinal_number</code></td>
<td> If <code class="literal">data_type</code> identifies a character or bit
string type, the declared maximum length; null for all other
data types or if no maximum length was declared.
</td>
</tr>
<tr>
<td><code class="literal">character_octet_length</code></td>
<td><code class="type">cardinal_number</code></td>
<td> If <code class="literal">data_type</code> identifies a character type,
the maximum possible length in octets (bytes) of a datum (this
should not be of concern to <span class="productname">PostgreSQL</span> users); null for all
other data types.
</td>
</tr>
<tr>
<td><code class="literal">numeric_precision</code></td>
<td><code class="type">cardinal_number</code></td>
<td> If <code class="literal">data_type</code> identifies a numeric type, this
column contains the (declared or implicit) precision of the
type for this column. The precision indicates the number of
significant digits. It may be expressed in decimal (base 10)
or binary (base 2) terms, as specified in the column
<code class="literal">numeric_precision_radix</code>. For all other data
types, this column is null.
</td>
</tr>
<tr>
<td><code class="literal">numeric_precision_radix</code></td>
<td><code class="type">cardinal_number</code></td>
<td> If <code class="literal">data_type</code> identifies a numeric type, this
column indicates in which base the values in the columns
<code class="literal">numeric_precision</code> and
<code class="literal">numeric_scale</code> are expressed. The value is
either 2 or 10. For all other data types, this column is null.
</td>
</tr>
<tr>
<td><code class="literal">numeric_scale</code></td>
<td><code class="type">cardinal_number</code></td>
<td> If <code class="literal">data_type</code> identifies an exact numeric
type, this column contains the (declared or implicit) scale of
the type for this column. The scale indicates the number of
significant digits to the right of the decimal point. It may
be expressed in decimal (base 10) or binary (base 2) terms, as
specified in the column
<code class="literal">numeric_precision_radix</code>. For all other data
types, this column is null.
</td>
</tr>
<tr>
<td><code class="literal">datetime_precision</code></td>
<td><code class="type">cardinal_number</code></td>
<td> If <code class="literal">data_type</code> identifies a date, time, or
interval type, the declared precision; null for all other data
types or if no precision was declared.
</td>
</tr>
<tr>
<td><code class="literal">interval_type</code></td>
<td><code class="type">character_data</code></td>
<td>Not yet implemented</td>
</tr>
<tr>
<td><code class="literal">interval_precision</code></td>
<td><code class="type">character_data</code></td>
<td>Not yet implemented</td>
</tr>
<tr>
<td><code class="literal">character_set_catalog</code></td>
<td><code class="type">sql_identifier</code></td>
<td>Applies to a feature not available in <span class="productname">PostgreSQL</span>
</td>
</tr>
<tr>
<td><code class="literal">character_set_schema</code></td>
<td><code class="type">sql_identifier</code></td>
<td>Applies to a feature not available in <span class="productname">PostgreSQL</span>
</td>
</tr>
<tr>
<td><code class="literal">character_set_name</code></td>
<td><code class="type">sql_identifier</code></td>
<td>Applies to a feature not available in <span class="productname">PostgreSQL</span>
</td>
</tr>
<tr>
<td><code class="literal">collation_catalog</code></td>
<td><code class="type">sql_identifier</code></td>
<td>Applies to a feature not available in <span class="productname">PostgreSQL</span>
</td>
</tr>
<tr>
<td><code class="literal">collation_schema</code></td>
<td><code class="type">sql_identifier</code></td>
<td>Applies to a feature not available in <span class="productname">PostgreSQL</span>
</td>
</tr>
<tr>
<td><code class="literal">collation_name</code></td>
<td><code class="type">sql_identifier</code></td>
<td>Applies to a feature not available in <span class="productname">PostgreSQL</span>
</td>
</tr>
<tr>
<td><code class="literal">domain_catalog</code></td>
<td><code class="type">sql_identifier</code></td>
<td> If the column has a domain type, the name of the database that
the domain is defined in (always the current database), else
null.
</td>
</tr>
<tr>
<td><code class="literal">domain_schema</code></td>
<td><code class="type">sql_identifier</code></td>
<td> If the column has a domain type, the name of the schema that
the domain is defined in, else null.
</td>
</tr>
<tr>
<td><code class="literal">domain_name</code></td>
<td><code class="type">sql_identifier</code></td>
<td>If the column has a domain type, the name of the domain, else null.</td>
</tr>
<tr>
<td><code class="literal">udt_catalog</code></td>
<td><code class="type">sql_identifier</code></td>
<td> Name of the database that the column data type (the underlying
type of the domain, if applicable) is defined in (always the
current database)
</td>
</tr>
<tr>
<td><code class="literal">udt_schema</code></td>
<td><code class="type">sql_identifier</code></td>
<td> Name of the schema that the column data type (the underlying
type of the domain, if applicable) is defined in
</td>
</tr>
<tr>
<td><code class="literal">udt_name</code></td>
<td><code class="type">sql_identifier</code></td>
<td> Name of the column data type (the underlying type of the
domain, if applicable)
</td>
</tr>
<tr>
<td><code class="literal">scope_catalog</code></td>
<td><code class="type">sql_identifier</code></td>
<td>Applies to a feature not available in <span class="productname">PostgreSQL</span>
</td>
</tr>
<tr>
<td><code class="literal">scope_schema</code></td>
<td><code class="type">sql_identifier</code></td>
<td>Applies to a feature not available in <span class="productname">PostgreSQL</span>
</td>
</tr>
<tr>
<td><code class="literal">scope_name</code></td>
<td><code class="type">sql_identifier</code></td>
<td>Applies to a feature not available in <span class="productname">PostgreSQL</span>
</td>
</tr>
<tr>
<td><code class="literal">maximum_cardinality</code></td>
<td><code class="type">cardinal_number</code></td>
<td>Always null, because arrays always have unlimited maximum cardinality in <span class="productname">PostgreSQL</span>
</td>
</tr>
<tr>
<td><code class="literal">dtd_identifier</code></td>
<td><code class="type">sql_identifier</code></td>
<td> An identifier of the data type descriptor of the column, unique
among the data type descriptors pertaining to the table. This
is mainly useful for joining with other instances of such
identifiers. (The specific format of the identifier is not
defined and not guaranteed to remain the same in future
versions.)
</td>
</tr>
<tr>
<td><code class="literal">is_self_referencing</code></td>
<td><code class="type">character_data</code></td>
<td>Applies to a feature not available in <span class="productname">PostgreSQL</span>
</td>
</tr>
</tbody>
</table></div>
</div>
<br class="table-break"><p> Since data types can be defined in a variety of ways in SQL, and
<span class="productname">PostgreSQL</span> contains additional ways to
define data types, their representation in the information schema
can be somewhat difficult. The column <code class="literal">data_type</code>
is supposed to identify the underlying built-in type of the column.
In <span class="productname">PostgreSQL</span>, this means that the type
is defined in the system catalog schema
<code class="literal">pg_catalog</code>. This column may be useful if the
application can handle the well-known built-in types specially (for
example, format the numeric types differently or use the data in
the precision columns). The columns <code class="literal">udt_name</code>,
<code class="literal">udt_schema</code>, and <code class="literal">udt_catalog</code>
always identify the underlying data type of the column, even if the
column is based on a domain. (Since
<span class="productname">PostgreSQL</span> treats built-in types like
user-defined types, built-in types appear here as well. This is an
extension of the SQL standard.) These columns should be used if an
application wants to process data differently according to the
type, because in that case it wouldn't matter if the column is
really based on a domain. If the column is based on a domain, the
identity of the domain is stored in the columns
<code class="literal">domain_name</code>, <code class="literal">domain_schema</code>,
and <code class="literal">domain_catalog</code>. If you want to pair up
columns with their associated data types and treat domains as
separate types, you could write <code class="literal">coalesce(domain_name,
udt_name)</code>, etc.
</p>
</div></body>
</html>
|