Buenos días postgreseros y postgreseras, bienvenidos a nuestra entrada semanal. En esta ocasión aprenderemos a utilizar un comando muy importante dentro de PostgreSQL; PostgreSQL – alter.
Pongámonos en situación, puede darse el caso de que tengamos que realizar algunas modificaciones en nuestra estructura de datos, en las tablas que tenemos creadas y que incluso contiene información. Pues esto es posible sin perder ningún valor utilizando un comando de SQL, ALTER TABLE.
Con el comando ALTER TABLE podemos realizar modificaciones en nuestras tabla, tales como: añadir nuevas columnas, renombrar la estructura o cambiarle el tipo de dato. Es posible que algunas de las modificaciones no se puedan llevar a cabo porque dependan de otro objeto y en otras ocasiones, dependiendo de la cantidad de información que tengamos almacenada en dicha tabla, quizá realizar esa modificación sea demasiado lento.
¿Quieres ser un profesional trabajando como Administrador de Bases PostgreSQL? ¿Ampliar tus conocimientos? Mira nuestro listado de Carreras para PostgreSQL.
Cambiar el nombre de una tabla (RENAME)
Podemos cambiar el nombre de la propia tabla, de una o varias columnas y de las constraint. En las siguientes líneas se muestra la forma de realizar estas modificaciones.
Si quieres hacerte un experto en PostgreSQL mira el listado de Carreras disponibles.
Para saber más sobre tablas, seguramente te interese nuestro Curso de métodos avanzados de creación de tablas.
Modificar el nombre de una tabla:
ALTER TABLE nombre_actual RENAME TO nuevo_nombre;
Para modificar varias columnas, hay que realizarlo cada columna por separado. Se puede omitir la palabra reservada COLUMN. A continuación se muestra la sentencia y un ejemplo donde se renombran dos de sus tres columnas:
ALTER TABLE nombre_tabla RENAME COLUMN actual_nombre_columna TO nuevo_nombre_columna;
También se puede modificar el nombre de las restricciones de la siguiente forma. En este caso hay que incluir la palabra reservada CONSTRAINT.
ALTER TABLE nombre_tabla RENAME CONSTRAINT actual_nombre_restriccion TO nuevo_nombre_restriccion;
Modificar campos (ADD & DROP)
Podemos modificar la estructura de la tabla añadiendo más columnas o eliminando las actuales. No es necesario escribir la palabra reservada COLUMN en ninguno de estos dos casos. Hay tener especial cuidado cuando se eliminan las columnas, pues evidentemente también se eliminan todos los valores correspondiente a ese campo.
ALTER TABLE nombre_tabla ADD COLUMN nombre_columna tipo_de_dato;
ALTER TABLE nombre_tabla DROP COLUMN nombre_columna;
En el siguiente ejemplo se muestra que es posible añadir o eliminar más de una columna en una sola sentencia.
Cambiar el tipo de dato (SET DATA TYPE)
En principio podemos cambiar el tipo de dato de una columna sin problemas, aunque en algunos casos nos dará un error por el contenido de los registros. Las palabras reservadas COLUMN y SET DATA se pueden omitir.
ALTER TABLE nombre_tabla ALTER COLUMN nombre_columna SET DATA TYPE tipo_de_dato;
Como podemos ver en el siguiente ejemplo, se puede cambiar sin problema una columna que era del tipo entero a un tipo texto. Ahora no se podrán realizar operaciones matemáticas sobre la columna “numero”.
En cambio no es posible modificar una columna cuyo tipo de dato es un texto a un tipo de dato numérico. Sin embargo, si la información que tenemos almacenada en la columna de tipo texto son caracteres numéricos (no se puede hacer cálculos), es posible convertir dicha columna a un tipo entero indicando la conversión implícita.
Como se puede observar no es posible en caso de contener valores del alfabeto, incluso escribiendo la conversión implícita, pues se trata de una sintaxis no valida.
Realmente el tipo de datos SERIAL no existe, se trata de un número entero y una secuencia que se crea de forma automática para insertar el siguiente valor en la columna. Por lo que no es posible cambiarle a una columna el tipo de dato actual, ya sea un TEXT O INTEGER al tipo de dato SERIAL.
En este caso debemos de cambiar el tipo de dato existente en la columna que queremos modificar, por un tipo INTEGER y que su valor por defecto sea una secuencia que debemos de crear anteriormente de forma manual. De esta forma los valores de dicha columna es un número auto-incrementado.
Esto ha sido todo lo que tenemos en la entrada de hoy, en la que hemos aprendido a modificar nuestras tablas y sus componentes mediante el comando alter.
Tal vez te interesen nuestros Cursos de PostgreSQL, donde puedes encontrar todo lo que necesitas saber sobre esta popular Base de Datos.
Les esperamos la próxima semana con una nueva entrada en el portal de PostgreSQL más importante del mundo hispano.