• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

JPVieira

Sintaxe SQL duvida

3 mensagens neste tópico

Boas, estava a estudar Bases de Dados e deparei me com uma duvida

Encontrei esta sintaxe:

FROM R r1

e outra noutra querie diferente

SELECT a, 3

Alguem me pode explicar estas duas sintaxes? Nunca tinha visto nada igual

Talvez queiram a querie completa, aqui fica:

SELECT a,b FROM R r1

WHERE b>= ALL(SELECT b FROM R r2 WHERE r1.a=r2.a);

INSERT INTO R

    SELECT a, 3 FROM R WHERE b=2;

DELETE FROM R WHERE b=2;

Agradecia muito a ajuda, obrigado antes de mais

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O "FROM R r1" define um alias para a tabela R chamado r1, ou seja, em vez de usares o nome que deste à tabela (R1) usas um sinónimo (r1). Normalmente, usa-se quando as tabelas têm nomes grandes tipo: "UtilizadoresBiblioteca", poderias chamar apenas "ub".

No SELECT, supostamente seria o nome da coluna da tabela, mas não estou a ver uma coluna a chamar-se "3", provavelmente é outra coisa...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como o Baderous disse, o nome r1 é apenas um alias para a tabela R, podias ser escrito como FROM R AS r1, mas alguns motores aceitam que se corte a palavra reservada "AS", que é usada para definir alias.

Alias nas tabelas são usados também quando no campo FROM, possuis outros SELECT, neste caso os dados não vêm de uma tabela mas são o resultado de uma execução a uma instrução SELECT, se estiveres a usar funções de agregação, então todas as tabelas têm de ter um nome obrigatoriamente, neste caso usas um alias para dar um nome.

O 3, é apenas um valor, nesse SELECT iria ocorrer o valor do campo "a", e para cada um desses registos o valor 3. Por vezes pode dar jeito colocar valores fixos por cada linha, mas isso acontece quando os dados são tratados por uma qualquer linguagem de programação em que para facilitar, pode ser útil ter o valor na mesma linha que os restantes dados.

Tentando exemplificar:

SELECT a, b, 3, 'qualquer string', SUM(c) AS cSum
FROM tbl_tabela_com_nome_grande AS t1 LEFT JOIN (SELECT f, g, h FROM tbl_outra_tabela) AS t2 ON t1.a = t2.f
GROUP BY a;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora