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

Cómo agregar una columna calculada en la tabla de SQL Server - Tutorial de SQL Server / T-SQL, parte 47

Escenario:

Está trabajando como desarrollador de SQL Server para uno de los bufetes de abogados. Ha creado una tabla dbo.Customer usando la siguiente definición

CREATE TABLE Customer ( CustomerId INT Identity(1, 1) ,FirstName VARCHAR(50) ,LastName VARCHAR(50) ,Age SMALLINT ,Número de teléfono CHAR(9) ,FECHA DE NACIMIENTO ,Género CHAR(1) )

Debe tener un nombre completo que debe consistir en nombre y apellido. No desea guardar los datos duplicados en la tabla agregando una nueva columna para Nombre completo. ¿Cuáles son sus opciones?

También dependiendo de la edad, nos gustaría agregar una nueva columna llamada IsSenior y marcarla como 1 si es mayor de 65 o como 0.

Solución:

SQL Server nos proporciona la columna calculada, que es una columna virtual y no almacena datos a menos que esté marcado como persistente. Eso significa que podemos crear una columna calculada (Nombre completo) que usará los datos de Nombre y Apellido. Al crear Columna calculada, no tenemos que guardar datos duplicados para la columna Nombre completo.

Sigamos adelante y creemos Columnas calculadas Nombre completo e IsSenior según nuestros criterios.

CREATE TABLE Customer ( CustomerId INT Identity(1, 1) ,FirstName VARCHAR(50) ,LastName VARCHAR(50) ,Age SMALLINT ,PhoneNumber CHAR(9) ,DOB DATE ,Gender CHAR(1) ,FullName AS FirstName + ' ' + Apellido ,EsSenior COMO CASO CUANDO Edad> 65 ENTONCES 1 OTRO 0 FIN )
 Concatenamos el nombre y el apellido para el nombre completo y escribimos la declaración del caso para la columna de computadora IsSenior. Avancemos e insertemos un par de registros.

 insertar en dbo.Customer(FirstName,LastName,Age) Values('Aamir','Shahzad',66), ('Raza', 'M', 44)

Noté que no he insertado nada para las columnas FullName e IsSenior. Los valores de estas columnas se calcularán cuando seleccionemos los datos.

Cómo agregar columnas calculadas en la tabla de SQL Server:tutorial de T-SQL

If necesita agregar la columna calculada a la tabla de salida, puede usar la siguiente sintaxis

Alter Table SchemaName.TableName
Agregar ColumnName AS Logic (como FistName +''+LastName)

Digamos si queremos agregue la columna de computadora FullName a la tabla del cliente, podemos usar el siguiente script.
 
Eliminar la columna calculada de la tabla de SQL Server:
La sintaxis para descartar una columna calculada o normal es la misma.

Alter Table SchemaName.TableName
drop Column ColumnName

Digamos si queremos descartar Columna calculada FullName de la tabla dbo.Customer. Podemos usar el siguiente script.

Alterar tabla dbo.Columna desplegable del cliente Nombre completo