
Resumen: en este tutorial, aprenderás a usar la instrucción ALTER TABLE ALTER COLUMN de SQL Server para modificar una columna de una tabla.
SQL Server te permite realizar los siguientes cambios en una columna existente de una tabla:
- Modificar el tipo de datos
- Cambiar el tamaño
- Agregar una restricción NOT NULL
Modificar el tipo de datos de la columna
Para modificar el tipo de datos de una columna, utiliza la siguiente declaración de ALTER TABLE y para agregar una columna puedes utilizar ALTER TABLE ADD:
ALTER TABLE table_name
ALTER COLUMN column_name new_data_type(size);
El nuevo tipo de datos debe ser compatible con el anterior, de lo contrario, obtendrás un error de conversión en caso de que la columna tenga datos y no se convierta.
Observa el siguiente ejemplo.
Primero, crea una nueva tabla con una columna cuyo tipo de datos sea INT:
CREATE TABLE t1 (c INT);
En segundo lugar, inserta algunas filas en la tabla con la instrucción INSERT INTO:
INSERT INTO t1
VALUES
(1),
(2),
(3);
Posteriormente, modifica el tipo de datos de la columna de INT a VARCHAR:
ALTER TABLE t1 ALTER COLUMN c VARCHAR (2);
Después, inserta una nueva fila con datos de cadena de caracteres:
INSERT INTO t1
VALUES ('@');
Enseguida modifica el tipo de datos de la columna de VARCHAR de nuevo a INT:
ALTER TABLE t1 ALTER COLUMN c INT;
SQL Server regresa el siguiente error:
Error de conversión al convertir el valor varchar '@' al tipo de datos int.
Cambiar el tamaño de una columna
La siguiente declaración crea una nueva tabla con una columna cuyo tipo de datos es VARCHAR (10):
CREATE TABLE t2 (c VARCHAR(10));
Insertemos algunos datos de muestra en la tabla t2:
INSERT INTO t2
VALUES
('SQL Server'),
('Modify'),
('Column')
Podemos aumentar el tamaño de la columna de la siguiente manera:
ALTER TABLE t2 ALTER COLUMN c VARCHAR (50);
Sin embargo, cuando reduces el tamaño de la columna, SQL Server comprueba los datos existentes para ver si puede convertir los datos en función del nuevo tamaño. Si la conversión falla, SQL Server finaliza la declaración y emite un mensaje de error.
Por ejemplo, si reduces el tamaño de la columna c a 5 caracteres:
ALTER TABLE t2 ALTER COLUMN c VARCHAR (5);
SQL Server regresa el siguiente error:
Los datos binarios o de la cadena se truncan en la columna "c" de la tabla "test.dbo.t2". Valor truncado: "".
Agregar una restricción NOT NULL a una columna que acepta valores NULL
La siguiente declaración crea una nueva tabla con una columna que acepta valores NULL:
CREATE TABLE t3 (c VARCHAR(50));
La siguiente declaración inserta algunas filas en la tabla:
INSERT INTO t3
VALUES
('Nullable column'),
(NULL);
Si deseas agregar la restricción NOT NULL a la columna c, primero debes actualizar NULL a NOT NULL, por ejemplo:
UPDATE t3
SET c = ''
WHERE
c IS NULL;
Y luego agregue la restricción NOT NULL:
En este tutorial, has aprendido a usar SQL Server ALTER TABLE ALTER COLUMN para modificar algunas propiedades de una columna existente.