Requisitos:
Para realizar esta práctica necesitamos un sistema operativo Linux, nosotros usaremos Ubuntu 22.04 LTS, además habremos instalado el gestor de bases de datos PostgreSQL, tutorial para instalar PostgreSQL.
Gestor PostgreSQL:
El Sistema Gestor de Bases de Datos PostgreSQL tiene web oficial y documentación en inglés PostgreSQL.
1.-Tipos de datos definidos por usuario en PostgreSQL:
1.1.- Crear un tipo de datos personalizado:
En PostgreSQL podemos crear tipos de datos complejos con atributos, para ello utilizamos la expresión CREATE TYPE.
Vamos a ver un ejemplo en el que crearemos un tipo de datos llamada persona, la cual contará con los siguientes atributos: id, nombre, primer apellido, segundo apellido y fecha de necimiento, la instrucción en PostgreSQL será:
CREATE TYPE persona AS (
id INT, nombre VARCHAR,
primer_apellido VARCHAR,
segundo_apellido VARCHAR,
fecha_nacimiento DATE
);
Para ver el listado de tipos de un esquema de la base de datos usaremos el comando de Postgres dT:
\dT
Para ver los atributos de un tipo de datos de un esquema de la base de datos usamos el comando \d nombre de clase:
\d persona
1.2.- Modificar un tipo de datos personalizado:
1.2.1.- Cambiar nombre de tipo de datos:
Para cambiar el nombre de tipo usamos la sentencia RENAME, por ejemplo vamos a cambiar el combre del tipo persona por el de cliente:
ALTER TYPE persona RENAME TO cliente;
Y la volvemos a cambiar con la sentencia:
ALTER TYPE cliente RENAME TO persona;
1.2.2.- Añadir o quitar atributos:
Para añadir un atributo a un tipo usamos la sentencia ADD ATTRIBUTE, por ejemplo vamos a añadir el atributo dni a persona:
ALTER TYPE persona ADD ATTRIBUTE dni VARCHAR;
Para eliminar un atributo de un tipo usamos la sentencia DROP ATTRIBUTE, por ejemplo vamos a eliminar el atributo dni de persona:
ALTER TYPE persona DROP ATTRIBUTE dni;
1.2.3.- Cambiar el nombre de un atributo:
Para cambiar el nombre de un atributo usamos la sentencia RENAME ATTRIBUTE, por ejemplo vamos a cambiar el nombre de los atributos primer_apellido y segundo_apellido a los de apellido1 y apellido2:
ALTER TYPE persona RENAME ATTRIBUTE primer_apellido TO apellido1;
ALTER TYPE persona RENAME ATTRIBUTE segundo_apellido TO apellido2;
1.3.- Eliminar un tipo:
Para eliminar una clase usamos la sentencia DROP TYPE:
DROP TYPE persona;
2.- Tablas que utilizan tipos de datos definidos por el usuario:
2.1 Crear una tabla que contenga tipos definidos por el usuario:
Vamos a aprovechar que tenemos el tipo persona para crear una tabla que lo utilice, como hemos borrado el tipo persona lo volvemos a crear:
CREATE TYPE persona AS (
nombre VARCHAR,
apellido VARCHAR
);
Crearemos una tabla que tenga simplemente un campo id y un campo persona, la tabla se llamará personas.
CREATE TABLE personas (
id int PRIMARY KEY, individuo persona
);
Insertamos un registro en el campo:
INSERT INTO personas VALUES (1, ('Tom','Selleck'));
Seleccionar solo los datos de tipo persona de la tabla:
SELECT individuo FROM personas;
Seleccionar solamente el campo nombre del tipo persona:
SELECT (individuo).nombre FROM personas;