SQL - ANSI
Autor: Tiago Montezuma | Publicado: 2009-02-27T17:42:00-08:00

O SQL foi desenvolvido originalmente no início dos anos 70 nos laboratórios da IBM com o objetivo de demonstrar a viabilidade da implementação do modelo relacional, o nome original da linguagem era SEQUEL(Structured English Query Language). Embora o SQL tenha sido originalmente criado pela IBM, A partir desta criação e das modificações criadas por outrem, sentiu-se a necessidade de ser criado e adaptado um padrão para a linguagem. Esta tarefa foi realizada pela American National Standards Institute (ANSI) em 1986 e ISO em 1987.A liguagem esta basicamente divida em duas partes DDL(Data Definition Language) e DML(Data Manipulation Language), no DDL se encontram os comandos de criação, alteração de tabelas e entre outros comandos, DML é onde se encontram os comandos de consulta, inclusão, exclusão e alteração de dados.OperadoresLogicosAND - E lógico. Avalia as condições e devolve um valor verdadeiro caso ambos sejam corretos.OR - OU lógico. Avalia as condições e devolve um valor verdadeiro se algum for correto.NOT - Negação lógica. Devolve o valor contrário da expressão.Observação: Os operadores logicos são usados após a cláusula where. Ex.: select * from cliente where cliente.pessoa = 'F' and cliente.salario > 1000Relacionais < – Menor que> – Maior que<> – Diferente de<= – Menor ou Igual que>= – Maior ou Igual que= – Igual aBETWEEN – Utilizado para especificar um intervalo de valores.LIKE – Utilizado na comparação de um modelo e para especificar registros de um banco de dados."Like" + extensão % vai significar buscar todos resultados com o mesmo início da extensão.IS NULL - Utilizado para verificar se o campo se encontra sem valor algum.Observações: Os operadores relacionais são usados após a cláusula where. Ex.: select * from cliente where cliente.nome like 'T%'.(Estou solicitando ao SGBD que me retorne todos os clientes que tenham no inicio de seu nome a letra "T" como por exemplo "Tomé", "Tiago").Funções de AgregaçãoAVG – Utiliza para calcular a media dos valores de um campo determinado.COUNT – Utilizada para devolver o número de registros da seleção.SUM – Utilizada para devolver a soma de todos os valores de um campo determinado.MAX – Utilizada para devolver o valor mais alto de um campo especificado.MIN – Utilizada para devolver o valor mais baixo de um campo especificado.Observações: Toda função de agregação terá necessáriamente que ser usada junto com a cláusula group by. Ex.: Select pedido.codvendedor, count(pedido.codpedido) from pedido group by pedido.codvendedor.DML - Linguagem de Manipulação de dadosSELECT - Comando para selecionar registros de uma determinada tabela, Esse comando pode ser combinado com as funções de agregação e as clausulas abaixo citadas. Sintax: select * from [TABELA]INSERT - Comando para adicionar uma linha em uma determitada tabela. Sintax: INSERT INTO [TABELA](campo1,campo2...campoN) VALUES(:param1,:param2...:paramN)UPDATE - Comando para atualizar campo(s) existente de um registro de uma determitada tabela. Sintax: UPDATE [TABELA] SET campo1 = :param1,campo2 = :param2 WHERE [CAMPO CHAVE] = :param3DELETE - Comando para excluir um registro de uma determitada tabela. Sintax: DELETE FROM [TABELA] WHERE [CAMPO CHAVE] = :param1CláusulasFROM - Utilizada para especificar a tabela dentro do uso de uma DMLWHERE - Comando utilizado junto de uma DML para condicionar.GROUP BY - Utilizando para agrupar uma consulta especifica.HAVING - Utilizado para condicionar a cláusula GROUP BY.ORDER BY - Utilizado para ordenar uma consulta.DISTINCT - Utilizado para exibir registros sem repetição.Comando Especificos (Firebird)CASE - Utilizada para determinar o resultado de uma coluna exibindo outro resultado. Sintax: SELECT CASE CLIENTE.PESSOA WHEN 'F' THEN 'FISICA' ELSE 'JURIDICA' END FROM CLIENTENULLIF - Retorna NULL(sem valor) para uma coluna com valor especifico.Sintax: SELECT nullif(CLIENTE.NOME,'') FROM CLIENTE COALESCE - Retorna um valor especifico caso o valor da coluna seja NULL(sem valor) para uma coluna especifica.Sintax: SELECT coalesce(CLIENTE.NOME,'CLIENTE SEM NOME') FROM CLIENTE