Então pessoal, irei postar um ‘estudo/resumo’ ao qual eu fiz sobre a sintaxe SQL.
O livro ao qual me basiei foi: “Um guia para o uso do SQL – Guia de Bolso” de Jonathan Gennick – O’REILLY.
Este texto não contém parte de todo o livro, pois resolvi focar apenas na parte ao qual me interessa mais no momento.
Espero que este texto, um dia, possa ajudar alguém.
Resumo da linguagem SQL
- Expressões CASE:
Permite executar a função típica em linguagens de programação if-then-else nas sentenças de SQL.
-Expressões CASE simples:
Permite correlacionar uma lista de valores a uma lista de alternativas, por exemplo:
SELECT u.name , CASE u.open_to_public WHEN 'y' THEN 'Welcome!' WHEN 'n' THEN 'Go Away!' ELSE 'Bad code!' END AS column_alias FROM upfall u;
[Exemplo retirado do livro: SQL: Guia de Bolso, do Autor: Jonathan Gennick – ALTA BOOKS]
-Expressões CASE de pesquisa:
Permite fazer a associação de uma lista de valores de um retorno com uma lista de condições booleanas[true/false]. Por exemplo:
</pre> SELECT u.name , CASE WHEN u.open_to_public = 'y' THEN 'Welcome!' WHEN u.open_to_public = 'n' THEN 'Go Away!' ELSE 'Bad code!' END AS column_alias from upfall u; <pre>
[Exemplo retirado do livro: SQL: Guia de Bolso, do Autor: Jonathan Gennick – ALTA BOOKS]
Se nenhuma condição for verdadeira o retorno será zero(null), caso contrário, somente a primeira das condições verdadeiras no caso de ter mais uma condição, por exemplo, irá ser executada.
- Tipos de dados
Irei citar apenas os tipos que eu acho serem mais utilizados/importantes.
-String[ Cadeia de caracteres ]:
Para as plataformas a qual eu conheço, exceto o Oracle, usa-se o tipo VARCHAR para guardar uma cadeia de caracteres:
VARCHAR[tam max]
Em Oracle, adicione o 2, ficando VARCHAR2.
Os máximos de bytes em Strings são: 4.000 bytes[Oracle], 32.672 bytes[DB2], 8.000 bytes[SQL Server], 65.532 bytes[MySQL] e 10.485.760 bytes[PostgreSQL].
-Decimais:
Usa-se DECIMAL para especificar, com exceção do Oracle, onde DECIMAL é sinônimo de NUMBER. Desta forma, se utiliza NUMBER em seu lugar:
DECIMAL[precisão] ou DECIMAL[precisão, escala].
-Inteiros Binários:
SMALLINT, INTEGER ou BIGINT. Estes tipos de dados correspondem respectivamente a inteiros de 2 bytes, 4 bytes e 8 bytes.
-Data/Hora:
O tipo de dado DATA e HORA variam muito de plataforma para plataforma, portanto, recomendo olhar na documentação de cada tecnologia a qual vão utilizar.
Mas geralmente elas tem relação com algo do tipo:
TIME, TIMESTAMP ou DATE
Dependendo da plataforma os valores válidos podem estar contidos entre 4712 a.C até 9999 d.C.
- Função CAST padrão:
Usa-se a função CAST para converter explicitamente um valor em um novo tipo de dado:
</pre> <em>SELECT * FROM upfall u WHERE u.id = CAST('1' AS INTEGER);</em>
- Função EXTRACT padrão:
Em Oracle, MySQL e PostgreSQL, esta função serve para recuperar elementos específicos de um valor data/hora.
SELECT EXTRACT(DAY FROM CURRENT_DATE);
- Excluindo dados
Utilize DELETE para excluir linhas de uma tabela.
DELETE FROM data_source WHERE predicates
Obs: Quando você exclui várias linhas de uma tabela em que uma restrição de FK(chave estrangeira) de auto-referência é definida, você deve incluir uma cláusula ORDER BY em sua sentença DELETE para assegurar que as linhas-filho sejam excluídas antes de suas linhas-pai. Em conjunto a isso, utiliza-se à expressão CASE fazendo com que tenha uma ordem de exclusão, na qual as linhas-filho são excluídos primeiro.
Para remover todas as linhas de uma tabela basta não utilizar a cláusula WHERE.
Obs: Para recuperar dados excluídos, usa-se a cláusula RETURNING(Consultar no google exemplos (: .)
- Funções numéricas e matemáticas
– ABS(number) :retorna o valor absoluto do número.
– CEIL(number) :retorna o menor inteiro, maior ou igual ao número que você passa.
– EXP(number) :retorna a constante elevada à potência do número.
– FLOOR(number) :retorna o maior inteiro, menor ou igual ao número que você passa.
– LN(number) ou LOG(number) :retorna o logaritmo do número.
– MOD(top, bottom) :retorna o resto do valor top divido pelo valor botton.
– SIGN(number) :indica o sinal de um número. Possíveis retornos: -1(negativo),0(zero) e 1(positivo).
- Funções de String
-Buscando em uma String: Usa-se INSTR para encontrar a localização de um substring dentro da String
INSTR(string, substring[, position[, occurrence]])
-Substituir texto em um String: Use a função REPLACE
REPLACE(string, search, string)
Obs: Algumas plataformas suportam REGEXP_REPLACE, que é a busca e substituição de expressão regular.
-Comprimento de um String: LENGTH(string)
–Concatenação de String: CONCAT(string1, string2)
–Cortando caracteres indesejados: TRIM( character FROM string)
–Alterando a caixa das letras: UPPER(string) ou LOWER(string)
- Agrupando ou resumindo os dados
Usa-se as cláusulas GROU BY e HAVING, respectivamente, para agrupamento e resumos de dados.
– Funções para agregações:
– COUNT(x): retorna o número de valores não nulos em uma lista.
–MAX(x): retorna o maior valor de uma lista.
–MEDIAN(x): retorna o valor mediano de uma lista.
–MIN(x): retorna o menor valor de uma lista.
–SUM(X): soma todos os números de um grupo.
- Criando índices
</pre> <em>CREATE INDEX falls_name ON upfall(name, open_to_public);</em> <em> </em>
- Inserindo dados
</pre> <em>INSERT INTO pessoa(id,nome,idade) VALUES (13, ‘joão’, 89);</em> <pre>
É isso ai,
um abraço.