BD 03 SQL Consultas
Texto
(2) Terminologia: •. Query (no plural “queries”) = consulta SQL.. •. Projeção = é o conceito da álgebra relacional que refere-se à definição de quais colunas (atributos) irão constituir o resultado de uma consulta — corresponde à lista de colunas a serem retornada no comando SELECT.. •. Seleção = é o conceito da álgebra relacional que refere-se à definição de quais linhas (tuplas) serão recuperadas em uma consulta — corresponde à condição de seleção da cláusula WHERE.. •. Alias (no plural “aliases”) = é um apelido, ou nome alternativo, que pode ser definido em uma consulta SQL, para uma coluna ou tabela, sendo válido apenas em tempo de execução. É definido após o nome da coluna ou tabela. OBS.: Especificamente para alias de coluna, o apelido opcionalmente pode ser precedido da palavra reservada AS (apenas para melhor clareza na escrita do comando). Pode, também, estar definido entre aspas duplas (" ") — neste caso poderá conter caracteres especiais e, inclusive, espaços em branco.. •. View (no plural “views”) = uma “visão” (view) pode ser considerada e tratada como uma tabela virtual (respeitando-se algumas limitações). Na realidade, é uma consulta SQL (comando SELECT) cuja definição fica armazenada no dicionário de dados do SGBD — ou seja, uma view comum, em si, não possui dados. Quando é feita uma consulta a uma visão, ela (em tempo de execução) retorna os dados da(s) tabela(s), conforme sua definição.. A tabela DUAL No Oracle, um comando SELECT sempre deve referencial uma tabela ou view (a cláusula FROM é obrigatória). Porém há casos nos quais não se quer recuperar os dados armazenados em uma tabela, mas sim apenas retornar o resultado de uma expressão, literal ou função. Para isso existe a tabela “DUAL”, que é uma tabela “dummy”, isto é, existe apenas para atender a uma exigência de sintaxe, mas não tem influência direta no resultado da operação. A tabela DUAL possui uma única linha — para que nessas operações também haja apenas uma linha de retorno — e é acessível a qualquer usuário do banco de dados.. Exemplos: SELECT 4504 / 99 FROM DUAL; SELECT SYSDATE FROM DUAL;. Banco de Dados – II: Consultas SQL (1ª parte). Uninove – prof. André Santos – set./2003 - rev.: out./2005 – pág. 2 / 2.
(3) Operadores Operadores são elementos (símbolos ou palavras reservadas) da linguagem que atuam sobre itens de dados e retornam um resultado, em expressões numéricas, caracteres ou com datas.. Principais operadores utilizados em expressões numéricas, caractere e com datas. Aritméticos (valores numéricos) Operador Descrição. Exemplos. -. negativo (operador unário). -1. +. positivo (operador unário). +1. /. divisão. 10 / 2. *. multiplicação. 3 * 5. +. adição (operador binário). 3 + 4. -. subtração (operador binário). 100 – 60. Aritméticos (com datas) Operador Descrição. Exemplos data_vencto – SYSDATE. -. diferença entre datas, resultando número de dias. +. adição de dias a uma data, resultando uma data posterior. SYSDATE + 30. -. subtração de dias a uma data, resultando uma data anterior. SYSDATE – 1. Caractere (texto) Operador Descrição ||. Exemplos. concatenação (2 barras verticais, “pipe pipe”). 'São ' || 'Paulo'. Principais operadores utilizados em expressões lógicas. Comparação (também chamados de operadores “relacionais” em outras linguagens) Operador Descrição Exemplos =. igual. codigo = 1 sobrenome = 'SILVA' data_cadastro = '01/09/2003'. <>. diferente. pais != 'USA'. != >. valor <> 0. maior que. pct_juros > 0.5 data_vencto > SYSDATE. >=. maior ou igual a. salario >= 1000 data_nasc >= '01/01/1970' nome >= 'A'. <. menor que. Banco de Dados – II: Consultas SQL (1ª parte). peso < 1.5. Uninove – prof. André Santos – set./2003 - rev.: out./2005 – pág. 3 / 3.
(4) qtde <= 1000. <=. menor ou igual a. IN. retorna verdadeiro se um atributo estiver contido em uma lista. estado IN ('SP','RJ','MG','ES'). retorna verdadeiro se um atributo estiver entre um intervalo especificado (limites mínimo e máximo inclusos na faixa definida):. salario BETWEEN 240 AND 1000. BETWEEN. tipo NOT IN (4, 5). dt_nasc NOT BETWEEN '01/01/1970' AND '31/12/1970'. valor BETWEEN mínimo AND máximo LIKE. nome LIKE 'MARIA%'. comparação de textos, utilizando caracteres “curinga”:. estado NOT LIKE 'R_'. % (percentual): substibui vários caracteres (porção de texto de zero a “n” caracteres). _ (sublinha, underline, underscore): substibui um único caractere. IS NULL. data_pagto IS NULL. é nulo. endereco IS NOT NULL. IS NOT NULL não é nulo. Lógicos Operador. Descrição. AND. “e” lógico. OR. “ou” lógico. NOT. Exemplos valor >= 500 AND valor <= 1000 tipo = 'A' OR valor > 1000 NOT ( tipo = 1 AND valor > 1000 ). negação lógica. Precedência na avaliação dos operadores em expressões As partes de uma expressão que estiverem entre parênteses ( ) são sempre avaliadas primeiro, dos mais internos para os mais externos. Quando não houverem parênteses, a ordem de avaliação segue conforme a precedência dos operadores: 1º) Negativo e positivo (unários): – e + 5º) negação lógica: NOT 2º) Multiplicação e divisão: * e /. 6º) “e” lógico: AND. 3º) Adição e subtração: + e –. 7º) “ou” lógico: OR. Concatenação de texto: || 4º) Operadores de comparação. Comentários Operador Descrição Comentário de linha simples. --. Exemplos -- Qualquer comentário de linha SELECT * -- o que vier será ignorado FROM DUAL;. /*. OBS.:. */. Comentário em múltiplas linhas, SELECT SYSDATE /* a função sysdate retorna a data corrente */ iniciando com /* e terminando com */ FROM DUAL;. Na ferramenta SQL Plus, uma linha iniciada com REMARK, ou simplesmente REM, também será um comentário (será ignorada).. Banco de Dados – II: Consultas SQL (1ª parte). Uninove – prof. André Santos – set./2003 - rev.: out./2005 – pág. 4 / 4.
(5) Conversões automáticas de tipos de dados em expressões No Oracle, sempre que necessário numa expressão, poderá haver conversões automáticas, implícitas, entre os tipos de dados caractere, numérico ou data — caso seja possível, ou seja, se o interpretador SQL conseguir converter em tipos compatíveis para resolver a expressão. Os operadores utilizados podem ser determinantes nessas conversões. OBS.:. Especialmente em dados do tipo date (datas), a conversão automática pode ser problemática. Um texto representando uma data, somente será convertido se estiver compatível de acordo com o formato de data da configuração corrente no SGBD.. Exemplos: SELECT '100' - 1 FROM DUAL; SELECT 'Pelé camisa ' || (5 + 5) FROM DUAL; -- Se uma tabela TESTE, a coluna COD for number e a coluna NASC for date -- o comando abaixo será efetuado com sucesso -- (DEPENDENDO se o formato da data for aceito como válido): UPDATE teste SET nasc = '20/01/1970' WHERE cod = '001';. Valor nulo (NULL) Em bancos de dados, um valor nulo expressa um dado desconhecido, um valor não definido, representa a ausência de valor — ou seja, não se deve confundir “nulo” (NULL) com o valor numérico zero ou espaços em branco ou mesmo com uma string de comprimento zero (campo de texto vazio). OBS.:. o SGBD Oracle avalia uma string de comprimento zero como sendo equivalente a nulo (apesar de, conceitualmente, serem coisas diferentes). Apesar desse tratamento peculiar, não é recomendado que consideremos da mesma forma — além disso, esse comportamento pode não ser suportado em versões futuras.. Deve-se ter cuidado com valores nulos pois, numa expressão qualquer, se existir um valor nulo, isso fará com que a expressão toda seja avaliada com nula (resultando NULL). A única exceção é em com o operador de concatenação de textos ( || ). Em expressões lógicas, não se pode utilizar os operadores de igualdade ( = ) ou desigualdade ( <> ) para testar valores nulos. Ao invés disso, deve-se usar o operador IS (IS NULL ou IS NOT NULL).. Banco de Dados – II: Consultas SQL (1ª parte). Uninove – prof. André Santos – set./2003 - rev.: out./2005 – pág. 5 / 5.
(6) Funções SQL Funções SQL (denominamos assim para diferenciar das funções definidas pelo usuário), são rotinas nativas da linguagem SQL (conforme a implementação do SGBD). Uma função SQL pode ou não receber argumentos (parâmetros), mas sempre retorna um valor (caractere, numérico, data ou nulo). Quando a função receber parâmetros, a lista de argumentos estará entre parênteses ( ) e os elementos estarão separados por vírgula (,). Funções podem fazer parte de expressões e serem chamadas diretamente em comandos SQL.. Algumas funções SQL do Oracle. Funções Matemáticas Função/sintaxe básica Descrição ROUND(n,d). Exemplos. Arredonda um valor “n”, conforme o número de casas decimais “d”.. ROUND(125.14, 1). Caso “d” não seja definido, será considerado 0 (zero), ou seja, o número será arredondado para um inteiro.. ROUND(125.16, 1). ROUND(125.15, 1). ROUND(3.5, 0) ROUND(3.5) ROUND(155, -1) ROUND(154, -1). TRUNC(n,d). Trunca um valor “n”, conforme o número de casas decimais “d”.. TRUNC(125.14, 1). Caso “d” não seja definido, será considerado 0 (zero), ou seja, o número será arredondado para um inteiro.. TRUNC(125.16, 1). TRUNC(125.15, 1). TRUNC(3.5, 0) TRUNC(3.5) TRUNC(155, -1) TRUNC(154, -1). SQRT(n). SQRT(9). Retorna a raiz quadrada do valor “n”. SQRT(1500). POWER(b,e). POWER(2, 4). Retorna a potência, de base “b” e expoente “e”. POWER(9, 0.5). MOD(n,d). MOD(10, 3). Retorna o resto da divisão n/d (“n” dividendo e “d” divisor). MOD(5, 0). Outras funções matemáticas: ABS, SIGN, SIN, COS, TAN, LN, LOG, EXP, ACOS, ATAN, FLOOR, etc.. Funções Caractere Função/sintaxe básica LOWER(t). Descrição. Exemplos. Retorna o texto em minúsculas. LOWER('MINUSCULAS') LOWER(email_cliente). UPPER(t). Retorna o texto em maiúsculas. UPPER('sp') UPPER(nome_emp). LENGTH(t). Retorna a quantidade de caracteres do texto. Outras funções caractere:. LENGTH('teste'). ASCII, CHR, INITCAP, INSTR, LPAD, LTRIM, REPLACE, RPAD, RTRIM, SOUNDEX, SUBSTR, TRANSLATE, TRIM, etc.. Banco de Dados – II: Consultas SQL (1ª parte). Uninove – prof. André Santos – set./2003 - rev.: out./2005 – pág. 6 / 6.
(7) Funções de Data/Hora Função/sintaxe básica. Descrição. Exemplos SYSDATE. Retorna a data e hora correntes do servidor. SYSDATE ADD_MONTHS(d,m). ADD_MONTHS(sysdate, 3). Retorna a data “d” mais “m” meses. Outras funções de data: LAST_DAY, MONTHS_BETWEEN, NEXT_DAY, ROUND, TRUNC, etc.. Funções de Conversão Função/sintaxe básica TO_CHAR(n,fmt) TO_CHAR(d,fmt). Descrição. Exemplos. Retorna um texto (opcionalmente com formato definido pela máscara “fmt”), correspondente a um valor numérico ou data/hora.. TO_CHAR( 10/3, '999.99') TO_CHAR(sysdate, 'dd/mm/yyyy') TO_CHAR(sysdate, 'hh24:mi:ss'). TO_NUMBER (t,fmt). Retorna um valor numérico correspondente a um texto (opcionalmente, poderá ser definida uma máscara “fmt” que irá orientar o modo de interpretar o texto a ser convertido).. TO_NUMBER('100.05'). TO_DATE(t,fmt). Retorna uma data/hora correspondente a um texto (opcionalmente, poderá ser definida uma máscara “fmt” que irá orientar o modo de interpretar o texto a ser convertido).. TO_DATE('01/02/03','dd/mm/yy') TO_DATE('20030130','YYYYMMDD'). Outras funções de conversão: CHARTOROWID, TO_SINGLE_BYTE, etc.. Máscaras de formatação: abaixo seguem alguns exemplos de máscaras de formatação (para mais detalhes consulte sobre “format models”, na documentação do Oracle). Considerar que as máscaras são sempre definidas em uma string (texto entre apóstrofos). Valor Máscara de formatação Valor apresentado 1000.5. '999999999.99'. 1000.5. 'FM999999999.99'. 1000.5. '000000000.00'. 1000.5. 'FM000000000.00'. 1000.5. '999,999,999.99'. sysdate. 'dd/mm/yyyy'. sysdate. 'dd/mm/yyyy hh24:mi:ss'. sysdate. 'day'. sysdate. 'dy'. sysdate. 'month'. sysdate. 'mon'. Funções diversas (miscelâneas) Função/sintaxe básica Descrição NVL(v,s). Outras miscelâneas:. 1000.50 1000.5 000001000.50 000001000.50 1,000.50 29/09/2003 29/09/2003 14:03:45 monday mon september sep. Exemplos. Retorna o valor “v” (caractere, numérico ou data) caso não seja nulo (NULL). Se “v” for nulo, será retornado o valor substituto “s”.. NVL(valor, 0). DECODE, NVL2, USER, USERENV, VSIZE, etc.. Banco de Dados – II: Consultas SQL (1ª parte). Uninove – prof. André Santos – set./2003 - rev.: out./2005 – pág. 7 / 7.
(8) Funções de grupo Uma função de grupo (agregação) retorna um único valor correspondente a um conjunto de linhas (ao invés de um valor para cada linha). OBS.:. Consultas mais complexas, com agrupamentos, serão vistas numa próxima etapa do estudo.. Funções de grupo Função/sintaxe básica. Descrição. Exemplos. Passando um asterisco (*) com argumento, retorna a quantidade de linhas da consulta.. COUNT(*) COUNT(x) COUNT(DISTINCT x). Se o argumento for o nome de uma coluna (ou uma expressão), irá retornar a quantidade de linhas nas quais o valor correspondente não seja nulo.. COUNT(*) COUNT(data_nasc) COUNT(DISTINCT nome). Com a palavra reservada DISTINCT, serão desconsiderados os valores repetidos, na contagem. SUM(n). Retorna a soma dos valores da coluna (ou expressão) numérica.. SUM(salario) SUM(salario * 1.10). Serão consideradas apenas as linhas da consulta nas quais o valor de “n” não seja nulo. AVG(n). Retorna a média dos valores da coluna (ou expressão) numérica.. AVG(salario) AVG(qtde * preco_unit). Serão consideradas apenas as linhas da consulta nas quais o valor de “n” não seja nulo, tanto na soma quanto na divisão para obtenção da média. MIN(x). Retorna o mínimo valor (caractere, numérico ou data) da coluna (ou expressão).. MIN(data_nasc). Valores nulos não são considerados. MAX(x). Retorna o máximo valor (caractere, numérico ou data) da coluna (ou expressão).. MAX(salario) MAX(nome). Valores nulos não são considerados. Outras de grupo:. STDDEV, VARIANCE, etc.. Banco de Dados – II: Consultas SQL (1ª parte). Uninove – prof. André Santos – set./2003 - rev.: out./2005 – pág. 8 / 8.
(9)
Documentos relacionados
Seguindo o protocolo, foram analisados os seguin- tes itens nas explorações: 1) músculo platisma; 2) muscu- lo omoióideo (ventre inferior); 3) gânglios cervicais pro- fundos;
de lavagem da cana Interna Contato com água Concreto Ambiente C Caixa de vinho Externa Exposição atmosfrica Aço carbono 80ºC A Caixa de vinho Interna Contato com
a) velocidade da chuva em relação ao solo; b) velocidade da chuva em relação ao carro. A haste encontra-se ini- cialmente em repouso, com o seu comprimento ao longo da
Para isso em quatro experimentos foram avaliadas: as características fisiológicas de cultivares de mandioca após a aplicação do mesotrione; a interferência do
Diversidade sexual na escola: currículo e prática pedagógica / Alexandre Bortolini ; orientadora: Vera Maria Candau.. Candau,
Pesquisas empíricas (Nicolau, 2002 a) mostram que o sistema eleitoral de lista aberta utilizado no Brasil gera, para os eleitores, a idéia de uma disputa personalizada entre cada
Atente-se aos exercícios explicativos de cada conteúdo desenvolvido nas aulas on-line, bem como as atividades semanais e/ou quinzenais do caderno!!..
Iguatemi São Paulo: As Receitas de Aluguéis cresceram 8,5% principalmente por um Aluguel Mínimo maior, devido a.. reajuste