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

¿Qué es una columna calculada en SQL Server?

En SQL Server, una columna calculada es una columna virtual que utiliza una expresión para calcular su valor.

Una columna calculada normalmente utilizará datos de otras columnas en su cálculo. Si se actualizan los datos en cualquiera de esas columnas, la columna calculada reflejará automáticamente la actualización en su cálculo.

Ejemplo de una columna calculada

+------------+-------------+------------+----------------+
| PersonID   | FirstName   | LastName   | FullName       |
|------------+-------------+------------+----------------|
| 1          | Homer       | Seinfeld   | Homer Seinfeld |
| 2          | Bart        | Costanza   | Bart Costanza  |
| 3          | Marge       | Kramer     | Marge Kramer   |
+------------+-------------+------------+----------------+

En este ejemplo, el FullName columna es una columna calculada. Concatena los valores del FirstName y LastName columnas para calcular el nombre completo.

Sin la columna calculada, si desea seleccionar el nombre completo, debe hacer algo como esto:

SELECT FirstName + ' ' + LastName AS FullName
FROM Person;

O podría usar CONCAT() función, así:

SELECT CONCAT(FirstName, ' ', LastName) AS FullName
FROM Person;

Cada vez que quisiera seleccionar un nombre completo de la tabla, necesitaría incluir la concatenación en su consulta.

Pero al usar una columna calculada como la anterior, podría hacer esto:

SELECT FullName
FROM Person;

Beneficios de las columnas calculadas

Las columnas calculadas pueden ahorrar tiempo al escribir consultas, reducir errores e incluso mejorar el rendimiento.

Las columnas calculadas pueden ser útiles si ejecuta repetidamente la misma consulta una y otra vez, especialmente si esa consulta se basa en reglas comerciales que rara vez cambian.

La columna calculada en el ejemplo anterior podría ahorrarnos mucho tiempo en el futuro, porque no necesitaremos concatenar el nombre y el apellido cada vez que queramos seleccionar el nombre completo de alguien.

Ejemplos de casos de uso

Los ejemplos de dónde podría ser útil una columna calculada incluyen:

  • Calcular la edad de una persona en función de su fecha de nacimiento en otra columna
  • Concatenar nombre y apellido, en función de que el nombre esté en una columna y el apellido en otra
  • Calcular el valor de inventario de un producto, basado en la cantidad de productos en stock en una columna y el precio en otra
  • Calcule el IMC (índice de masa corporal) de una persona, en función de su altura y peso en otra columna
  • Crear una columna de "Clasificación" que clasifique las filas en función de los valores de otras columnas
  • Cálculo de los tiempos de carrera de los corredores de maratón, en función de su hora de inicio y hora de finalización en otras columnas

Persistencia de Columnas Calculadas

Una columna calculada no se almacena físicamente en la tabla a menos que esté marcada como PERSISTED .

Si es no una columna calculada persistente, el cálculo ocurrirá cada vez que se acceda a la tabla.

Si es una columna calculada persistente, el valor calculado se almacena físicamente en la tabla. Es decir, no necesita calcular su valor cada vez que ejecuta una consulta. Si los datos se actualizan en una de las columnas de las que deriva su valor, el valor de la columna calculada se actualiza y almacena en la tabla. Esto puede ayudar con el rendimiento.

Tenga en cuenta que una columna calculada solo se puede conservar si es determinista. Si no es determinista, obtendrá un error si intenta persistir.

Un no determinista columna es aquella que devuelve valores diferentes incluso con la misma entrada. Por ejemplo, si usa la fecha actual en su cálculo, el valor será diferente cada día y se considerará no determinista.

Si simplemente está concatenando el nombre y el apellido, eso sería determinista y podría conservar esa columna.

Crear una columna calculada

Puede crear columnas calculadas desde la GUI de SSMS o con Transact-SQL.

En SSMS

En SSMS, mientras está en Diseñador de tablas , cree la columna que desea que sea la columna calculada (o simplemente selecciónela si ya existe), luego en Propiedades de columna pestaña, ingrese su fórmula en la Especificación de columna calculada campo de propiedad

No se preocupe por darle un tipo de datos a la columna calculada:SQL Server le dará un tipo de datos basado en su fórmula.

También puede seleccionar para Persiste si lo desea.

Uso de T-SQL

Consulte Crear una columna calculada en SQL Server con T-SQL para ver un ejemplo de creación de una columna calculada con Transact-SQL.