Fundamentos de Banco de Dados Prof. Gale 2º. Semestre 2008 SELECT [ALL | DISTINCT] coluna1 [,coluna2] FROM tabela1 [, tabela2] [WHERE "condições"] [GROUP BY "colunas"] [HAVING "condições"] [ORDER BY "colunas" [ASC | DESC] ] Operadores e cláusulas de Comparação = igual <> diferente != diferente > maior que !> não maior (menor ou igual) < menor que !< não menor (maior ou igual) >= maior ou igual <= menor ou igual * todos ORDER BY define a ordem ORDER BY DESC em ordem decrescente WHERE onde BETWEEN entre. Pertence ao intervalo declarado. NOT BETWEEN não pertence ao intervalo declarado. GROUP BY agrupar IS NULL testa valores nulos. Verifica, por exemplo, se colunas não contém nenhum valor armazenado. Com conteúdo nulo. IS NOT NULL testa valores não nulos. Sem conteúdo nulo. LIKE o predicado LIKE procura por strings que se encontram dentro de um determinado padrão. Este predicado só pode ser usado com tipos de dados CHAR ou VARCHAR. IN permite comparar o valor de uma coluna com um conjunto de valores. Normalmente, utilizamos o IN para substituir uma série de comparações seguidas da cláusula OR. NOT IN Não pertence ao conjunto declarado Agrupando e resumindo Dados AVG COUNT COUNT(*) Média de valores de uma expressão Número de valores em uma expressão Número de registros selecionados MAX Maior valor de uma expressão Min Menor valor de uma expressão SUM Soma dos valores STDEV Desvio padrão de todos os valores STDEVP Desvio padrão da população VAR Variância estática da seleção VARP Variância estática da população Trabalhando com Data As principais são: NOW, DATEPART, DATEADD e DATEDIFF. Um detalhe importante é que as funções de data trabalham referenciando unidades de data. As mais comuns são: . year(ano); . month(mês); . day(dia). Sql – Agrupando e resumindo Dados • Group by • Utilizado para gerar valores de resumo para uma coluna específica • Group by com a cláusula HAVING • Cláusula Having where do group by Sql – Agrupando e resumindo Dados Select productid,Sum(quantity) As total from orderhist Group by productid Select productid,orderid,quantity From orderhist Productid Orderid quantity 1 1 5 1 2 10 2 1 10 2 2 25 3 1 15 3 2 30 Productid total 1 15 2 35 3 45 Select productid,Sum(quantity) As total from orderhist Where productid = 2 Group by productid Productid total 2 35 Sql – Agrupando e resumindo Dados Select productid,Sum(quantity) As total from orderhist Group by productid Having Sum(quantity) > 30 Select productid,orderid,quantity From orderhist Productid Orderid Productid Total 1 15 2 35 3 45 quantity 1 1 5 1 2 10 2 1 10 2 2 25 3 1 15 3 2 30 Sql – Agrupando e resumindo Dados • Compute • Compute By Geram registros adicionais em um formato não relacional Select productid,orderid,quantity from orderhist order by productid,orderid compute SUM(quantity) Sql – Agrupando e resumindo Dados Select productid,orderid,quantity from orderhist order by productid,orderid compute SUM(quantity) by productid compute SUM(quantity) NOW ( ) A função NOW retorna a data e a hora atuais do sistema. SELECT NOW ( ) DATEPART ( unidade , data ) A função DATEPART retorna a parte especificada de uma data como um inteiro. Observe os exemplos: SELECT DATEPART ( YEAR , '02/01/2008' ) Reposta: 2008 SELECT DATEPART ( MONTH , '02/01/2008' ) Reposta: 2 SELECT DATEPART ( DAY , '02/01/2008' ) Reposta: 1 DATEADD ( unidade , numero_unid,data ) A função DATEADD retorna uma nova data através da soma do número de unidades especificadas pelo valor unidade a uma data. Observe os exemplos: SELECT DATEADD ( DAY ,6, '02/01/2008' ) Reposta: 2008-02-07 SELECT DATEADD ( MONTH ,6, '02/01/2008' ) Reposta: 2008-08-01 SELECT DATEADD ( YEAR ,6, '02/01/2008' ) Reposta: 2014-02-01 DATEDIFF ( unidade , data1,data2 ) A função DATEDIFF calcula a diferença entre as datas data2 e data1 , retornando o resultado como um inteiro, cuja unidade é definida pelo valor unidade . Observe os exemplos: SELECT DATEDIFF ( DAY , '02/01/2008' , '05/25/2008' ) Reposta: 114 (dias) SELECT DATEDIFF ( MONTH , '02/01/2008' , '05/25/2008' ) Reposta: 3 (meses) SELECT DATEDIFF ( YEAR , '02/01/2008' , '05/25/2010' ) Reposta: 2 (anos) Dessa forma, a expressão SQL que retorna o número de dias vivido por você até hoje é: SELECT DATEDIFF(DAY, suadata, GETDATE()) Onde suadata deve ser substituída pela sua data de nascimento. Data Formatada SELECT DATE_FORMAT('2008-06-25 22:23:00', '%d/%m/%Y %H:%i:%s');