Este documento fornece um resumo sobre SQL (Structured Query Language). SQL é usado para comunicação com bancos de dados relacionais e possui três subconjuntos principais: DML para manipulação de dados, DDL para definição de dados e DCL para controle de dados. O documento explica comandos como SELECT, INSERT, UPDATE, DELETE e funções como WHERE, GROUP BY e JOIN.
2. O que é SQL?
• Structured Query Language;
• Desenvolvido no início dos anos setenta;
• Usado para a comunicação com base de dados;
• Padrão para a administração de base de dados
relacional;
• Três subconjuntos: DML, DDL e DCL;
3. DML
• Data Manipulation Language;
• Manipulação de Dados;
• SELECT;
• INSERT;
• UPDATE;
• DELETE;
4. SELECT
• Principal comando da DML;
• Permite ao usuário especificar uma consulta com uma
descrição do resultado desejado;
• Composto por várias cláusulas e opções;
• Sintaxe:
SELECT [ALL | DISTINCT ] - Seleciona colunas
{* | [[user.].table.column | expression,...]}
FROM table_name ,[table2] - Define tabelas
[WHERE] condition - Restringe linhas
[GROUP BY] ..... - Agrupamento
[HAVING] ..... - Restringe linhas de grupo
[ORDER BY] ..... - Ordena o resultado
5. • SELECT * FROM empregado;
• SELECT dt_nasc AS “Data de Nascimento” FROM pessoa;
• SELECT cod_emp, salario, salario * 1.30 AS "Novo Salário"
FROM empregado;
Exemplo de consulta SQL, mostrando cálculos matemáticos
sobre colunas.
Cod_Emp Salario Novo Salário
5200 1200 1560
4600 1500 1950
5100 5000 6500
6. Cláusulas
As cláusulas são condições de modificação utilizadas para definir os dados
que deseja selecionar ou modificar em uma consulta.
Cláusulas e seus significados.
Palavra Significado
DISTINCT Seleciona os dados sem repetição.
FROM Especifica a(s) tabela(s) que vão selecionar os registros.
WHERE Especifica as condições que devem reunir os registros que serão
selecionados.
GROUP BY Separa os registros selecionados por grupos específicos.
HAVING Expressa a condição que deve satisfazer cada grupo.
ORDER BY Ordena os registros selecionados com uma ordem especifica. Por
padrão o default é ASC.
UNION Combina os resultados de duas consultas SQL em uma única
tabela para todas as linhas correspondentes.
7. WHERE - Condições de Busca
Operador Significado
AND E
OR OU
NOT Negação
Operadores Lógicos
Operador Significado
< Menor
> Maior
<= Menor ou igual
>= Maior ou igual
= Igual
<> Diferente
Operadores Relacionais
Palavra Significado
IS NULL Verificar se o valor é nulo, isto é, (NULL).
BETWEEN Verifica o valor dentro de um intervalo.
IN Verifica se o valor procurado está dentro de uma lista.
LIKE Verifica colunas baseando-se em uma combinação de caracteres.
8. WHERE exemplos (1/4)
• SELECT nome_emp, salario FROM empregado WHERE
cod_dept = 5100;
• SELECT nome_emp, salario FROM empregado WHERE salario
> 5000;
• SELECT nome_emp, salario FROM empregado WHERE salario
>= 5000;
• SELECT nome_emp, salario FROM empregado WHERE salario
<= 5000;
• SELECT nome_emp, salario FROM empregado WHERE NOT
salario = 5000 (ou salario <> 5000);
9. WHERE exemplos (2/4)
• SELECT nome_emp, salario FROM empregado WHERE salario
IS NULL;
• SELECT nome_emp, salario FROM empregado WHERE salario
IS NOT NULL;
• SELECT nome_emp, salario FROM empregado WHERE salario
BETWEEN 5000 AND 6000;
• SELECT nome_emp, salario FROM empregado WHERE salario
NOT BETWEEN 5000 and 6000;
• SELECT nome_emp, salario FROM empregado WHERE salario
IN (1200, 1500);
10. WHERE exemplos (3/4)
• SELECT nome_emp FROM empregado WHERE nome_emp IN
('JOÃO','MARIA');
• SELECT nome_emp FROM empregado WHERE nome_emp LIKE
'J%';
• SELECT nome_emp FROM empregado WHERE nome_emp LIKE
'%O';
• SELECT nome_emp FROM empregado WHERE nome_emp LIKE
'%O%';
• SELECT nome_emp FROM empregado WHERE nome_emp LIKE
'_A%';
• SELECT nome_emp FROM empregados WHERE NOT LIKE 'J%';
11. WHERE exemplos (4/4)
• SELECT nome_emp, salario FROM empregado WHERE salario
* 1.30 > 1800;
• SELECT nome_emp FROM empregado WHERE salario > 1000
AND cod_dept = 5100;
• SELECT nome_emp FROM empregado WHERE salario > 1000
OR cod_dept = 5100;
• SELECT nome_emp FROM empregado WHERE salario > 1000
AND cod_dept = 5100 OR nome_emp = 'MARIA';
12. Funções de Agregação
As funções de agregação são usadas dentro de uma
cláusula SELECT em grupos de registros para devolver
um único valor que se aplica a um grupo de registros.
Função Significado
AVG Retorna a média dos valores de uma coluna determinada.
COUNT Retorna o número de registros de uma seleção.
SUM Retorna a soma de todos os valores de uma coluna determinada.
MAX Retorna o valor mais alto de uma coluna determinada.
MIM Retorna o valor mais baixo de uma coluna determinada.
13. WHERE + Função de Agregação
• SELECT MIN (salario) AS "Menor salário“ FROM empregados
WHERE cod_dept = 5100;
• SELECT COUNT(telefone) AS "Empregados com Telefone”
FROM empregados WHERE cod_dept = 5100;
• OBS.: Se você especificar um nome de coluna no COUNT,
unicamente linhas contendo valores (NOT NULL) serão
contadas. Quando você usa COUNT(*), todas as linhas serão
contadas.
14. GROUP BY / HAVING
• Para sumarizar informações de um grupo em linhas, use a cláusula GROUP BY
seguida da coluna que contém valores para ser agrupados juntos.
• Ex.: SELECT cod_dept, count(*) as "total” FROM empregados GROUP BY
cod_dept;
• HAVING permite adicionar uma condição para cada grupo;
• Tem o mesmo comportamento do WHERE;
• Esta cláusula é usada para eliminar grupos do resultado, assim como usa o
WHERE para eliminar linhas.
• Ex.: SELECT cod_dept, count(*) AS "total” FROM empregados GROUP BY
cod_dept HAVING COUNT(*) > 1;
Cod_Dept Total
4600 1
5100 2
5200 1
15. Acessando múltiplas tabelas (JOIN)
• Para ligar duas tabelas, você precisa associar uma ou mais colunas da
tabela com uma ou mais colunas da segunda tabela;
• Exemplo:
SELECT cod_emp, nome_emp, cod_dept, nome_dept
FROM empregados, departamentos
WHERE empregados.cod_dept = departamentos.cod_dept;
Cod_emp Nome_emp Cod_dept Nome_dept
2898 PEDRO 5100 INFORMÁTICA
2899 MARIA 5100 INFORMÁTICA
2096 JOÃO 5200 MARKETING
2437 CARLOS 4600 MANUTENÇÃO
16. UNION
• Usado para unir o resultado de duas ou mais consultas;
• O total de colunas e o tipo das colunas envolvidas nas
consultas devem ser iguais.
• Ex.:
SELECT emp.cod_emp, emp.nome_emp FROM empregados
emp WHERE emp.cod_emp = 2898
UNION
SELECT emp.cod_emp, emp.nome_emp FROM empregados
emp WHERE emp.cod_emp = 2899;
17. INSERT
• Inserir uma tupla em uma tabela existente no banco de dados.
• Sintaxe:
INSERT INTO [tabela] ([valor],[valores]) VALUES
([valor],[valores]);
• Exemplos:
INSERT INTO Departamento VALUES (200, ‘Financeiro’);
INSERT INTO Departamento (id_departamento, descricao)
VALUES (300, ‘RH’);
18. Inserindo linhas através de um
SUBQUERY
• Podemos inserir linhas oriundas de um resultado de um
SUBQUERY .
• Sintaxe:
INSERT INTO table_name [(column,column...)]
SUBQUERY
• Exemplo:
INSERT INTO departamento_copia (cod_dept, nome_dept )
(SELECT cod_dept,nome_dept FROM departamento);
19. UPDATE
• Usado para alterar os valores de dados em uma ou mais
linhas da tabela existente;
• Modifica linhas específicas, se a cláusula WHERE for
especificada.
• Sintaxe:
UPDATE [tabela] SET [atributo] = [novo valor], [atributo] =
[novo valor] WHERE {Condição [atributo] = [valor]};
• Exemplo:
UPDATE Pessoa SET nome = ’beltrano’ WHERE id_pessoa = 1;
UPDATE Empregados SET salario = salario * 1.30 WHERE
salario < 1300;
20. DELETE
• Usado para remover linhas de uma tabela existente.
• Sintaxe:
DELETE FROM [tabela] WHERE {Condição [atributo] =
[valor]};
• Exemplo:
DELETE FROM pessoa WHERE id_pessoa = 2;
DELETE FROM empregados WHERE salario < 1300;
21. Controles de Transação
• COMMIT
• Finaliza a transação;
• Libera o bloqueio de transações;
• Sintaxe: COMMIT;
• ROLLBACK
• Cancela todas as alterações efetuadas na corrente sessão;
• Cancela mudanças completadas, mas não submetidas ao BD,
deixando assim o BD como se tais mudanças nunca tivessem
sido feitas;
• Sintaxe: ROLLBACK;
22. DDL
• Data Definition Language;
• Definição de novas tabelas e elementos
associados às mesmas;
• CREATE, ALTER e DROP;
• Chaves primárias e chaves estrangeiras podem
ser inseridas, alteradas ou removidas de uma
tabela.
23. CREATE
• Sintaxe:
• CREATE TABLE [nome da tabela] ({ [nome da coluna] [tipo de
dado] [NOT] [NULL] [DEFAULT expressão]});
• DEFAULT expressão - define que quando não for atribuído um
valor para a coluna no INSERT, o campo assumirá o valor da
expressão.
• Exemplo:
CREATE TABLE Empregados (
id_empregado NUMBER(4),
id_departamento NUMBER(4),
cidade VARCHAR2(30));
24. • Para assegurar que linhas duplicadas não sejam armazenadas, uma coluna ou a
combinação de colunas é identificada como PRIMARY KEY de uma tabela quando
definida. Cada entrada na coluna PRIMARY KEY precisa ser única.
• Exemplo:
• CREATE TABLE Empregados (
id_empregado NUMBER(4) NOT NULL CONSTRAINT EMP_PK PRIMARY KEY
(id_empregado),
id_departamento NUMBER(4),
cidade VARCHAR2(30));
• O relacionamento entre tabelas é feito pela definição de FOREIGN KEYS. Uma
FOREIGN KEY é um valor ou combinação de valores em uma tabela que existe como
uma PRIMARY KEY em outra tabela.
• Exemplo:
• CREATE TABLE Empregados (
id_empregado NUMBER(4) NOT NULL CONSTRAINT EMP_PK PRIMATY KEY
(id_empregado),
id_departamento NUMBER(4) CONSTRAINT DEP_FK REFERENCES [tabela](nome do
campo),
cidade VARCHAR2(30));
25. ALTER
• Sintaxe:
ALTER TABLE [tabela]
[ADD {([nome da coluna] [tipo de dado] [NOT] [NULL] [DEFAULT
expressão])}] ;
[MODIFY {([nome da coluna] [tipo de dado] [NOT] [NULL]
[DEFAULT expressão])}] ;
[DROP COLUMN nome da coluna] ;
• Exemplos:
ALTER TABLE Empregados ADD (idade NUMBER (2) NOT NULL);
ALTER TABLE Empregados MODIFY (cidade VARCHAR2(50));
ALTER TABLE Empregados DROP COLUMN cidade;
26. • Caso uma tabela seja criada sem nela terem sido
especificadas a chave primária e/ou a(s) chave(s)
estrangeira(s), o comando ALTER permite que seja
feita a inclusão, alteração ou remoção;
• Ex.: Adicionando e removendo a chave primária
na tabela Empregados:
• ALTER TABLE Empregados ADD CONSTRAINT
EMP_PK PRIMARY KEY (id_empregado);
• ALTER TABLE Empregados DROP CONSTRAINT
EMP_PK;
27. • Ex.: Adicionando e removendo a chave
estrangeira na tabela Empregados,
respectivamente:
• ALTER TABLE Empregados ADD CONSTRAINT
DEPT_FK FOREIGN KEY (id_departamento)
REFERENCES Departamento
(id_departamento);
• ALTER TABLE Empregados DROP CONSTRAINT
DEPT_FK;
29. DCL
• Data Control Language;
• Controla os aspectos de autorização de dados
e licenças de usuários para controlar quem
tem acesso para ver ou manipular dados
dentro do banco de dados;
• GRANT e REVOKE.
30. Permissão de Acesso - GRANT
• Autoriza o usuário executar ou setar operações
tais como: SELECT, INSERT, UPDATE e DELETE.
• Sintaxe:
GRANT [role] ON [table] TO [user];
• Exemplo:
GRANT select, insert ON Empregados TO system;
31. Revogar/Negar Acesso - REVOKE
• O comando REVOKE remove ou restringe a
capacidade de um usuário de executar operações.
• Sintaxe:
REVOKE [role] ON [table] FROM [user];
• Exemplo:
REVOKE select, insert ON Empregados FROM
system;