List the capabilities of SQL SELECT statements

Nesse post irei falar sobre o primeiro tópico da certificação que é o título do post. E junto com alguns testes iremos falar também então do segundo tópico da certificação que é o “Execute a Basic SELECT Statement”.

Antes de tudo, o SELECT é usado para recuperar informação armazenada em uma ou mais tabelas do banco de dados. Podendo tratar essas mesmas informações em tempo real para serem exibidas, como operações matemáticas por exemplo, conforme veremos mais adiante nesse mesmo post. Avisando desde já que não varemos detalhes específicos de cada parte do SELECT, apenas uma breve introdução e visão, mas com  o desenvolvimento de mais posts no blog iremos nos aprofundar em cada parte do SELECT.

A primeira coisa a se lembrar é que as tabelas são bidimensionais com as suas linhas e colunas.  E para isto o SELECT é capaz de fazer 3 coisas muito importantes, que são: Projection, Selection e Joining!

 

Vamos tratar da primeira parte então, Projection. Antes de começarmos então, vamos ver como é a cara do SELECT:

 

SELECT *|{[DISTINCT] column | expression [ alias ],…} FROM table ;

 

Nessa visão temos algumas opções que poderemos utilizar no SELECT, lembrando que o que está entre “[]” é opcional e veremos mais adiante para que serve, vamos ver uma visão mais básica ainda do SELECT:

 

SELECT column FROM table ;

 

A primeira parte do SELECT é justamente a lista  de seleção ou expressão que faz o papel do Projection. Um pouco mais acima nesse post vimos que a tabela é formada por linhas e colunas. E logo após a palavra reservada SELECT descrevemos então quais colunas queremos consultar nessa tabela, isso é Projection. Você escolhe apenas o que deseja ver das colunas da tabela. Antes de passarmos mais adiante veremos então um exemplo no schema HR:

 

Primeiro SELECT

Primeiro SELECT

Podemos perceber conforma imagem acima que o primeiro comando que demos foi o comando DESC ou DESCRIBE, ambos fazem a mesma coisa, que é dar uma descrição geral da tabela, que no nosso caso foi a tabela EMPLOYEES. Percebemos que a tabela tem 11 colunas junto com outras informações como o tipo de dados que é armazenado em cada coluna. Um detalhe a mais nesse comando que mostra uma coluna chamada null?. Essa coluna mostar quais colunas da tabela devem sempre ter um valor e quais podem ficar vazias. Mas ao fazermos o SELECT selecionamos apenas uma coluna que era o  nosso interesse nesse exemplo, fazer apenas um projection de uma coluna da tabela. Se quisermos selecionar mais colunas é só ir adicionando na lista de seleção separando as colunas por vírgulas, lembrando que a última coluna nessa lista não tem uma vírgula após ela. Mais adiante veremos que nessa lista de seleção podemos incluir mais coisas do que apenas colunas, como valores literais e expressões. Vamos ver agora apenas um exemplo de como ficaria o statement do SELECT com mais colunas:

 

SELECT last_name, first_name FROM employees;

 

Caso o objetivo seja todas as colunas das tabelas não é necessário digitar o nome de todas as colunas, mas apenas substituir isso tudo por: “*”, vejamos:

 

SELECT * FROM employees;

 

Com isso seria retornado todas as colunas da tabela.

Vamos adicionar um pouco mais de opções no nosso SELECT agora com as palavras reservaras DISTINCT ou UNIQUE. Ao utilizarmos uma dessas duas palavras, que fazem a mesma coisa, logo após o SELECT e antes da lista de seleção, nos fazemos com que valores repetidos não estejam no resulta da nossa consulta, vamos ver um exemplo:

DISTINCT ou UNIQUE

DISTINCT ou UNIQUE

Podemos perceber que logo no primeiro select, fizemos um projection apenas da coluna job_id da tabela job_history. Se prestarmos atenção podemos verificar que existe dois job_id repetidos, que é o AC_ACCOUNT e o ST_CLERK. No segundo SELECT inserimos a opção DISTINCT que fez com que os job_id repetidos não fosse exibidos conforme podemos verificar na imagem acima. Lembrando que o DISTINCT ou UNIQUE leva em conta o projection que fizemos e não todas as colunas das tabelas.

Além dos valores da coluna, podemos retornar valores literais que nós mesmos escolhemos e adicionamos na nossa lista de seleção. Ao adicionarmos algum valor literal de caracteres, devemos adicionar entra aspas simples ‘LITERAL’. Além desses valores literais entre aspas simples podemos utilizar operações matemáticas como multiplicação, adição e etc. Lembrando que podemos interagir com valores de colunas nessas operações matemáticas. Vamos ver um exemplo:

LITERAIS

LITERAIS

Caso sinta a necessidade de concatenar valores literais pode-se usar o operador ||  para este objetivo. E se dentro do valor literal tenha uma aspa simples? Caso seja inserido uma aspa simples isso quebraria toda a nossa query, para isto o Oracle resolve de duas maneiras. A primeira e a mais simples é que podemos adicionar uma aspa simples dentro do nosso valor literal por colocar duas aspas simples em sequência, assim irá exibir apenas uma aspa simples conforme desejado. A segunda maneira um pouco mais complexa é utilizar o operador “q”.  Para utilizarmos essa opção, inserimos no final do nosso literal a letra “q” junto com o marcador que escolher, veja um exemplo de como ficaria:

 

SELECT q'< teste de’s operador q>’ “q<>” FROM jobs;

 

Nesse exemplo de marcador do nosso literal “<>”. Mas podemos escolher qualquer outro, inclusive letras, ou apenas uma letra tanto para inciar como para finalizar o nosso literal.

