Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 SELECT EM UMA TABELA SUMÁRIO • O comando Select • Expressões Aritméticas e Expressões em Comandos SELECT • Utilização de ALIAS, concatenação e literais • Gerando Restrições às Consultas • Operadores Lógicos e Relacionais • Ordenando Resultados de Queries A Linguaqem SQL como Padrão SQL quer dizer Structured Query Language e é o padrão mundial de acesso às bases de dados relacionais. Partes da SQL DDL Create, Alter, Drop, Rename, Truncate Permitem a criação e definição de objetos como tabelas, views e outros objetos no banco de dados. DRL Select É o comando mais comum do SQL. Utilizado amplamente para recuperação dos dados de uma base. DML Insert, Delete, Update Comandos de manipulação dos dados. Usados nas aplicações que mantém a base de informações com inserções, atualizações e deleções de dados. DCL Grant, Revoke São utilizados para atribuir ou remover direitos de acesso a objetos do banco de dados e suas estruturas. Controle de Transações Commit, Rollback, Savepoint Faz parte do padrão SQL a efetivação total, parcial ou o abandono de uma transação através da utilização destes comandos. 2 O Comando Select É o comando SQL para recuperação dos dados de uma ou mais tabelas. Pode referenciar todas ou parte das colunas de uma ou mais tabelas, além de poder restringir as linhas que serão recuperadas. Como é orientado a conjuntos, um único comando pode retornar nenhuma ou várias linhas de uma combinação de tabelas desde que satisfaçam restrições impostas. Os componentes básicos do comando são: A Cláusula SELECT • Lista as colunas que serão recuperadas • Se utilizarmos o artifício do * (asterisco) na cláusula SELECT, estaremos definindo que todas as colunas serão recuperadas. A Cláusula FROM • Define a tabela que será recuperada Veja a sintaxe abaixo: SELECT nome-col1, nome_col2, nome coln FROM [schema].nome_da_ tabela; OU SELECT * FROM [schema].nome_da_tabela ; Onde: Palavra Chave Descrição Schema É o schema onde a tabela encontra-se armazenada. Por default é o próprio schema do usuário que está manipulando. nome_da_tabela Nome da tabela que contém os dados a serem recuperados. nome_coln Nome de uma coluna a ser recuperada. * (asterisco) Recupera todas as colunas da tabela. Exemplo selecionando todas as colunas SELECT * FROM C_REGIAO; No comando acima, estaremos selecionando todas as colunas e todas as linhas da tabela C_REGIAO. Teremos uma resposta, semelhante ao quadro abaixo: 3 ID NOME ID_REGIAO ---------- --------------- ---------- 10 Financeiro 1 31 Vendas 1 32 Vendas 2 33 Vendas 3 34 Vendas 4 35 Vendas 5 41 Operações 1 42 Operações 2 43 Operações 3 44 Operações 4 45 Operações 5 50 Administrativo 1 12 linhas selecionadas. • Observe que não há nenhuma ordem ou seleção de linhas ou colunas. Exemplo selecionando colunas específicas Podemos elaborar melhor nosso comando SELECT. Veja o exemplo abaixo (comando e resultado): SELECT ID, NOME FROM CDEPTO; ID NOME ---------- --------------- 10 Financeiro 31 Vendas 32 Vendas 33 Vendas 34 Vendas 35 Vendas 41 Operações 42 Operações 43 Operações 44 Operações 45 Operações 50 Administrativo 12 linhas selecionadas...... Nota: • Neste segundo caso não é exibida a coluna ID_Região. No primeiro comando analisado, um asterisco substitui a lista de colunas desejadas, indicando a dados que todas as colunas devem ser informadas. 4 Exemplo: Mostrar o conteúdo da tabela de Produtos Repare • Dados tipo CHAR alinhados à esquerda • Dados tipo NUMBER alinhados à direita • Mostrar o conteúdo de algumas colunas de uma tabela Mostrar identificação e nome de cada produto • SELECT id,nome FROM c_produto; 5 Eliminando Valores Duplicados (Select Distinct) Ao darmos o comando Select * from c_depto podemos observar que que na tabela de Departamentos (C_depto) vários departamentos possuem o mesmo nome. Para eliminarmos esta duplicidade utilizamos a cláusula Distinct antes do nome da coluna. Observe o exemplo da figura abaixo: Observe que o nome do departamentos aparecem na ordem alfabética. Incrementando a Consulta Como efetuar consultas mais complexas e derivar dados a partir das informações contidas nas tabelas. Expressões Aritméticas Uma expressão aritmética pode conter os seguintes operadores: * multiplicação / divisão + adição - subtração Escrevendo Expressões em Comandos SELECT Posso ainda especificar não apenas uma coluna, mas um dado derivado de uma ou mais colunas. Por exemplo podemos necessitar saber o salário máximo anual dos empregados : 6 UtilIzando um ALIAS Podemos ainda dar nomes alternativos às colunas resposta de um comando SELECT através de um ALIAS. - No exemplo acima, o nome da coluna que mostra o salário anual é SALARIO*12. - Neste último caso, tal nome pode não ser significativo. Podemos, então manter o conteúdo da coluna, trocando apenas o seu nome na resposta. - Devemos definir o ALIAS após a coluna especificada, com um espaço em branco. É importante sabermos que o ALIAS é sempre escrito com UPPER CASE e não pode conter espaços em branco. - Caso seja necessário definirmos o alias com maiúsculas e minúsculas ou ainda com espaços em branco, devemos colocá-lo entre (" ") aspas. Vejamos o exemplo abaixo: ....... 7 Concatenação Podemos concatenar o resultado de várias colunas entre si, e ainda de colunas com outros valores, como constantes, expressões aritméticas, etc. O operador de concatenação é || ; Exemplo Desejamos exibir o nome completo de cada empregado Observe a colocação de um espaço em branco entre o Prim_nome e Ult_nome para que os mesmos não ficassem “colados”. Literais Tudo que não for uma coluna ou um ALIAS de coluna existente na cláusula SELECT, podendo ser uma expressão, um caracter ou um número, é considerado um LITERAL. No exemplo acima o caracter ‘Branco’ colocados entre os nome é um literal. Gerando Restrições às Consultas Ao selecionar os dados para visualização ou outra necessidade podemos, além de ordená-los, restringir o meu espectro de visualização utilizando a cláusula WHERE. A cláusula Where estabelece uma condição que a linha deverá obdecer para que faça parte do conjunto resposta da consulta. No caso apenas retornam as linhas cujo deste da condição de como resposta verdadeiro. 8 Veja o exemplo abaixo onde desejamos que retornem apenas a linhas dos empregados com ID > 5: Quando vamos trabalhar com Caracteres devemos ter alguns cuidados, o primeiro é que a palavra deverá vir entre aspas simples. De o comando abaixo: • Desejamos Mostrar primeiro nome e cargo do empregado com sobrenome NICE SELECT prim_nome,cargo FROM c_empr WHERE ult_nome = ' NICE'; 9 Repare que não foi selecionada linha alguma porque as constantes tipo CHAR são "case sensitives" de forma que letras maiúsculas e minúsculas são diferentes para perceber a diferença de o comando:. SELECT prim_nome,cargoFROM c_empr WHERE ult_nome = ' Nice'; Ao trabalharmos com datas devemos coloca-las entre aspas simples, no formato dd/mmm/aa, onde dd é o dia em dois dígitos, mmm o mês abreviado para 3 letras e aa o ano em dois dígitos Exemplo Mostrar sobrenome e senha dos empregados admitidos em 4/MAR/90 SELECT ult_nome,senha FROM c_empr WHERE dt_admissao = '4/MAR/90'; Operadores Lógicos e Relacionais Um conjunto de operadores são disponibilizados de forma que possamos montar a lógica dos nossos comandos SQL. Alguns destes operadores podem ser utilizados em quase todos os comandos SQL, não restringindo-se ao comando SELECT. 10 Vejamos a lista abaixo: = IGUAL > MAIOR < MENOR >= MAIOR OU IGUAL , <= MENOR OU IGUAL <> DIFERENTE AND E LÓGICO OR OU LÓGICO NOT NÃO LÓGICO IN CONTIDO EM (LISTA) BETWEEN ENTRE VALORES EXISTS EXISTÊNCIA LIKE STRING SEMELHANTE IS NULL Testa valores nulos Utilizando Between O operador Between And define um intervalo de valores para serem testados, por exemplo se dejamos retornar o id , ult_nome e cargo dos empregados com salários entre 1100 e 1550 inclusive podemos dar o comando abaixo: Select id, ult_nome, cargo, salario From c_empr Where salario between 1100 and 1550; Para fazer a condição inversa basta utilizarmos Not Between 11 Utilizando IN O operador IN permite definir uma lista de valores que serão utilizados em um comparação com o valor da coluna. Exemplo; Desejamos listar os departamentos das regiões 1, 3 ou 5 O Comando seria Select * From c_depto Where id_regiao in ( 1, 3, 5); Para fazer a condição inversa basta utilizarmos Not IN Utilizando Like Nem sempre é possível saber o valor exato a ser pesquisado. Pode-se selecionar linhas que coincidam com um padrão de caracteres usando o operador Like. O operação de comparação com um padrão de caracteres é chamada de pesquisa curinga. Podem ser utilizados dois símbolos para forma a string de pesquisa: % - Representando qualquer seqüência de caractes ( inclusive nenhum); _ - Representando um única caracter. Por exemplo a - Se desejamos saber o id e o ult_nome dos empregados com o ult_nome começado com P podemos dar o seguinte comando: Select ID, Ult_nome From c_empr Where Ult_nome Like’P%’; 12 b - Se desejamos saber o id e o ult_nome dos empregados que o ult_nome não tenha a letra a podemos dar o seguinte comando: Select ID, Ult_nome From c_empr Where Ult_nome Not Like’%a%’; c - Se desejamos saber o id e o ult_nome dos empregados cuja penúltima letra do ult_nome seja ‘e’ podemos dar o seguinte comando: Select ID, Ult_nome From c_empr Where Ult_nome Like’%a_’; Utilizando Is Null O operador Is Null teste valores nulos.Um valor nulo é um valor que está indisponível, não foi atribuído, é desconhecido ou inaplicável. Portanto você não pode testar com ‘ = ‘ porque um valor nulo não pode ser igual ou diferente a qualquer valor 13 Exemplo Se desejamos saber os empregados que não possuem comissão ( coluna perc_comissao om valor nulo) Select ID, utl_nome, cargo, perc_comissao From c_empr Where perc_comissao is null; Já para os que recebem Consultando Dados com várias condições Você pode especificar critérios complexos combinando várias condições de pesquisa. Os operadores AND e OR podem ser utilizados para formar expressões lógicas compostas. O operador AND retorna TRUE se ambas as condições forem verdadeiras, enquanto o operador OR retorna TRUE se uma das condições for verdadeira. Você pode ainda utilizar parentisis para estabelecer a ordem de execução dos testes 14 Exemplo Se você deseja lista os empregados que ganham mais de 1000 e tem com cargo almoxarife o comando seria Select Id, Ult_nome, Cargo, Salario From c_empr Where Salario > 1000 AND cargo = ‘Almoxarife’; Já se quisesse uma das duas condições trocariamos o AND pelo OR e o comando seria Select Id, Ult_nome, Cargo, Salario From c_empr Where Salario > 1000 OR cargo = ‘Almoxarife’; 15 Ordenando Resultados de Queries Apesar de já conseguirmos localizar e exibir os dados que nos interessam, ainda não consigo ordená-los ou limitá-los a determinada necessidade. A Cláusula ORDER BY O SQL nos permite ordenar qualquer resultado de uma consulta, através do comando ORDER BY. Quando o resultado de uma query é armazenado na memória para exibição, neste momento, o resultado pode ser definido conforme a nossa especificação de ordenação, seja por valor de uma coluna, crescente, decrescente, resultado de uma expressão, enfim, sempre podemos criar uma resultante conforme a nossa necessidade. Observe a partir de agora que, quando existente, a cláusula ORDER BY será sempre a última de um comando SQL. SELECT { * | nome da coluna [, nome da coluna ...]} FROM nome da tabela WHERE condição {AND | OR} condição ORDER BY nome da coluna [ ASC | DESC ] [, nome da coluna [ ASC | DESC] ... ] onde ASC ordena as linhas de forma ascendente; é a ordenação default. DESC ordena as linhas de forma descendente. Vejamos alguns exemplos: • Observe que agora os dados foram exibidos obedecendo a uma ordem solicitada. Neste exemplo a cláusula ORDER BY indica que as linhas selecionadas da tabela C_DEPTO devem ser ordenadas por ID_REGIAO e só então exibidas. • O padrão default de ordenação da cláusula ORDER BY é de forma crescente. 16 Ordenando de Forma Decrescente Caso seja necessária a inversão da ordem default basta utilizarmos a opção DESC. Veja o exemplo abaixo, ordenando por ID_REGIAO de forma DESC: Ordenação Múltipla Podemos também ordenar por mais de uma coluna. No exemplo podemos observar que a saída da consulta foi ordenada inicialmente por cargo, de forma ascendente ( clausula ASC é default) , e a seguir dentro de cada cargo por salário de forma descendente ( observe o DESC) Utilizando o Posicionamento para Ordenar Para colocar dados em ordem posso utilizar em vez do nome a posição da coluna que desejamos utilizar na ordenação. Dessa forma o exemplo no exemplo anterior poderíamos dar o seguinte comando: select id, ult_nome, cargo, salario from c_empr order by 3, 4 desc; onde os números 3 e 4 referem-se a terceira coluna ( cargo) e a quarta ( salário), obtendo então o mesmo resultado de consulta anterior. 17 Veja a figura SUMÁRIO Ordenando Resultados de Queries A Linguaqem SQL como Padrão Partes da SQL DDL Create, Alter, Drop, Rename, Truncate DCL Grant, Revoke OU Exemplo selecionando todas as colunas Exemplo selecionando colunas específicas Exemplo: Eliminando Valores Duplicados (Select Distinct) Incrementando a Consulta Expressões Aritméticas Escrevendo Expressões em Comandos SELECT Concatenação Exemplo Literais Gerando Restrições às Consultas Operadores Lógicos e Relacionais Utilizando Between Utilizando IN Consultando Dados com várias condições Ordenando Resultados de Queries A Cláusula ORDER BY Ordenando de Forma Decrescente Ordenação Múltipla Utilizando o Posicionamento para Ordenar
Compartilhar