sql >> Base de Datos >  >> RDS >> Sqlserver

Conceptos básicos de la instrucción ALTER TABLE de SQL Server

Este artículo se centra en la declaración ALTER TABLE en SQL Server y las siguientes tareas en las tablas de SQL Server:

  1. Agregue una o varias columnas a una tabla existente.
  2. Modificar una o varias columnas de una tabla, en particular:
    • Agregue restricciones en la columna.
    • Cambie el tipo de datos de la columna.
  3. Suelte la columna de la tabla SQL.

Para fines de demostración, he creado una base de datos llamada VSDatabase que insertará los datos de los pacientes. Allí, agregué una tabla llamada tblPatients . La estructura de la tabla es la siguiente:

El siguiente es el script para crear la tabla:

Use VSDatabase
Go
create table tblpatients
(
Patient_ID varchar(10),
Patient_name varchar(50),
Address varchar(500),
City varchar(50),
AppointmentDate datetime
)

El siguiente script inserta datos ficticios en tblPatients tabla:

insert into tblpatients (Patient_ID,Patient_name,Address,City,AppointmentDate)
values
('OPD00001','Nisarg Upadhyay','AB-14, Akshardham Flats','Mehsana','2021-02-10'),
('OPD00002','Nirali Upadhyay','AB-14, Akshardham Flats','Mehsana','2021-02-11'),
('OPD00003','Manushi Bhatt ','B-50, Suramya Flats','Surat','2021-02-10'),
('OPD00004','Arjun Bhatt','B-50, Suramya Flats','Surat','2021-02-12'),
('OPD00005','Dixit Upadhyay','AB-14, Akshardham Flats','Mehsana','2021-02-09')

Ahora, comprendamos la sentencia ALTER TABLE con ejemplos.

Añadir una o varias columnas a una tabla existente

Podemos agregar una o varias columnas usando el comando ALTER TABLE. La sintaxis para agregar las columnas es la siguiente:

ALTER TABLE tbl_name ADD column_name_1 datatype, column_name_2 datatype ..

donde,

  1. nombre_tbl :especifique el nombre de la tabla en la que desea agregar una nueva columna.
  2. Tipo de datos de nombre_columna_1 :especifique el nombre de la columna y su tipo de datos. Cuando agrega varias columnas, cada una de ellas debe estar separada por una coma (,)

Ejemplo

Quiero agregar una nueva columna llamada first_name a tblPatients . Para agregar la columna, ejecutamos la siguiente consulta:

ALTER TABLE tblpatients ADD first_name VARCHAR(50)

Ahora agregamos varias columnas, el middle_name y apellido columnas a tblPatients mesa. Para hacer eso, ejecutamos la siguiente consulta:

ALTER TABLE tblpatients ADD middle_name VARCHAR(50),last_name VARCHAR(50)

Podemos consultar information_schema.columns o sys.columns tablas para comprobar las columnas recién añadidas. Las consultas son las siguientes:

Para consultar information_schema.columns :

select TABLE_NAME,COLUMN_NAME,IS_NULLABLE,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,COLLATION_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='tblpatients'

Salida:

Para consultar Sys.columns:

select object_name(object_id) [Table Name],name,max_length from sys.columns where object_id =object_id('tblpatients')

Salida:

Como puede ver, las columnas se han agregado.

Modificar las Columnas de una Tabla

Ahora queremos explorar la modificación de columnas de una tabla. Primero, tenemos que entender cómo podemos cambiar el nombre de la columna de la tabla.

Cambiar el tipo de datos de la tabla existente

La sintaxis de ALTER TABLE para cambiar el tipo de datos de la columna es:

ALTER TABLE tbl_name ALTER COLUMN column_name datatype

donde,

  • nombre_tbl :el nombre de la tabla donde necesita cambiar el tipo de datos de la columna.
  • Nombre_columna :el nombre de la columna y el tipo de datos. Debemos especificar el nuevo tipo de datos después de la palabra clave ALTER COLUMN.

Cambiemos el tipo de datos de la columna de dirección. La longitud actual de la columna Dirección es varchar(1000). Debemos cambiar la longitud de la columna a varchar(50).

La consulta para modificar el tipo de dato es la siguiente:

Alter table tblpatients alter column address varchar(50)

Cuando ejecutamos la consulta SQL, recibimos el siguiente error:

