Executando verificação de segurança...
0

🤔 [SQL] Select, DQL, Projections, Spring JPA - Como tudo isso se encaixa?

DQL - Data Query Language.

É o subconjunto responsável por comandos de consulta aos dados armazenados.
Dentro dele, encontramos apenas o comando Select.

É importante observar que em alguns materiais acadêmicos essa instrução aparece incorporada no conjunto DML

Select
O comando select permite fazer projeção.
Projeção é a ação de selecionar colunas.
Também permite fazer seleção de linhas (registros).

Exemplo
SELECT first_name, salary, salary * 1.15 FROM employees;

Curiosidade

Em Java com Spring JPA, muitos aprendizes ficam perdidos ao estudar JPA Projections ou criar Interfaces Projections.
Eles não sabem da onde vem esse termo projection.
Você que leu este tópico, agora sabe.

Carregando publicação patrocinada...
5

Eles não sabem da onde vem esse termo projection. Você que leu este tópico, agora sabe.

Na verdade este termo vem da Álgebra Relacional, que é a base teórica por trás do SQL. A ideia dela é trabalhar com conjuntos de tuplas:

S=\{(s_{j1},s_{j2},\ldots s_{jn})|j\in 1 \ldots m\}

Este conjunto pode ser interpretado como uma tabela com m linhas e n colunas, e são definidas operações para manipular estas tuplas.

A Projeção é uma das operações existentes. No caso, ela recebe um conjunto de "nomes de atributos" e descarta os que não estão neste conjunto, sendo portanto equivalente ao SELECT do SQL (os tais nomes seriam as colunas que indicamos ao SELECT).

Só pra confundir um pouco, na Álgebra Relacional existe outra operação chamada Seleção (ou Restrição), que apesar do nome, não é equivalente ao SELECT do SQL. Na verdade, esta operação escolhe as tuplas segundo determinados critérios, ou seja, corresponde ao WHERE do SQL. Portanto, é a Seleção (e não a Projeção) que escolhe (filtra) as "linhas".

Enfim, é daí que vem o termo :-)

1

Minha primeira vez com JPA foi tipo "Me dediquei tanto pra aprender SQL e agora tenho que aprender uma ferramenta que faz o SQL pra mim".

Por isso as vezes eu até entendo quem prefere começar pelo framework do que pela linguagem kk.

1

Corretíssimo. Quando tudo funciona redondinho SQL parece não fazer sentido. Mas quando há problemas, você entendendo a base de onde a framework se apoia, analisando o banco de dados, e/ou o retorno do erro, você sabe o que está ocorrendo.
Galera que pula o SQL, fica perdido quando erros de constraints aparecem, não entendem PRIMARY KEY, FOREIGN KEY, CHECK, estouro de campo, etc.