Como usar o SQL Row Valor Expressões

Nos padrões SQL originais, SQL-86 e SQL-89, a maioria das operações de que trata um valor único ou uma única coluna em uma linha da tabela. Para operar em vários valores, você teve que construir expressões complexas usando lógica conectivos.

SQL-92 introduzida expressões dos valores de linha, que operam em uma lista de valores ou colunas em vez de um único valor ou coluna. A expressão valor de linha é uma lista de expressões de valor que você coloque entre parênteses e separar por vírgulas. Você pode codificar essas expressões para operar em uma linha inteira de uma só vez ou em um subconjunto seleccionado da linha.

Para utilizar o INSERIR declaração para adicionar uma nova linha a uma tabela existente, a instrução usa uma expressão valor de linha. Considere o seguinte exemplo:

INSERT INTO FOODS (FOODNAME, calorias, proteínas, gorduras, hidratos de carbono) VALUES ( 'queijo, queijo cheddar', 398, 25, 32.2, 2.1) -

Neste exemplo, ( 'Queijo, queijo cheddar', 398, 25, 32,2, 2,1) é uma expressão de valor linha. Se você usar uma expressão de valor de linha em uma INSERIR declaração Desta forma, ele pode conter valores nulos e padrão. (UMA valor padrão é o valor que uma coluna da tabela assume se for especificado nenhum outro valor) A seguinte linha, por exemplo, é uma expressão de valor de linha legal.:

( 'Queijo, queijo cheddar', 398, NULL, 32,2, PADRÃO)

Você pode adicionar várias linhas a uma tabela, colocando várias expressões de valor linha na VALORES cláusula, como se segue:

INSERT INTO FOODS (FOODNAME, calorias, proteínas, gorduras, hidratos de carbono) VALUES ( 'Alface', 14, 1,2, 0,2, 2,5), ( 'Butter', 720, 0,6, 81,0, 0,4), ( 'Mostarda', 75, 4.7, 4.4, 6.4), ( "esparguete", 148, 5,0, 0,5, 30,1) -

Você pode usar expressões de valor linha para salvar-se de ter de introduzir comparações manualmente. Suponha que você tenha duas tabelas de valores nutricionais, uma compilados em Inglês e outro em espanhol. Você quer encontrar essas linhas na tabela idioma Inglês que correspondem exatamente às linhas na tabela língua espanhola. Sem uma expressão valor de linha, pode ser necessário para formular algo como o exemplo a seguir:

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

expressões valor de linha permitem que você codificar a mesma lógica, como segue:

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

Neste exemplo, você não salvar muita digitação. Você iria beneficiar um pouco mais se você estivesse comparando mais colunas. Em casos de benefício marginal como este exemplo, você pode ser melhor fora de furar com a sintaxe mais velhos, porque o seu significado é mais clara.

Você ganha um benefício usando uma expressão de valor de linha, em vez de seu equivalente codificado - a expressão valor de linha é muito mais rápido. Em princípio, uma aplicação inteligente pode analisar a versão codificada e implementá-lo como a versão valor de linha. Na prática, esta operação é uma otimização difícil que nenhum DBMS atualmente pode executar.

menu