2006 @ Profa. Maria Salete Marcon Gomes Vaz
1
Linguagem SQL
Maria Salete Marcon Gomes Vaz
2006 @ Profa. Maria Salete Marcon Gomes Vaz
2
SQL Structured Query Language Linguagem de Consulta Estruturada Fundamentada no modelo relacional, inclui comandos para:
definição de dados consulta atualização
Origem1974 - Primeira versão: SEQUEL, definida por Chamberlain, na IBM 1975 - Implementação do primeiro protótipo 1976 - Revisada e estendida1977 - Nome alterado para SQL, por razões jurídicas 1982 - o Amercian National Standard Institute tornou SQL padrão oficial de linguagem em ambiente relacional
2006 @ Profa. Maria Salete Marcon Gomes Vaz
3
Linguagem interativa de consulta (ad hoc) usuários podem definir consultas independente de programas
Linguagem de programação para acesso a banco de dados comandos SQL embutidos em programas de aplicação
Linguagem de administração de dados o DBA pode utilizar SQL para realizar suas tarefas.
SQL Structured Query Language
2006 @ Profa. Maria Salete Marcon Gomes Vaz
4
Linguagem cliente/servidor os programas clientes usam comandos SQL para se comunicarem e compartilharem dados com o servidor
Linguagem para banco de dados distribuídos auxilia na distribuição de dados por vários nós e na comunicação de dados com outros sistemas
Caminho de acesso a outros bancos de dados em diferentes máquinas
auxilia na conversão entre diferentes produtos em diferentes máquinas
SQL Structured Query Language
2006 @ Profa. Maria Salete Marcon Gomes Vaz
5
SQL Structured Query Language
DDL
criar (CREATE)
destruir (DELETE)
Modificar (ALTER)
Implementação
Ambiente
DML
consultar (SELECT)
inserir (INSERT)
remover (DELETE)
atualizar (UPDATE)
Segurança
Controle
Administração
SQL
2006 @ Profa. Maria Salete Marcon Gomes Vaz
6
Vantagens:
Independência de fabricante
Portabilidade entre sistemas
Redução de custos com treinamento
Comandos em inglês
Consulta interativa
Múltiplas visões de dados
Definição dinâmica dos dados
SQL Structured Query Language
Desvantagens: A padronização inibe a criatividade Está longe de ser uma linguagem relacional ideal Algumas críticas:
discordância com as linguagens hospedeiras não dá suporte a alguns aspectos do modelo
relacional
2006 @ Profa. Maria Salete Marcon Gomes Vaz
7
SQL Structured Query Language
Comandos SQL (padrão ANSI):
Criação e destruição de tabelas
Extração de dados de uma tabela
Inserção, modificação e remoção de dados
Definição de visões
Definição de privilégios de acesso
2006 @ Profa. Maria Salete Marcon Gomes Vaz
8
SQL Structured Query Language
Criação de Tabelas
Descrição dos atributos: lista dos atributos com respectivos tipos de dados: smallint, char, money, varchar, integer, decimal,
float, real, date, time, timestamp, logical.
A chave primária deve ser declarada como not null unique
Descrição das chaves: lista das chaves estrangeiras na forma:
FOREIGN KEY (<atributo>) REFERENCES <tabela>
CREATE TABLE <tabela> (<descrição dos atributos>) (<descrição das chaves>);
2006 @ Profa. Maria Salete Marcon Gomes Vaz
9
SQL Structured Query LanguageCriação de tabelas Exemplo: Empregado
CREATE TABLE Empregado (Cad smallint not null unique, Nome char (20), Sexo char, Salário decimal (10,2), Num Dep integer, Cad Spv smallint, constraint pk_empregado primary key(cad), constraint fk_emp_pk_depto FOREIGN KEY Num Dep REFERENCES Departamento, constraint fk_emp_pk_emp FOREIGN KEY Cad Spv REFERENCES Empregado);
Cad Nome Sexo Salário Num Dep Cad Spv
2006 @ Profa. Maria Salete Marcon Gomes Vaz
10
SQL Structured Query Language
Criação de tabelas
Exemplo: Trabalha-em
CREATE TABLE Trabalha em
(Cad emp smallint not null unique,
Num Proj integer not null unique,
Horas decimal (3,1)
FOREIGN KEY Cad Emp REFERENCES Empregado,
FOREIGN KEY Num Proj REFERENCES Projeto);
Cad Emp Num Proj Horas
2006 @ Profa. Maria Salete Marcon Gomes Vaz
11
SQL Structured Query Language
Destruição de tabelas
Elimina a tabela que foi previamente criada.
Exemplo:
DROP TABLE Empregado;
DROP TABLE <tabela>;
2006 @ Profa. Maria Salete Marcon Gomes Vaz
12
SQL Structured Query Language
Adicionando tupla à tabela
Exemplo:
INSERT INTO Empregado VALUES (015, `José da Silva', `M', 1000)
INSERT INTO <tabela> (<lista de atributos>),
VALUES (<valores>);
2006 @ Profa. Maria Salete Marcon Gomes Vaz
13
SQL Structured Query Language
Atualizando tuplas
Exemplo:
UPDATE Empregado SET Salário = 1500 WHERE Cad = 015
UPDATE <nome tabela> SET <nome atributo> = valor WHERE <condição>
2006 @ Profa. Maria Salete Marcon Gomes Vaz
14
SQL Structured Query Language
Apagando tuplas da tabela
Exemplo 1: Exclui todos os empregados que tem salário maior que 5000.
DELETE FROM Empregado WHERE Salário > 5000;
Exemplo 2: Exclui todos os empregados DELETE FROM Empregado;
DELETE FROM <tabela> WHERE <condição>
2006 @ Profa. Maria Salete Marcon Gomes Vaz
15
SQL Structured Query Language
Extração de Dados de uma Tabela Comando SELECT
Selecionando atributos (Projeção): Exemplo: Listar nome e salário de todos os empregados
SELECT Nome, Salário FROM Empregado Selecionando todos os atributos
SELECT * FROM <tabela> Exemplo: Listar o conteúdo de Empregado
SELECT * FROM Empregado
SELECT <lista de atributos> FROM<tabela>;
2006 @ Profa. Maria Salete Marcon Gomes Vaz
16
SQL Structured Query Language
Selecionando tuplas da tabela
onde condição:
<nome atributo> <operador> <valor>
Operadores Relacionais: =, !=, <, <=, >, >=
Operadores Lógicos: AND, OR e NOT
SELECT <lista de atributos> FROM <tabela> WHERE <condição>
2006 @ Profa. Maria Salete Marcon Gomes Vaz
17
SQL Structured Query Language
Selecionando tuplas da tabela Exemplos:
Listar nome e sexo dos empregados do departamento 15. SELECT Nome, Sexo FROM Empregado WHERE Num Dep = 15
Listar nome e sexo dos empregados do departamento 15 com salário > R$ 1.000,00
SELECT Nome, Sexo FROM Empregado WHERE Num Dep = 15 AND Salário > 1000
2006 @ Profa. Maria Salete Marcon Gomes Vaz
18
SQL Structured Query Language
Operadores BETWEEN e NOT BETWEEN: substituem o uso dos operadores <= e >=
Exemplo:
Listar os empregados com salário entre R$ 1.000,00 e R$ 2.000,00
SELECT * FROM Empregado
WHERE Salário BETWEEN 1000 and 2000
... WHERE <nome atributo> BETWEEN <valor1> and <valor2>
2006 @ Profa. Maria Salete Marcon Gomes Vaz
19
SQL Structured Query LanguageOperadores ANY e SOME:
ANY e SOME - São sinônimosRecuperar registros na consulta principal que satisfaçam a comparação com qualquer registro da subconsulta
Exemplo: Listar todos os registros de A, onde o y seja maior a qualquer elemento pertencente ao resultado da consulta de B.
select * from A where y > ANY
(select y from B where x > 20)
select * from A where y > SOME
(select y from B where x > 20)
A
x y
1 5
2 9
3 10
4 6
B
x y
10 4
20 3
30 11
40 9
2006 @ Profa. Maria Salete Marcon Gomes Vaz
20
SQL Structured Query Language
Operadores ANY e SOME: Exemplo: Listar todos os registros de A, onde o y seja maior de qualquer elemento pertencente ao resultado da consulta de B.
select * from A where y > ANY
(select y from B where x < 40)
select * from A where y > SOME
(select y from B where x < 40)
A
x y
1 5
2 9
3 10
4 6
B
x y
10 4
20 3
30 11
40 9
2006 @ Profa. Maria Salete Marcon Gomes Vaz
21
SQL Structured Query LanguageOperador ALL:
Utilizado para recuperar registros na consulta principal que satisfaçam a comparação com todos os registros da subconsultaExemplo: Listar todos os registros de A, onde o y seja maior que todos os elementos pertencentes ao resultado da consulta de B.
select * from A where y > ALL
(select y from B)
Exemplo: Listar todos os registros de A, onde o y seja menor que todos os elementos pertencentes ao resultado da consulta de B.
select * from A where y < ALL
(select y from B)
A
x y
1 5
2 9
3 10
4 6
B
x y
10 4
20 3
30 11
40 9
2006 @ Profa. Maria Salete Marcon Gomes Vaz
22
SQL Structured Query Language
Operador ALL: Exemplo: Listar todos os registros de A, onde o y seja maior que todos os elementos pertencentes ao resultado da consulta de B.
select * from A where y > ALL
(select y from B where x > 30)A
x y
1 5
2 9
3 10
4 6
B
x y
10 4
20 3
30 11
40 9
2006 @ Profa. Maria Salete Marcon Gomes Vaz
23
SQL Structured Query LanguageOperador ANY em comandos UPDATE e DELETE
Exemplo: O valor de x, dos registros de A, será multiplicado por 10 quando o y for maior que qualquer y pertencente ao resultado da subconsulta.
update A set x = x* 10 where
y > ANY (select y from B where x < 40);
Exemplo: Os registros de A são deletados
quando o y for maior que qualquer y
pertencente ao resultado da subconsulta.
delete from A where y > ANY
(select y from B where x < 40);
A
x y
1 5
2 9
3 10
4 6
B
x y
10 4
20 3
30 11
40 9
2006 @ Profa. Maria Salete Marcon Gomes Vaz
24
SQL Structured Query Language
Operadores LIKE e NOT LIKE só se aplicam sobre atributos do tipo char.
Operam como = e !=
utiliza o símbolo % (substitui uma palavra)
utiliza o símbolo _ (substitui um caracter).
Exemplo: Listar os empregados que tem como primeiro nome `José`
SELECT Nome FROM Empregado
WHERE Nome LIKE `José%'
...WHERE <nome atributo> LIKE <valor1>
2006 @ Profa. Maria Salete Marcon Gomes Vaz
25
SQL Structured Query Language
Operadores IN e NOT IN procuram dados que estão ou não contidos em um dado conjunto de valores.
Exemplo: Listar o nome e data de nascimento dos dependentes com grau de parentesco 'E' de Esposo(a) ou 'F' de Filho(a)
SELECT Nome, Data_Nasc FROM Dependentes WHERE Grau P IN ('F', 'E')
... WHERE <nome atributo> IN <valores>
2006 @ Profa. Maria Salete Marcon Gomes Vaz
26
SQL Structured Query LanguageOperadores IN e ANY
Se utilizar ANY com sinal de igualdade Será o mesmo resultado de IN
Exemplo: Listar todos os registros de A onde o y seja igual a qualquer y do resultado da subconsulta
select * from A where y = ANY (select y from B);
select * from A where y IN (select y from B);
A
x y
1 5
2 9
3 10
4 6
B
x y
10 4
20 3
30 11
40 9
2006 @ Profa. Maria Salete Marcon Gomes Vaz
27
SQL Structured Query LanguageOperadores != ALL equivale a NOT IN
Exemplo: Listar todos os registros de A onde o y seja NÃO seja igual a qualquer y do resultado da subconsulta
select * from A where y != ALL (select y from B);
select * from A where y NOT IN (select y from B);
A
x y
1 5
2 9
3 10
4 6
B
x y
10 4
20 3
30 11
40 9
2006 @ Profa. Maria Salete Marcon Gomes Vaz
28
SQL Structured Query Language
Operadores IS NULL e IS NOT NULL identificam valores nulos dos atributos
Exemplo: Listar os projetos que não tenham local definido
SELECT * FROM Projeto
WHERE Local IS NULL
... WHERE <nome atributo> IS NULL
2006 @ Profa. Maria Salete Marcon Gomes Vaz
29
SQL Structured Query LanguageOrdenando os dados selecionados (ORDER BY)
Exemplo: Listar todos os empregados ordenados ascendentemente por nome.
SELECT * FROM Empregado ORDER BY Nome
Listar todos os empregados ordenados descendentemente por salário
SELECT * FROM Empregado ORDER BY Salário DESC
SELECT <lista atributos> FROM <tabela>
[WHERE <condição>]
ORDER BY <Nome atributo> {ASC | DESC}
2006 @ Profa. Maria Salete Marcon Gomes Vaz
30
SQL Structured Query Language
Realizando cálculo com informação selecionada Pode se criar um campo que não pertença à tabela a partir de cálculos sobre atributos da tabela
Exemplo: Mostrar o novo salário dos empregados calculado com base no reajuste de 60% para os que ganham abaixo de R$ 1.000,00
SELECT Nome, (Salario * 1.60)
FROM Empregado WHERE Salário < 1000
2006 @ Profa. Maria Salete Marcon Gomes Vaz
31
SQL Structured Query Language
Utilizando funções sobre conjuntos Comandos: MAX, MIN, SUM, AVG, COUNT
Exemplos: Mostrar o empregado de maior salário
SELECT MAX (Salário) FROM Empregado
Mostrar qual o salário médio dos empregados
SELECT AVG (Salário) FROM Empregado
Quantos empregados ganham mais de R$1.000,00?
SELECT COUNT (*) FROM Empregado WHERE Salário > 1000
2006 @ Profa. Maria Salete Marcon Gomes Vaz
32
SQL Structured Query LanguageCláusula DISTINT
Elimina tuplas duplicadas do resultado de uma consulta. Exemplo:
Quais os diferentes salários dos empregados?
SELECT DISTINCT Salário FROM Empregado
Cláusula GROUP BY Organiza a seleção de dados em grupos Exemplo:
Listar os empregados por sexo
SELECT sexo, count(*) FROM Empregado GROUP BY Sexo
2006 @ Profa. Maria Salete Marcon Gomes Vaz
33
SQL Structured Query LanguageCláusula HAVING
Agrupa Informações de forma condicional Seleciona entre as tuplas resultantes, as que satisfazem um dada condição. Exemplo:
Listar o número total de empregados que recebem salários superior a R$1.000,00, agrupados por departamento mas só daqueles com mais de 5 empregados.
SELECT codd, count(*) FROM empregado WHERE salario > 1000 GROUP BY codd HAVING COUNT(*) > 5 ;
Select cor from TABELA group by cor having count(distinct codigo) >= max(codigo);
2006 @ Profa. Maria Salete Marcon Gomes Vaz
34
SQL Structured Query LanguageCláusula JOIN
Recuperando dados de várias tabelas e utiliza qualificadores de nomes para referenciar o nome do empregado (Empregado.Nome) Exemplos:
Listar o nome do empregado e do departamento onde está alocado
SELECT Empregado.Nome, Departamento.Nome FROM Empregado, Departamento WHERE Projeto.Num Dep = Departamento.Número;
Listar o nome dos departamentos que têm projetos
SELECT Departamento.Nome FROM Departamento, Projeto WHERE Projeto.Num Dep = Departamento.Número;
2006 @ Profa. Maria Salete Marcon Gomes Vaz
35
SQL Structured Query LanguageCláusulas (NOT) LIKE, (NOT) IN, (NOT) NULL pode ser misturadas aos operadores AND, OR e NOT nas equações de junção.
ExemploListar os departamentos que têm projetos com número superior a 99 e localizados em RJ e SP ordenados por nome de departamento
SELECT Departamento.Nome FROM Departamento, Projeto WHERE Projeto.Local IN (`RJ', `SP') AND Projeto.Número > 99 AND Projeto.Depto = Departamento.Codigo ORDER BY Departamento.Nome
2006 @ Profa. Maria Salete Marcon Gomes Vaz
36
SQL Structured Query Language
Juntando mais de duas tabelas
Exemplo:
Listar o nome dos empregados, com seu respectivo departamento que trabalhem mais de 20 horas em algum projeto
SELECT empregado.nome, departamento.nome
FROM empregado, departamento, trabalha_em
WHERE trabalha_em.horas > 20 AND
trabalha em.code = empregado.code AND
Empregado.codd = Departamento.codd
2006 @ Profa. Maria Salete Marcon Gomes Vaz
37
SQL Structured Query Language
Utilizando consultas encadeadas O resultado de uma consulta é utilizado por outra consulta, de forma encadeada e no mesmo comando SQL
Exemplo: Listar os departamentos que tenham qualquer projeto em RJ
SELECT Departamento.nome FROM departamento
WHERE departamento.numd
IN (SELECT projeto.numd FROM projeto
WHERE projeto.local = `RJ')
2006 @ Profa. Maria Salete Marcon Gomes Vaz
38
SQL Structured Query Language
Adicionando tuplas usando SELECT
Exemplo: INSERT INTO cliente (codc, nomec) SELECT v.codv, v.nome FROM vendedor v, pedido p WHERE v.codv = p.codv GROUP BY v.codv,v.nome HAVING COUNT (*) > 50;
INSERT INTO <tabela> (<lista de atributos>)
SELECT <lista de atributos> FROM
<tabela> WHERE <condição>
2006 @ Profa. Maria Salete Marcon Gomes Vaz
39
SQL Structured Query Language
Atualizando tuplas – uso do SELECT com UPDATE
Exemplo: Os empregados com o menor salário vão receber um aumento de 10%
update empregado
set salario = salario*1.1
where salario = (select min(salario) from empregado)
2006 @ Profa. Maria Salete Marcon Gomes Vaz
40
SQL Structured Query Language
Atualizando tuplas – SELECT na atribuição do campo
Exemplo: Os empregados do Departamento 1 receberão o maior salário
update empregado
set salario = (select max(salario) from empregado)
where numd = 1;
2006 @ Profa. Maria Salete Marcon Gomes Vaz
41
SQL Structured Query Language
Utilizando Visões (VIEWS) São tabelas virtuais que não ocupam espaço físico Criação, Utilização, Inserção, Modificação, etc.
Exemplo:Criar uma visão dos empregados do departamento 10 que tenham mais de 20 horas de trabalho em projetos
CREATE VIEW Dep 10 AS SELECT Empregado.Nome, Num Proj FROM Empregado, Trabalha em WHERE Trabalha em.Horas > 20 AND Trabalha em.Cad Emp = Empregado.Cad AND Empregado.Num Dep = 10
CREATE VIEW <nome da view> <lista de atributos> AS SELECT...
2006 @ Profa. Maria Salete Marcon Gomes Vaz
42
SQL Structured Query Language
Garantir e Revogar privilégios de acesso
<privilégios>: SELECT, INSERT, DELETE, UPDATE, ALL PRIVILEGES
<usuário>: usuário cadastrado, PUBLIC
Exemplos:
GRANT SELECT ON Empregado TO salete;
REVOKE SELECT ON Projeto FROM PUBLIC;
GRANT <privilégios> ON <nome tabela/view> TO <usuário>
REVOKE <privilégios> ON <nome tabela/view> FROM <usuário>
2006 @ Profa. Maria Salete Marcon Gomes Vaz
43
Bibliografia Sistema de Banco de DadosA. Silberschatz; H. F. Korth; S. Sudarschan. Makron Books, Terceira
Edição, 2006.
Projeto de Banco de Dados - Uma Visão PráticaFelipe Machado; Maurício Abreu. 10a. Edição. Editora Érica, São
Paulo, 2003.
Projeto de banco de DadosCarlos Alberto Heuser. 3a. Edição, Sagra Luzzatto, Rio Grande do
Sul, 2000.
Modelagem Conceitual e Projeto de banco de DadosPaulo Cougo. Editora Campus, Rio de Janeiro, 1997.
Banco de Dados: Fundamentos, Projeto e ImplementaçãoDavid M. Kroenke. Livros Técnicos e Científicos, Sexta Edição, 1999.
Top Related