WHERE
Até agora neste blog todas as nossas consultas retornavam todas as linhas da tabela. Para restringirmos as nossas consultas a apenas algumas linhas, devemos utilizar a cláusula where que estende a cláusula select, ou seja, fazer uma seleção na tabela. A sintaxe é bastante básica, conforme mostramos a seguir:
SELECT * FROM tablename WHERE condições;
As condições podem ser variadas, e a partir de agora veremos nos próximos posts todas as condições que podem ser usadas para fazemos a seleção apenas das linhas que nos interessam.
Aspas Simples em Literais
No post passado vimos como utilizar caracteres literais em nossas buscas. Mas o que acontece caso agente deseje utilizar as aspas simples dentro da nossa String?
Bem, para isto existe dois métodos. Uma é utilizarmos duas aspas simples uma seguida da outra que a aspas simples aparecerá no literal conforme figura abaixo.
O outro modo é utilizarmos o quote. O operado quote nos permite escolher qual será o delimitador do nosso literal. A sintaxe da escolha do delimitador logo apos a clausula select é a seguinte:
q’DELIMITADOR’
Veja o exemplo a seguir:
Ambas as alternativas são bastantes simples. Caso o seu literal contenha bastantes aspas simples talvez seja melhor usar o quote para não poluir demais o literal. Até a próxima!
Literais e Concatenações
Antes de tudo, devemos conhecer a tabela DUAL. Esta tabela é usada para fazer operações onde nenhuma extração de dados é necessária. Podemos iniciar os nosso primeiros testes de literais utilizando a tabela DUAL em que somente uma linha é retornada.
No exemplo acima mostramos como utilizamos caracteres literais em nossas consultas, neste caso fazendo um simples select na tabela DUAL. Podemos perceber que a linha retornada é exatamente a string, ou seja, o caractere dual que criamos entre aspas simples juntamente com o Alias que aprendemos no post passado. Apenas uma linha é retornada pela tabela dual.
Caso agente deseje concatenar caracteres literais, precisamos apenas utilizar barras duplas ||. Veja a próxima figura.
Podemos misturar os nossos caracteres literais com os valores das colunas e assim tendo mais objetivo. Veja o próximo exemplo.
E assim aprendemos a utilizar caracteres literais. Dou a sugestão de vocês praticarem e verem o uso mais práticos desses literais.
Alias
No post passado vimos como fazer cálculos utilizando operadores SQL. Percebemos também que o nome da coluna em que fizemos o cálculo é exatamente a expressão que criamos. Caso agente deseje mudar esse nome da coluna para algo com mais significância, podemos utilizar um Alias que é um nome alternativo para a coluna. Podemos utilizar em todas as colunas e não somente nas expressões que calculamos. A figura abaixo mostra um exemplo disto.
Com isto o nome da coluna fica mais explicativo. Podemos perceber que o nome que colocamos ficou todo maiúsculo, caso precise que obedeça as letras maiúsculas e minúsculas devemos colocar o alias entra aspas duplas “” conforme mostrado na próxima figura.
Para ficar mais elegante o uso de alias podemos utilizar a palavra AS entre de determinar o alias. Ficaria assim:
Próximo post veremos o uso de literais.
Expressões e Operadores
O post passado agente viu como recuperar dados com a instrução SELECT e fazer projeção apenas das colunas desejadas. Neste post iremos ver como criar nossas próprias colunas com alguns cálculos utilizando expressões e operadores SQL. Para exemplificar iremos utilizar a tabela EMPLOYEES da esquema HR. Vamos fazer um calculo para saber o quanto um empregado ganha anualmente.
Fizemos um SELECT na tabela EMPLOYEES com projeção nas colunas FIRST_NAME e SALARY. Após isso criamos uma expressão utilizando o operador de multiplicação para calcular o salário anual do emprego (salary*12). Observe que o nome da coluna é a expressão que criamos, mais adiante veremos como alterar o nome dessa coluna por literais. Devemos notar também que na figura possui apenas alguns funcionários para servir de exemplo, visto que esta tabela contem cerca de 107 funcinários.
Podemos fazer uma infinidade de expressões utilizando os operadores de adição(+), multiplicação(*), divisão(/) e subtração(-). Devemos nos lembrar que a precedência dos operadores de divisão e multiplicação são maiores que o da soma e da subtração. E as expressões entre parênteses tem uma precedência maior ainda. Acredito que todos os programadores aqui já estão familiarizados com isto, lembrando que tudo é executado da esquerda para a direita.
Mas as expressões em SQL ficam ainda melhores com o uso de alias e literais que é o assunto do nosso próximo post.
Declaração SELECT
Com a instrução select mais simples podemos fazer projeção de colunas, expressões, de caracteres e de datas. A forma mais básica da declaração select é a seguinte:
SELECT * from tablename;
Esta instrução irá retornar todos os elementos da tabela escolhida. Devemos ter cuidado, pois caso a tabela seja muito grande poderá causar uma certa instabilidade. Na figura seguinte podemos ver um exemplo
E se apenas algumas colunas nos interessar e não todas, como devemos proceder? Felizmente a linguagem SQL suporta a projeção que foi o que aprendemos no post anterior, e assim podemos fazer uma projeção apenas das colunas desejadas. A declaração da instrução select fica da seguinte maneira:
SELECT column FROM tablename;
Na figura acima descrevemos primeiro a tabela jobs e escolhemos apenas a coluna que nos interessa, que no caso é a JOB_TITLE. E assim retornamos apenas essa coluna com a instrução select. Caso nos interesse mais de uma coluna, podemos fazer isso especificando o nome de várias colunas separadas por virgulas. Lembrando que a última coluna não tem virgula após ela.
No caso de o conjunto de retorno ser apenas as entradas únicas, podemos utilizar a palavra chave DISTINCT. Com essa palavra chave na instrução select as linhas duplicadas são eliminadas. Podemos ver um exemplo na tabela JOB_HISTORY. Na figura seguinte podemos perceber que a tabela contem 10 linhas, mas ai utilizarmos a palavra chave DISTINCT essa quantidade cai para apenas 8, pois existe apenas 8 valores diferentes na coluna JOB_ID.
No próximo post veremos como fazer expressões utilizando operadores SQL.
SELECT
Com certeza a instrução SELECT pode ser considerada como sendo a mais poderosa da linguagem SQL. É com esta instrução que podemos recuperar qualquer informação que esteja armazenada, apesar de tudo isto é uma instrução relativamente simples e que NUNCA altera os dados armazenados.
Devemos sempre nos lembrar de três conceitos da teoria relacional com respeito a instrução select, que são: projeção, seleção e junção.
Projeção é a restrições de colunas que serão retornadas, seleção é a restrição das linhas retornadas e junção é a iteração de uma tabela com a outra.
Primeiro veremos a projeção por ser mais simples e depois passaremos para a seleção. Antes de mais nada devemos nos lembrar que iremos utilizar o esquema HR com as suas tabelas. Para saber quais tabelas existem nesse esquema execute o seguinte comando conectado com o usuário HR:
SELECT table_name from user_tables;
O resultado será conforme mostrado na figura seguinte:
E se você desejar uma descrição estrutura de uma tabela específica deve executar o seguinte comando:
DESCRIBE ESQUEMA.tablename
Devemos fazer algumas observações do comando acima. A palavra DESCRIBE pode ser abreviada por apenas DESC. O esquema pode ser omitido caso você esteja conectado ao esquema,e tablename é o nome da tablea que gostaria de obter a descrição. Veja uma simples demonstração:
Agora podemos realizar uma consulta básica e nosso banco de dados. Isto será explicado no próximo post.













