Agregar una nueva columna entre dos columnas en SQLite

Junaid Khan 21 junio 2023
  1. Agregar una nueva columna a la base de datos SQLite existente
  2. Crear una nueva tabla con columnas actualizadas
  3. Enfoques ALTER TABLE ADD COLUMN en diferentes bases de datos
Agregar una nueva columna entre dos columnas en SQLite

En la base de datos SQLite, almacenamos datos dentro de las tablas. Cada tabla contiene filas y columnas para mantener los datos.

La columna representa los atributos de la base de datos, mientras que las filas representan el registro en cada línea. Durante el ciclo de vida de una base de datos, si queremos insertar o agregar una nueva columna a la base de datos existente, tenemos múltiples opciones para adoptar y trabajar en ella.

Una de las opciones es insertar una nueva columna en la base de datos existente o crear una nueva tabla con columnas actualizadas, copiar los datos dentro de las filas y eliminar la tabla anterior.

Agregar una nueva columna a la base de datos SQLite existente

Para insertar una nueva columna en la base de datos, usamos la siguiente sintaxis del comando ALTER TABLE para obtener el resultado deseado. Aquí, debemos mencionar el nombre de la tabla y que queremos agregar una nueva columna.

En la siguiente línea, debemos especificar la definición de la columna después del comando AÑADIR COLUMNA.

ALTER TABLE name_of_the_table
ADD COLUMN new_column type_of_column;

La definición de columna se define de la siguiente manera.

name_of_the_column type_of_data constraint;

Mirando la declaración SQL anterior, agregamos una sola columna a la base de datos. Sin embargo, usamos los siguientes comandos SQL si queremos agregar varias columnas nuevas a la tabla SQL.

ALTER TABLE name_of_the_table
ADD COLUMN new_column1_definition,
ADD COLUMN new_column2_definition;

Tome un ejemplo de la tabla de un cliente, que tiene 4 columnas: customer_id como clave principal, c_first_name, c_last_name y c_email del cliente. La descripción de la mesa del cliente es la siguiente.

CREATE TABLE customers (
    customers_id INT PRIMARY KEY,
    c_first_name VARCHAR(40) NOT NULL,
    c_last_name VARCHAR(40) NOT NULL,
    c_email VARCHAR(100) NOT NULL UNIQUE
);

Un nuevo requisito es agregar una nueva columna, phone_number, a la tabla clientes. Para realizar esta tarea, necesitamos usar el comando ALTER TABLE para proporcionar el nombre de la tabla para agregar la nueva columna.

En la siguiente línea, se necesita el comando AGREGAR COLUMNA para agregar una nueva definición de columna que contenga el nombre de la columna y su tipo.

ALTER TABLE customers
ADD COLUMN phone_number VARCHAR(35);

De manera similar, si queremos insertar varias columnas nuevas en la base de datos SQL, debemos usar explícitamente el comando AÑADIR COLUMNA para cada columna nueva. Aquí, hemos agregado tres nuevas columnas a la base de datos de clientes: c_mailing_address, c_dob, y c_social_media_account.

Este enfoque agrega las nuevas columnas al final de una tabla, no entre las columnas actuales.

Recuerde, hay diferentes sintaxis para usar el comando ALTER TABLE en diferentes bases de datos, mientras que el enfoque es el mismo.

ALTER TABLE customers
ADD COLUMN c_mailing_address VARCHAR(155),
ADD COLUMN c_dob DATE,
ADD COLUMN c_social_media_account VARCHAR(255);

Crear una nueva tabla con columnas actualizadas

La segunda opción es crear una nueva tabla con la columna que falta y un nombre temporal. Este enfoque coloca la columna en la posición y secuencia correctas.

Luego, copie todos los registros de la tabla anterior a la nueva tabla y elimine la tabla anterior. Más tarde, cambie el nombre de la nueva tabla al nombre de la tabla eliminada.

Crear una tabla con un nombre temporal

El paso inicial es crear una nueva tabla con un nombre temporal con los mismos nombres de columna que las columnas de la tabla anterior. Los mismos nombres de columna son necesarios ya que debemos copiar todos los registros de la tabla anterior a la nueva.

CREATE TABLE {NewTableTemporaryName}
(n_name TEXT, COLNew {type} DEFAULT {defaultValue}, quantity INTEGER, n_rate REAL);

Copie los datos de la tabla anterior

En el segundo paso, necesitamos copiar los registros de la tabla anterior a la tabla recién creada con las mismas columnas. El comando INSERT INTO nos ayuda a insertar todos los datos que proporciona la cláusula SELECT.

INSERT INTO {NewTableTemporaryName}
(n_name, n_quantity, n_rate) SELECT n_name, n_quantity, n_rate FROM Old_Table;

Eliminar o soltar la tabla anterior

En el siguiente paso, una vez que copiamos todos los registros (filas) de la tabla anterior a la nueva, debemos eliminar o descartar la anterior. La razón es que ya no necesitamos los registros de la tabla anterior.

DROP TABLE Old_Table;

Cambiar el nombre de la nueva tabla con el nombre de la tabla anterior

El último paso es cambiar el nombre de la nueva tabla con el nombre de la tabla anterior. Este es un enfoque mucho mejor, ya que nos permite cambiar el nombre de todo según el requisito.

Después del último paso, tenemos una tabla con un nombre requerido, columnas actualizadas y todos los registros dentro de ella.

ALTER TABLE {NewTabletemporaryName} RENAME TO Old_Table;

Enfoques ALTER TABLE ADD COLUMN en diferentes bases de datos

Ya hemos visto cómo utilizar el comando AÑADIR COLUMNA para insertar columnas en las tablas existentes. Esta sección detalla cómo usar la sintaxis ALTER TABLE ADD COLUMN en diferentes bases de datos.

Estas bases de datos incluyen PostgreSQL, MYSQL, Oracle, SQL Server, SQLite y BD2.

postgresql

ALTER TABLE name_of_the_table
ADD COLUMN column_definition;

mysql

ALTER TABLE name_of_the_table
ADD [COLUMN] column_definition;

Oráculo

ALTER TABLE name_of_the_table
ADD column_definition;

servidor SQL

ALTER TABLE name_of_the_table
ADD column_definition;

SQLite

ALTER TABLE name_of_the_table
ADD COLUMN column_definition;

DB2

ALTER TABLE name_of_the_table
ADD column_definition;
Junaid Khan avatar Junaid Khan avatar

Hi, I'm Junaid. I am a freelance software developer and a content writer. For the last 3 years, I have been working and coding with Python. Additionally, I have a huge interest in developing native and hybrid mobile applications.

LinkedIn

Artículo relacionado - SQLite Column