Como ya sabemos, el cliente psql ofrece varias alternativas para obtener información sobre la estructura de nuestra base de datos. En la siguiente tabla se muestran algunos comandos de mucha utilidad.
Comando | Descripción |
\1 | Lista las bases de datos |
\d | Describe las tablas de la base de datos en uso |
\ds | Lista las secuencias |
\di | Lista los índices |
\dv | Lista las vistas |
\dp \z | Lista los privilegios sobre las tablas |
\da | Lista las funciones de agregados |
\df | Lista las funciones |
\g archivo | Ejecuta los comandos de archivo |
\H | Cambia el modo de salida HTML |
\! comando | Ejecuta un comando del sistema operativo |
Para obtener la lista de tablas de la base de datos demo hacemos lo siguiente:
demo=# \d
List of relations
Name |Type | Owner
---------------------+----------+--------
ganancia | table | postgres
precios | table | postgres
productos | table | postgres
productos_clave_seq | sequence | postgres
proveedores | table | postgres
(5 rows)
La estructura de la tabla productos se solicita de la siguiente manera.
demo=# \d productos
Table "productos"
Column |Type | Modifiers
--------------+---------------------+-------------------------------------------
parte |character varying(20)|
tipo |character varying(20)|
especificación|character varying(20)|
psugerido | real |
clave | integer |not null default nextval
(`"productos_clave_seq"´::text)
Primary key: productos_pkey
Triggers: RI_ConstraintTrigger_17342,
RI_ConstraintTrigger_17344
En el ejemplo anterior podemos observar que la columna clave contiene dos modificadores:
• El primero especifica que no pueden asignarse valores nulos.
• El segundo especifica el valor por omisión que deberá asignarse a la columna.
* Una secuencia es un nombre especial que permite la producción de series numéricas. |
En este caso, el valor será automáticamente calculado por la función nextval(), que toma como argumento la secuencia* productos_clave_seq.
El siguiente comando muestra las secuencias creadas en una base de datos:
demo=# \ds
List of relations
Name |Type | Owner
---------------------+----------+--------
productos_clave_seq | sequence | quiron
(1 row)
Las secuencias se crean automáticamente cuando se declaran columnas de tipo serial.
En la estructura de la tabla productos encontramos también una clave primaria. PostgreSQL generará siempre un índice para cada tabla utilizando la clave primaria. La lista de los índices de la base de datos se obtiene de la siguiente forma:
demo=# \di
List of relations
Name | Type | Owner
------------------+-------+--------
productos_pkey | index | quiron
proveedores_pkey | index | quiron
(2 rows)
El conjunto de comandos proporcionados por psql que hemos presentado permite obtener información sobre la estructura de nuestra base de datos de una manera directa y sencilla y, también, es útil para explorar bases de datos que no conozcamos.