Guia Rápido para Consultas SQL
Guia Rápido para Consultas SQL
Guia Rápido para Consultas SQL
COMANDO SELECT
SELECT simples
SELECT <LISTA_DE_CAMPOS>
FROM <NOME_DA_TABELA>
Exemplo:
COMANDO WHERE
Aqui todos os clientes que não possuem endereço ou cidade cadastrada serão
selecionados.
FILTRO DE TEXTO
Neste comando, todos os clientes cujos nomes iniciam com Maria serão
retornados. Se quisermos retornar os nomes que contenham ‘MARIA’ também no
meio, podemos alterar para:
ORDENAÇÃO
A ordenação pode ser definida com o comando ORDER BY. Assim como no
comando WHERE, o campo de ordenação não precisa estar listado como campo de
visualização:
JUNÇÃO DE TABELAS
Os produtos que não possuem componentes não são selecionados. Caso seja
necessário criar uma listagem incluindo também os registros que não possuem
correspondência, deve se utilizar o comando JOIN.
COMANDO JOIN
OUTER: Os registros que não se relacionam também são exibidos. Neste caso, é
possível definir qual tabela será incluída na seleção, mesmo não tendo
correspondência.
Para exemplificar, temos as tabelas abaixo:
A ordem das tabelas foi invertida mas o resultado é o mesmo. Observe mais
alguns exemplos:
UNION
Existe ainda uma segunda forma de juntar tabelas com o comando SELECT.
Através do parâmetro UNION, é possível colar o conteúdo de duas tabelas. Veja o
exemplo:
FUNÇÕES DE AGRUPAMENTO
AGRUPAMENTO
HAVING
Introdução
Todo programador sempre é obrigado a trabalhar com mais de uma linguagem, precisa
entender pelo menos HTML, JavaScript e sua linguagem escolhida, além da sintaxe SQL
para acesso à banco de dados.
Nos meus primeiros anos de programação SQL, sempre gastava horas pesquisando
sintaxe pelas páginas de resultado do Google e alguns comandos exóticos nunca ficavam
fixados em mente, visto que eram utilizados com freqüência muito baixa. Pensando nisso,
certo dia criei um arquivo vazio e comecei a anotar as queries menos comuns e não
menos úteis e hoje resolvi compartilhar este pedaço do meu diário de programador aqui
no Viva o Linux.com.br.
Criação de usuários
Continue acompanhando este artigo, aos poucos vou adicionando mais dicas e truques
SQL.
Atenciosamente,
Fábio Berbert de Paula
fabio@vivaolinux.com.br
SQL apresenta uma série de comandos que permitem a definição dos dados, chamada de
DDL ( Data Definition Language) , composta entre outros pelos comandos Create, que é
destinado a criação do Banco de Dados, das tabelas que o compõe, além das relações
existentes entre as tabelas. Como exemplo de comandos da classe DDL temos os
comandos Create, Alter e Drop.
A linguagem SQL tem como grandes virtudes sua capacidade de gerenciar índices, sem
necessidade de controle individualizado de índice corrente, algo muito comum nas
linguagens de manipulação de dados do tipo registro a registro.Outra característica muito
importante disponível em SQL é sua capacidade de construção de visões, que são formas
de visualizarmos os dados na forma de listagens independente das tabelas e organização
lógica dos dados.
Devemos notar que a linguagem SQL consegue implementar estas soluções, somente pelo
fato de estar baseada em Banco de Dados, que garante por si mesmo a integridade das
relações existentes entre as tabelas e seus índices.
» COMANDOS SQL
Comando Descrição
SELECT Recupera dados do Banco de Dados
INSERT Insere novas linhas, altera linhas existentes e remove linhas de tabelas do
UPDATE banco de dados, respectivamente. Estes comandos são conhecidos como
DELETE comandos DML (Data Manipulation Language).
CREATE Cria, altera e remove objetos do banco de dados. São conhecidos como
ALTER comandos DDL (Data Definition Language).
DROP
RENAME
TRUNCATE
COMMIT Gerenciam as modificações realizadas pelos comandos DML. As
ROLLBACK modificações efetuadas pelos comandos DML podem ser agrupadas em
SAVEPOINT transações lógicas.
GRANT Atribuem e removem direitos de acesso ao banco de dados e aos objetos a
REVOKE ele pertencentes. São conhecidos como comandos DCL (Data Control
Language).
Observações:
1. Operadores para comparações lógicas: = > >= <= <> 2. Outros comparadores:
o
BETWEEN ... AND ... NOT BETWEEN
u
o
IN (Lista) NOT IN
u
o
LIKE NOT LIKE
u
o
IS NULL IS NOT NULL
u
Observações:
Com esta Query recuperamos o único empregado da empresa que não é gerenciado por
ninguém, isto é, o Presidente da empresa.
Observação: O resultado da cláusula Where abaixo é sempre falso pois um valor nulo não
pode ser igual ou diferente de outro valor, mesmo que este outro valor seja nulo. Se valores
nulos forem comparados por operadores que não o "IS NULL" o resultado será sempre
falso.
- Funções de linhas
- Funções de grupos
Um função de linha retorna um resultado por linha da tabela acessada. Já uma função de
grupo retorna um resultado por grupo de registros.
Para se exibir dados de mais de uma tabela, através de um comando SQL, é preciso definir
condições de junção. (Joins)
Os joins geralmente ocorrem entre valores de chave primária e de chave estrangeira. Tipos
de Joins:
• Equijoin
• Non-equijoin
• Outer join
• Self Join
• Set operators
Funções de Grupo
Funções de grupo operam com um conjunto de linhas para dar um resultado por grupo de
linhas. Um conjunto de linhas pode ser uma tabela inteira ou linhas desta tabela divididas
em grupos.
Funções de grupo podem aparecer tanto na cláusula Select quanto na cláusula Having.
A cláusula Group By divide as linhas de uma ou mais tabelas em grupos de linhas.
A cláusula Having seleciona os grupos que serão aceitos.
• AVG
• COUNT
• MAX
• MIN
• STDDEV
• SUM
• VARIANCE
Observações:
A cláusula Distinct pode ser utilizada para que sejam considerados apenas valores não
duplicatas. Todas as funções de grupo ignoram valores nulos. Para substituir um valor nulo
por outro valor utilize a função NVL.
Observações:
A cláusula Group By
Observações:
Qualquer coluna incluída na cláusula SELECT, se não estiver em uma função de grupo,
deverá constar da cláusula GROUP BY.
Exemplo 8: A query abaixo está correta? A intenção é listar o número dos departamentos
seguido da média salarial. No entanto, deseja-se listar apenas aqueles departamentos cuja
média salarial é superior a 2000.
A cláusula Having
A cláusula WHERE deve ser utilizada para se restringir a inclusão de linhas em um grupo.
Para se omitir a inclusão de grupos inteiros do resultado de uma query deve-se utilizar a
cláusula HAVING.
Correção da query anterior com a utilização da cláusula IN uma vez que esta subconsulta
retorna mais de uma linha.
No exemplo abaixo a subconsulta é executada uma vez para cada linha da tabela de
empregados na consulta mais externa.
Quantificador Existencial
Qualquer consulta que utilize IN pode alternativamente ser formulada com EXISTS, porém
o inverso não é verdadeiro.
OU
SELECT NOME
FROM EMPREGADOS E, TRABALHAM T
WHERE E.NUMERO = T.NUMERO_EMP
AND T.NUMERO_PROJ = 2;
OU
Linhas duplicatas são eliminadas do resultado de uma união a não ser que o operador
UNION inclua explicitamente o quantificador ALL. Assim, no exemplo nº 1, o projeto nº 3
é selecionado em ambos os SELECTS, mas só aparece uma vez no resultado final.
Exemplo 1: Obter o número dos projetos que, ou se iniciaram após 31-JUL-97, ou possuem
o empregado 7566 nele trabalhando. União sem repetição.
Exemplo 2: Obter o número dos projetos que, ou se iniciaram após 31-JUL-97, ou possuem
o empregado 7566 nele trabalhando. União com repetição.
Resultado:
NUMERO CONDIÇÃO
------------ ---------------------
2 DT_INICIO > 07-JAN-90
3 DT_INICIO > 07-JAN-90
4 DT_INICIO > 07-JAN-90
3 NUMERO_EMP = 7566
No próximo artigo vamos continuar a falar sobre os comandos SQL DML (Insert, Delete e
Update).