Podemos perceber valores literais e operações matemáticas no resultado da nossa query. Se prestarmos um pouco mais de atenção também, iremos verificar que o nome dessas colunas é o mesmo nome na nossa lista de seleção e isso não é sempre o desejado, pois a nossa operação matemática pode ser bem grande e queremos dar um nome mais amigável. Podemos fazer isso com o uso de ALIAS. Alias é um nome que damos a nossa coluna, fazemos isso por colocarmos um nome logo após a coluna, valor literal ou expressão na nossa lista de seleção, ex:

 

SELECT job_title TITULO from jobs;

 

Ao fazemos isso o nome da coluna no resulta da query será TITULO e não JOB_TITLE. Caso o nosso alias tenha mais de uma palavra ou o desejado seja preservar as maiúsculas e minúsculas, devemos adicionar o alias entre aspas duplas “ALIAS 2”. Como uma opção também podemos adicionar a palavra AS antes do alias, isso é opcional mas ajuda a deixar a query mais legível. Caso seja feita alguma concatenação de strings com valores null eles serão ignorados, mas caso seja feita operações matemáticas com valores null  irá retornar null.

Ainda na parte de Projection, existe algumas colunas  que tem valores definidos pelo próprio Oracle que se chama pseudocolumns.  Esses valores não são armazenados junto com a tabela e essas colunas não são exibidas pelo comando DESC ou DESCRIBE, mas podemos dar um SELECT nelas. Exemplos de pseudocolumns é ROWID, que é o endereço físico da linha no sistema e o ROWNUM que é uma numeração a cada linha que o próprio Oracle dá.

Antes de finalizarmos a parte de projection, é que podemos adicionar também funções na nossa lista de seleção. Um exemplo disse é a função ADD_MONTHS que adiciona meses a data que foi informada como argumento e retorna uma nova data.

Vamos passar agora para a parte de SELECTION, na qual fazemos uma seleção de apenas as linhas que são interessantes para a nossa pesquisa. Conseguimos fazer isso por usar a palavra reservada WHERE após o nome da tabela junto com uma condição. Vamos ver um exemplo:

 

Cláusula WHERE

Cláusula WHERE

 

Com a adição da cláusula WHERE junto com uma condição, reduzimos assim os nossos resultados apenas para os funcionários que tem um salário maior que 12000. Podemos adicionar mais de uma condição no WHERE com as palavras reservadas AND ou OR.

Falta agora explicar o que seria JOINING. O Joining permite que armazenemos dados na terceira forma normal. Fazendo com que as nossas tabelas fiquem bem mais organizadas, fáceis de manter e dar suporte, além de não repetirmos dados diversas vezes pelas tabelas. A palavra reservada JOIN permite buscar dados em mais de uma tabela em um único SELECT.

Cláusula JOIN

Cláusula JOIN

 

Podemos fazer JOIN em várias tabelas simultaneamente, com o avanço do blog veremos em mais detalhes cada tipo de cláusula, função, opções e etc que vimos aqui hoje. Somente para citar mais algumas cláusulas que podemos adicionar após o WHERE:

ORDER BY – ordena os resultados de forma crescente ou decrescente conforme a coluna que especificar.

GROUP BY – agrupa valores de resultados de acordo com valores comuns entre as linhas de uma mesma coluna.

HAVING – faz a mesma coisa que o WHERE, só que para grupos (GROUP BY).

hierarchial_query_clause – estrutura o resultado em uma ordem hierárquica.

 

E por último antes de finalizarmos o post vamos mencionar a existência de uma tabela muito importante, DUAL. Essa tabela de apenas uma linha com uma coluna serve apenas para nossa ajuda, para validarmos query, fazermos testes e etc.

 

Com isso termino o post sobre os dois primeiros tópicos da certificação, o List the capabilities of SQL SELECT statements e o Execute a Basic SELECT Statement. É necessário que vocês façam testes de cada coisa que vimos aqui. Pratiquem e perguntem aqui as dúvidas e os erros que enfrentaram que farei de tudo para ajudar por aqui. Nos vemos no próximo post e mais um tópico da certificação!

Anúncios

Meu nome é Tércio Costa, sou formado em Ciências da Computação pela UFPB, tenho a certificação Oracle SQL Expert e OCP PL/SQL, mantendo um blog reconhecido pela OTN(oraclepress.wordpress.com), no qual também publico artigos técnicos no portal OTN, no portal http://www.profissionaloracle.com.br/gpo e na revista SQL Magazine. Além de tudo isto sou um Oracle ACE Associate por estar sempre contribuindo para a comunidade com um bom nível de expertise.

Marcado com: , , , , , , , , , , , , , , , , , , , , ,
Publicado em Sem categoria

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

Esse Blog é reconhecido pela
Certificações
Sou articulista

Clique para seguir este blog e receber notificações via email de novos posts.

Tércio Costa

Tércio Costa

Meu nome é Tércio Costa, sou formado em Ciências da Computação pela UFPB, tenho a certificação Oracle SQL Expert e OCP PL/SQL, mantendo um blog reconhecido pela OTN(oraclepress.wordpress.com), no qual também publico artigos técnicos no portal OTN, no portal http://www.profissionaloracle.com.br/gpo e na revista SQL Magazine. Além de tudo isto sou um Oracle ACE Associate por estar sempre contribuindo para a comunidade com um bom nível de expertise.

Links Pessoais

Serviços verificados

Visualizar Perfil Completo →

Total de Visualizações da Página
  • 138.077 Visualizações
%d blogueiros gostam disto: