Escolar Documentos
Profissional Documentos
Cultura Documentos
SQL
SQL
3
Características da SQL
4
Três Aspectos
⚫ SQL é uma:
⚫ Linguagem de Definição de Dados - LDD;
⚫ Linguagem de Manipulação de Dados - LMD;
⚫ Linguagem de Segurança de Dados - LSD.
5
Linguagem de Definição dos Dados
6
Linguagem de Manipulação dos
Dados
⚫ Os comandos de Manipulação de Dados
permitem a inserção, atualização, exclusão e
seleção de tuplas de uma tabela.
⚫ Exemplo:
⚫ INSERT;
⚫ UPDATE;
⚫ DELETE;
⚫ SELECT.
7
Linguagem de Segurança dos
Dados
⚫ Eles servem para gerenciar o acesso dos
usuários a determinadas tabelas, e manter a
integridade dos dados.
⚫ Exemplo:
⚫ BEGIN TRANSACTION;
⚫ COMMIT;
⚫ ROLLBACK;
⚫ GRANT;
⚫ REVOKE.
8
SQL como uma Linguagem
de Manipulação de Dados
Select
Select [Tipo] Lista-de-Atributos
From Lista-de-Relações
[Condição];
⚫ Para selecionar tuplas nas relações
⚫ Tipo: Pode ser Distinct ou ALL, indica se
apenas as tuplas com valores distintas serão
selecionadas ou todas.
⚫ Lista-de-Atributos: pode ser * (para mostrar
todos os atributos) ou uma lista de atributos
separados por uma virgula. Se os atributos
pertencem a tabelas diferentes às vezes é preciso
usar: nome-tabela.atributo
10
Select
⚫ Pilotos da companhia:
SELECT * FROM Pilotos;
⚫ Salário dos pilotos da companhia:
SELECT Nome, Salário FROM Pilotos;
⚫ Idade dos pilotos que moram em Brasília:
SELECT Nome, Idade FROM Pilotos WHERE
Endereço = ‘Brasília’;
⚫ Nome dos pilotos em atividades:
SELECT Distinct Nome FROM Pilotos, Voos WHERE
Voos.PlNUM=Pilotos.PlNUM;
12
Sub-consultas
13
Claúsulas
⚫ Where
⚫ Group by
⚫ Having
⚫ Order by
14
Where
15
Group by
16
Group by
17
Having
18
Having
19
Order by
20
Order by
21
Insert
⚫ Sintaxe INSERT INTO Nome-da-Tabela (atributo1,
atributo2, atributo3) VALUES (valor1, valor2,
valor3)
⚫ Insere uma nova tupla em uma tabela.
⚫ Exemplo: Inserir o piloto João que tem o salário de
60.000:
INSERT INTO Pilotos (Nome, Salario) VALUES (‘João’,
60.000);
⚫ Pode-se usar sub-consultas dentro de uma inserção
(por exemplo incluindo o resultado de uma consulta
como tupla em uma tabela).
22
Update
⚫ Sintaxe UPDATE Nome-da-Tabela SET
atributo1=valor1, atributo2=valor2,
atributo3=valor3
⚫ Atualiza tuplas em uma tabela.
⚫ Exemplo: Aumentar o salário dos pilotos em 10%
UPDATE Pilotos SET Salario=Salario*1,1;
⚫ Exemplo: Aumentar o salário dos pilotos em 10%
apenas os de Brasília
UPDATE Pilotos SET Salario=Salario*1,1 WHERE
Endereço=‘Brasília’;
⚫ É possível usar sub-consultas.
23
Delete
24
Junção
⚫ Acontece quando a partir de informações em uma
tabela se quer buscar informações em uma outra
tabela que está relacionada.
⚫ Exemplos:
⚫ Nome dos pilotos ativos:
SELECT Nome FROM Pilotos, Voos WHERE
Voos.PlNUM=Pilotos.PlNUM;
⚫ Nome dos pilotos que pilotam um B767:
SELECT Nome FROM Pilotos, Voos, Avioes WHERE
Voos.PlNUM=Pilotos.PlNUM and
Voos.AvNUM=Avioes.AvNUM and Avioes.Tipo=‘B767’;
25
Sinônimos
⚫ Para duplicação de Tabelas, usando nomes menos
compridos.
⚫ Produtos eletrodomésticos:
SELECT Nome FROM Produtos PX WHERE
PX.Categoria=‘Eletrodoméstico’;
⚫ Para duplicação de tabelas.
⚫ Exemplo: Pilotos que ganham o mesmo salário do
piloto João:
SELECT Nome FROM Pilotos PX WHERE
PX.Nome<>‘Adriana’ and PX.Salario=(SELECT Salario
FROM Pilotos WHERE Pilotos.Salario=‘Adriana’);
26
Criação de BDs
27
Operadores da Linguagem
⚫ Operadores Aritméticos;
⚫ Operadores Lógicos;
⚫ Operadores Relacionais;
⚫ Concatenação de String;
⚫ Operador NULL;
⚫ Operadores Quantitativos.
28
Operadores Aritméticos
⚫ Operação ⚫ Operador
⚫ Adição ⚫ +
⚫ Subtração ⚫ -
⚫ Multiplicação ⚫ *
⚫ Divisão ⚫ / ou :
⚫ Densidade dos países da América Latina:
SELECT Poluçao / area AS Densidade FROM
Paises;
29
Operadores Lógicos
⚫ Operação ⚫ Operador
⚫ E ⚫ and
⚫ OU ⚫ or
⚫ Não ⚫ not
30
Operador Exists
SELECT PlNUM FROM Voos WHERE NOT
EXISTS (SELECT PlNUM FROM Voos
WHERE NOT EXISTS);
31
Divisão
32
Divisão
33
Operadores Relacionais
⚫ Operação ⚫ Operador
⚫ Igual ⚫ =
⚫ Diferente ⚫ <>
⚫ Maior ⚫ >
⚫ Maior Igual ⚫ >=
⚫ Menor ⚫ <
⚫ Menor Igual ⚫ <=
⚫ Livros emprestados após 20/02/2000:
SELECT * FROM Emprestimo WHERE
Data_Emprestimo >= ’20/02/2000’;
34
Operadores Relacionais
⚫ Operação ⚫ Operador
⚫ Entre de... a ⚫ Between... and
⚫ Em ⚫ In (...,...,...)
⚫ Como ⚫ Like ‘...%...’
35
Operadores Relacionais
⚫ Livros sobre SQL:
SELECT * FROM Livro WHERE titulo LIKE
%SQL%;
O % representa vários caracteres
O _ representa apenas um caractere
⚫ Pilotos que tem 30, 40 e 50 anos:
SELECT * FROM Piloto WHERE Idade IN
(30,40,50);
36
Operadores Relacionais
⚫ Pilotos que tem a mesma idade que um piloto
cujo nome começa pela letra ‘J’:
SELECT * FROM Piloto WHERE Idade In
(SELECT Idade FROM Pilotos WHERE
Nome LIKE %J%);
⚫ Pilotos que pilotam os aviões 14 e 15:
SELECT PlNUM FROM Voos WHERE
AvNUM=14 AND PlNUM IN (SELECT
PlNUM FROM Voos WHERE AvNUM=15);
37
Concatenação de Strings
38
Operador Null
39
Operadores Quantitativos
⚫ Operação ⚫ Operador
⚫ Todos ⚫ ALL
⚫ Algum ⚫ SOME / ANY
40
Operadores Quantitativos
⚫ Pilotos que ganham mais que todos os pilotos
maranhenses:
SELECT Nome, Salario FROM Pilotos WHERE
Salario >= ALL (SELECT Salario FROM
Pilotos WHERE Estado=‘Maranhão’);
41
Funções
42
Funções de manipulação de strings
43
Funções de manipulação de strings
⚫ Exemplo:
⚫ Capital da Colômbia:
SELECT Nome, Capital FROM Paises WHERE
UPPER (Nome)=‘COLÔMBIA’);
⚫ Senão tem que escrever o nome Colômbia
exatamente como está na relação.
⚫ Pode-se usar também o LOWER:
SELECT Nome, Capital FROM Paises WHERE
LOWER (Nome)=‘colômbia’);
44
Funções Agregadas
⚫ Count;
⚫ AVG;
⚫ Min;
⚫ Max;
⚫ SUM;
45
Count
⚫ Sintaxe: COUNT ( )
⚫ Retorna o número de tuplas na tabela.
⚫ Sintaxe: COUNT ([all] <val>)
⚫ Conta todos os valores não nulos (NOT NULL) do
atributo ou expressão especificado pelo (val).
⚫ Sintaxe: COUNT (Distinct <val>)
⚫ Retorna o número de valores únicos e não nulos,
do atributo ou expressão especificado pelo (val).
46
AVG
47
MIN
48
MAX
49
SUM
50
Exemplo
51
Atributos Virtuais
52
Tipos de Dados SQL
⚫ Caracteres;
⚫ Numéricos;
⚫ Datas;
⚫ Dados Extensos;
⚫ Outros;
53
Tipos Caracteres
⚫ Char
⚫ Varchar
⚫ Exemplo:
CREATE TABLE Clientes (Nome char(35))
INSERT INTO Clientes VALUES (‘Maria’);
⚫ Maria será representado sobre 35 caracteres.
Porém, caso a declaração seja feita com varchar
apenas 5 caracteres serão representados.
54
Tipos Numéricos
55
Tipos Numéricos
56
Datas
⚫ O tipo date:
⚫ Uma data é colocada entre apóstrofos:
⚫ ‘01/01/2000’
⚫ No caso do ACCESS é preciso usar #:
⚫ #01/01/2000#
57
Tipo Blob para dados extensos
58
Outros Tipos
59
Conversão de Tipos entre SGBDs
60
SQL como uma Linguagem
de Definição de Dados
Os comandos
62
Linguagem de Definição de Dados
⚫ Correspondência:
⚫ Relação → tabela
⚫ Atributo → coluna
⚫ Domínio → ?
⚫ Infelizmente a noção de domínio não existe em
SQL.
63
Create Table
64
Exemplos
CREATE TABLE Produto (Codigo smallint,
Nome char(30), Preco float)
65
Criação com Sub-Consultas
66
Alter Table
67
Drop Table
⚫ Deletar tabelas:
DROP TABLE Pilotos;
68
Create Index
⚫ Criação de índices para tabelas. Os índices
são usados para aumentar a velocidade de
acesso às tabelas.
CREATE INDEX iNome ON Clientes (Nome);
⚫ Índice Múltiplo:
CREATE INDEX iNomeIdade ON Clientes
(Nome, Idade);
⚫ Índice Único:
CREATE UNIQUE INDEX iNome ON Clientes
(Nome);
69
Drop Index
⚫ Deletar Índices:
DROP INDEX Tabela.NomeIndex
⚫ Exemplo:
DROP INDEX Clientes.iNome;
70
Create View
71
Drop View
⚫ Deletar Visões:
DROP VIEW Nome-da-Visao
⚫ Exemplo:
DROP VIEW PilotosMaranhenses;
72
Manipulação das visões
73
SQL como uma Linguagem
de Segurança de Dados
Os comandos
⚫ GRANT, REVOKE;
⚫ BEGIN TRANSACTION;
⚫ COMMIT, ROLLBACK.
75
GRANT
76
REVOKE
77
Os direitos
78
Begin Transactions
79
Commit
80
RollBack
81