Msg 2628, Level 16, State 1, Line 1
String or binary data would be truncated in table 'VSDatabase.dbo.tblpatients', column 'Address'. Truncated value: ''.

Entonces, mientras reducimos la longitud de la columna, debemos revisar la longitud máxima del registro y, en base a eso, cambiarla. En nuestro caso, ejecutamos la siguiente consulta para identificar la longitud máxima del registro en la Dirección columna:

select len(Address) [Maximum length of column],Address from tblpatients

Salida:

Según el resultado, la longitud mínima de la columna de dirección debe ser varchar(25).

Ejecute la siguiente consulta para cambiar la longitud de la columna:

Alter table tblpatients alter column address varchar(25)

Ejecute la siguiente consulta para verificar la longitud:

select TABLE_NAME,COLUMN_NAME,IS_NULLABLE,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,COLLATION_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='tblpatients'

Salida:

Como puede ver, la longitud de la columna se ha cambiado correctamente.

Agregar restricción en la columna

Podemos agregar una restricción a la columna usando la instrucción ALTER TABLE. La sintaxis de ALTER TABLE es la siguiente:

ALTER TABLE tbl_name ALTER COLUMN column_name datatype constraint_name

donde,

  • nombre_tbl :el nombre de la tabla donde necesita cambiar el tipo de datos de la columna.
  • Nombre_columna :el nombre de la columna y el tipo de datos. Especifique el nuevo tipo de datos después de la palabra clave ALTER COLUMN.
  • Nombre_restricción :el tipo de restricción. Debe ser cualquiera de las siguientes restricciones:
    • ÚNICO
    • NO NULO
    • COMPROBAR
    • POR DEFECTO
    • CLAVE PRINCIPAL
    • LLAVE EXTRANJERA

Suponga que desea agregar un NO NULO restricción en la ciudad columna. Ejecute el siguiente ALTER TABLE declaración:

Alter table tblpatients alter column Patient_name varchar(50) not null

La sintaxis de agregar la CLAVE PRINCIPAL la restricción es diferente si desea agregar una clave principal en patient_id columna. Para agregar la restricción, ejecute la siguiente consulta:

Alter table tblpatients add primary key (Patient_ID)

Recibirá el siguiente error:

Msg 8111, Level 16, State 1, Line 17
Cannot define PRIMARY KEY constraint on nullable column in table 'tblpatients'.
Msg 1750, Level 16, State 0, Line 17
Could not create constraint or index. See previous errors.

Para corregir el error, debemos crear una restricción NOT NULL en Patient_ID columna. Ejecute la siguiente consulta:

Alter table tblpatients alter column Patient_ID varchar(50) not null

Una vez que se agrega la restricción, agregamos la clave principal ejecutando la siguiente consulta:

Alter table tblpatients add primary key (Patient_ID)

La clave principal se agregará con éxito.

Para ver la restricción en la tabla, ejecute la siguiente consulta:

SELECT OBJECT_NAME(object_id) AS ConstraintName,
SCHEMA_NAME(schema_id) AS SchemaName,
type_desc AS ConstraintType
FROM sys.objects
WHERE type_desc LIKE '%CONSTRAINT' AND OBJECT_NAME(parent_object_id)='tblpatients'

Salida:

De esta manera, se ha creado la restricción de clave principal.

Soltar una columna de la tabla

Podemos eliminar una columna usando la sentencia ALTER TABLE. La sintaxis es:

ALTER TABLE tbl_name DROP Column column_name

donde,

  • nombre_tbl :el nombre de la tabla en la que desea colocar una columna.
  • Column_name:la columna que desea quitar de la tabla.

Hemos agregado el first_name y apellido columnas a tblPatients mesa. Por lo tanto, no requerimos el patient_name columna.

Para soltar la columna, ejecute la siguiente consulta:

Alter table tblpatients drop column Patient_name

Nota: Si está eliminando una columna con una restricción PRIMARY KEY o FOREIGN KEY, debe eliminar la restricción antes de eliminar la columna.

Resumen

El artículo ha explorado el propósito de la instrucción ALTER TABLE y los casos de uso básicos. Podemos agregar, modificar y eliminar columnas de la tabla, así como también agregar restricciones en una tabla usando la instrucción ALTER TABLE. En el próximo artículo, cubriré algunas opciones de administración avanzadas.

Leer también

Comprender la instrucción ALTER TABLE ADD COLUMN de SQL Server