Comment utiliser des expressions de valeur de ligne SQL

Dans les normes SQL d'origine, SQL-86 et SQL-89, la plupart des opérations traitées avec une valeur unique ou une seule colonne dans une ligne de table. Pour fonctionner sur plusieurs valeurs, vous deviez construire des expressions complexes en utilisant logique connecteurs.

SQL-92 introduit les expressions de valeur de la ligne, qui fonctionnent sur une liste de valeurs ou de colonnes plutôt que sur une valeur unique ou colonne. Une expression de valeur de ligne est une liste d'expressions de valeur que vous joignez entre parenthèses et séparez par des virgules. Vous pouvez coder ces expressions d'opérer sur une ligne entière à la fois ou sur un sous-ensemble sélectionné de la rangée.

Pour utiliser le INSERT déclaration à ajouter une nouvelle ligne à une table existante, la déclaration utilise une expression de valeur de ligne. Prenons l'exemple suivant:

INSERT INTO FOODS (FOODNAME, calories, protéines, lipides, glucides) VALUES ('Fromage, cheddar », 398, 25, 32.2, 2.1) -

Dans cet exemple, («Fromage cheddar», 398, 25, 32.2, 2.1) est une expression de la valeur de la ligne. Si vous utilisez une expression de valeur de ligne dans un INSERT déclaration de cette façon, il peut contenir des valeurs nulles et par défaut. (UN valeur par défaut est la valeur qu'une colonne de tableau suppose si vous spécifiez aucune autre valeur) La ligne suivante, par exemple, est une expression juridique de valeur de ligne.:




(«Fromage cheddar», 398, NULL, 32.2, DEFAULT)

Vous pouvez ajouter plusieurs lignes à une table en mettant multiples expressions de valeur de ligne de la VALEURS clause, comme suit:

INSERT INTO FOODS (FOODNAME, calories, protéines, lipides, glucides) VALUES ('Laitue', 14, 1,2, 0,2, 2,5), («beurre», 720, 0,6, 81,0, 0,4), («moutarde», 75, 4.7, 4.4, 6.4), ("Spaghetti", 148, 5.0, 0.5, 30.1) -

Vous pouvez utiliser les expressions de valeur de ligne pour vous éviter d'avoir à entrer manuellement des comparaisons. Supposons que vous ayez deux tables de valeurs nutritionnelles, compilés dans un anglais et l'autre en espagnol. Vous voulez trouver les lignes de la table de langue anglaise qui correspondent exactement aux lignes de la table de langue espagnole. Sans une expression de valeur de ligne, vous pouvez avoir besoin de formuler quelque chose comme l'exemple suivant:

SELECT * FROM FOODSWHERE FOODS.CALORIES = COMIDA.CALORIAAND FOODS.PROTEIN = COMIDA.PROTEINASAND FOODS.FAT = COMIDA.GRASASAND FOODS.CARBOHYDRATE = COMIDA.CARBOHIDRATO -

Expressions de valeur de ligne vous permettent de coder la même logique, comme suit:

SELECT * FROM FOODSWHERE (FOODS.CALORIES, FOODS.PROTEIN, FOODS.FAT, FOODS.CARBOHYDRATE) = (COMIDA.CALORIA, COMIDA.PROTEINAS, COMIDA.GRASAS, COMIDA.CARBOHIDRATO) -

Dans cet exemple, vous ne sauvegardez pas beaucoup de dactylographie. Vous souhaitez bénéficier un peu plus si vous compariez plusieurs colonnes. En cas de bénéfice marginal comme dans cet exemple, vous pourriez être mieux coller avec l'ancienne syntaxe parce que sa signification est claire.

Vous gagnez un avantage en utilisant une expression à la place de son équivalent en code de valeur de ligne - l'expression de valeur de ligne est beaucoup plus rapide. En principe, une mise en œuvre intelligente peut analyser la version codée et mettre en œuvre ce que la version de valeur de ligne. Dans la pratique, cette opération est une optimisation difficile qu'aucun SGBD peuvent actuellement effectuer.


» » » » Comment utiliser des expressions de valeur de ligne SQL