Dans SQL Server, une colonne calculée est une colonne virtuelle qui utilise une expression pour calculer sa valeur.
Une colonne calculée utilise généralement les données d'autres colonnes dans son calcul. Si les données de l'une de ces colonnes sont mises à jour, la colonne calculée reflétera automatiquement la mise à jour dans son calcul.
Exemple de colonne calculée
+------------+-------------+------------+----------------+ | PersonID | FirstName | LastName | FullName | |------------+-------------+------------+----------------| | 1 | Homer | Seinfeld | Homer Seinfeld | | 2 | Bart | Costanza | Bart Costanza | | 3 | Marge | Kramer | Marge Kramer | +------------+-------------+------------+----------------+
Dans cet exemple, le FullName
colonne est une colonne calculée. Il concatène les valeurs du FirstName
et LastName
colonnes pour calculer le nom complet.
Sans la colonne calculée, si vous vouliez sélectionner le nom complet, vous auriez besoin de faire quelque chose comme ceci :
SELECT FirstName + ' ' + LastName AS FullName FROM Person;
Ou vous pouvez utiliser le CONCAT()
fonction, comme ceci :
SELECT CONCAT(FirstName, ' ', LastName) AS FullName FROM Person;
Chaque fois que vous souhaitiez sélectionner un nom complet dans le tableau, vous deviez inclure la concaténation dans votre requête.
Mais en utilisant une colonne calculée comme celle ci-dessus, vous pourriez faire ceci :
SELECT FullName FROM Person;
Avantages des colonnes calculées
Les colonnes calculées permettent de gagner du temps lors de l'écriture de requêtes, de réduire les erreurs et même d'améliorer les performances.
Les colonnes calculées peuvent être pratiques si vous vous retrouvez à exécuter plusieurs fois la même requête, en particulier si cette requête est basée sur des règles métier qui changent rarement.
La colonne calculée dans l'exemple précédent pourrait nous faire gagner beaucoup de temps à l'avenir, car nous n'aurons pas besoin de concaténer le prénom et le nom chaque fois que nous voulons sélectionner le nom complet de quelqu'un.
Exemples de cas d'utilisation
Voici des exemples d'endroits où une colonne calculée peut être utile :
- Calculer l'âge d'une personne, en fonction de sa date de naissance dans une autre colonne
- Concaténation du prénom et du nom, en fonction du prénom dans une colonne et du nom dans une autre
- Calculer la valeur d'inventaire d'un produit, en fonction du nombre de produits en stock dans une colonne et du prix dans une autre
- Calculez l'IMC (indice de masse corporelle) d'une personne en fonction de sa taille et de son poids dans une autre colonne
- Création d'une colonne "Classement" qui classe les lignes en fonction des valeurs des autres colonnes
- Calculer les temps de course des marathoniens, en fonction de leur heure de début et de fin dans d'autres colonnes
Persistance des colonnes calculées
Une colonne calculée n'est physiquement stockée dans la table que si elle est marquée PERSISTED
.
Si ce n'est pas une colonne calculée persistante, le calcul aura lieu à chaque accès à la table.
Si c'est l'est une colonne calculée persistante, la valeur calculée est stockée physiquement dans la table. Cela signifie qu'il n'a pas besoin de calculer sa valeur chaque fois que vous exécutez une requête. Si les données sont mises à jour dans l'une des colonnes dont elles dérivent la valeur, la valeur de la colonne calculée est mise à jour et stockée dans la table. Cela peut améliorer les performances.
Sachez qu'une colonne calculée ne peut être conservée que si elle est déterministe. S'il n'est pas déterministe, vous obtiendrez une erreur si vous essayez de le conserver.
Un non déterministe colonne est celle qui renvoie des valeurs différentes même avec la même entrée. Par exemple, si vous utilisez la date actuelle dans votre calcul, la valeur sera différente chaque jour et elle sera considérée comme non déterministe.
Si vous concaténez simplement le prénom et le nom de famille, cela serait déterministe et vous pourriez conserver une telle colonne.
Création d'une colonne calculée
Vous pouvez créer des colonnes calculées à partir de l'interface graphique SSMS ou avec Transact-SQL.
Dans SSMS
Dans SSMS, tandis que dans Table Designer , créez la colonne que vous souhaitez utiliser comme colonne calculée (ou sélectionnez-la simplement si elle existe déjà), puis sous les Propriétés de la colonne , saisissez votre formule dans la spécification de la colonne calculée champ de propriété.
Ne vous souciez pas de donner un type de données à la colonne calculée - SQL Server lui donnera un type de données basé sur votre formule.
Vous pouvez également sélectionner Oui pour est persistant si vous le souhaitez.
Utiliser T-SQL
Voir Créer une colonne calculée dans SQL Server à l'aide de T-SQL pour un exemple de création d'une colonne calculée à l'aide de Transact-SQL.