sql – strutured query language

Propaganda
BANCO DE DADOS
- INTRODUÇÃO AO SQL
Prof. Angelo Augusto Frozza, M.Sc.
[email protected]
SQL – STRUTURED QUERY LANGUAGE
|
Os comandos SQL podem ser agrupados em 3 classes:
y
DDL – Data Definition Language
|
y
DML – Data Manipulation Language
|
y
Comandos para a Definição de Dados
Comandos para a Manipulação de Dados
DCL – Data Control Language
|
Comandos para o Controle do Gerenciador, Conexão e Usuário
SQL – STRUTURED QUERY LANGUAGE
|
Objetos manipuláveis em um Banco de Dados:
y
Database (Base de Dados)
y
Table (Tabelas)
y
Index (Indíces)
y
View (Visões)
y
Stored Procedures (Procedimentos)
y
Triggers (Gatilhos)
y
Domain (Domínios)
y
Generator (Variáveis Globais)
y
Exception (Excecões)
y
User (Usuários)
y
Role (Grupos de Usuários)
SQL – STRUTURED QUERY LANGUAGE
|
Comandos básicos da Linguagem de Manipulação dos Dados
(DML):
INSERT
y SELECT
y UPDATE
y DELETE
y
SQL – STRUTURED QUERY LANGUAGE
|
PostgreSQL
y
Documentação
http://pgdocptbr.sourceforge.net/pg82/reference.html
SQL – STRUTURED QUERY LANGUAGE
|
Inserir registro em uma tabela
INSERT INTO tabela
[ ( coluna [, ...] ) ]
{ DEFAULT VALUES | VALUES (
{ expressão | DEFAULT } [, ...] )
[, ...] | consulta }
[ RETURNING * | expressão_de_saída
[ AS nome_de_saída ] [, ...] ]
SQL – STRUTURED QUERY LANGUAGE
|
Inserir registro em uma tabela
INSERT INTO paises (pais, nacionalidade)
VALUES ('Brasil', 'Brasileiro');
INSERT INTO paises (id_pais, pais, nacionalidade)
VALUES (DEFAULT, 'Mexico', 'Mexicano');
INSERT INTO paises
VALUES (DEFAULT, 'Venezuela', 'Venezuelano');
SQL – STRUTURED QUERY LANGUAGE
|
Inserir registro em uma tabela
INSERT INTO paises (pais, nacionalidade)
VALUES ('Uruguai', 'Uruguaio')
RETURNING *;
INSERT INTO paises
VALUES (DEFAULT, 'Guiana Francesa', 'Guianense')
RETURNING id_pais;
INSERT INTO paises
VALUES (DEFAULT, 'Guiana (República
Cooperativa da Guiana)', 'Guianês')
RETURNING id_pais;
SQL – STRUTURED QUERY LANGUAGE
|
Inserir registro em uma tabela
y
Vários registros na mesma linha
INSERT INTO paises (pais, nacionalidade)
VALUES ('Canadá', 'Canadense'),
('Estados Unidos', 'Americano') ,
('Bolívia', 'Boliviano');
INSERT INTO paises (pais, nacionalidade)
VALUES ('Franca', 'Frances'),
('Alemanha', 'Alemao') ,
('Italia', 'Italiano')
RETURNING id_pais;
EXERCÍCIO DE FIXAÇÃO
|
INSERT
y
Como exercício de fixação, crie registros para as
tabelas do banco de dados modelo, conforme as
instruções repassadas pelo professor.
SQL – STRUTURED QUERY LANGUAGE
|
Consultar dados em uma tabela
y
Consulta todos os registros e campos de uma tabela:
SELECT * FROM tabela;
select * from paises;
Consulta apenas alguns campos da tabela:
SELECT campo1, campo2, ..., campoN FROM tabela;
select id_filme, titulo, genero from filmes;
SQL – STRUTURED QUERY LANGUAGE
|
Consultar dados em uma tabela
y
Consulta com ordenação:
SELECT * FROM tabela ORDER BY campo;
SELECT campos FROM tabela ORDER BY campo;
SELECT * FROM filmes ORDER BY titulo;
SELECT id_filme, titulo, genero FROM filmes ORDER
BY genero;
SELECT id_filme, titulo, genero FROM filmes ORDER
BY genero, titulo;
SQL – STRUTURED QUERY LANGUAGE
|
Consultar dados em uma tabela
y
Consulta com ordenação crescente ou decrescente:
SELECT * FROM tabela ORDER BY campo ASC | DESC;
SELECT id_filme, titulo, genero FROM filmes ORDER
BY genero, titulo DESC;
SELECT id_filme, titulo, genero FROM filmes ORDER
BY id_filme DESC;
SQL – STRUTURED QUERY LANGUAGE
|
Consultar dados em uma tabela
y
Consulta com filtro de valores:
SELECT * FROM tabela WHERE campo = ?;
SELECT id_filme, titulo, genero FROM filmes WHERE
genero = 3;
SQL – STRUTURED QUERY LANGUAGE
|
Consultar dados em uma tabela
y
Consulta com filtro de valores:
SELECT * FROM tabela
WHERE campo1 = ? AND campo2 = ?;
SELECT * FROM tabela
WHERE campo1 <> ? OR campo2 = ?;
SELECT id_filme, titulo, genero FROM filmes WHERE
genero = 3 AND id_filme > 15;
SELECT id_filme, titulo, genero FROM filmes WHERE
genero <> 3 OR id_filme > 15;
SQL – STRUTURED QUERY LANGUAGE
|
Consultar dados em uma tabela
y
Consulta com filtro de texto aproximados:
SELECT * FROM tabela
WHERE campo1 like ‘...%...’;
SELECT id_filme, titulo, genero FROM filmes
WHERE titulo like 'a%’;
SELECT id_filme, titulo, genero FROM filmes
WHERE titulo like 'a%’ OR titulo like ‘A%’ ;
SELECT id_filme, titulo, genero FROM filmes
WHERE titulo like ‘%o’;
SQL – STRUTURED QUERY LANGUAGE
|
Consultar dados em uma tabela
y
Consulta com filtro de texto aproximados:
SELECT * FROM tabela
WHERE campo1 like ‘_...’;
O SQL substitui o ‘_’ (underline) por qualquer
caracter.
SELECT id_filme, titulo, genero FROM filmes
WHERE titulo = ‘_caro%’;
SQL – STRUTURED QUERY LANGUAGE
|
Consultar dados em uma tabela
y
Consulta com limite de registros:
SELECT * FROM tabela LIMIT n;
SELECT id_filme, titulo, genero FROM filmes
LIMIT 5;
SELECT id_filme, titulo, genero
FROM filmes
ORDER BY titulo LIMIT 5;
SQL – STRUTURED QUERY LANGUAGE
|
Consultar dados em uma tabela
y
Consulta agrupando os valores:
SELECT * FROM tabela GROUP BY campo;
SELECT genero FROM filmes
GROUP BY genero;
SELECT ano_lancamento FROM filmes
GROUP BY ano_lancamento;
SELECT genero, ano_lancamento FROM filmes
GROUP BY genero, ano_lancamento;
SQL – STRUTURED QUERY LANGUAGE
|
Consultar dados em uma tabela
y
Consulta agrupando os valores e contando registros:
SELECT COUNT(*) FROM tabela GROUP BY campo;
SELECT COUNT(*), genero FROM filmes
GROUP BY genero ORDER BY COUNT(*);
SELECT COUNT(*), ano_lancamento FROM filmes
GROUP BY ano_lancamento;
SELECT COUNT(*), genero, ano_lancamento FROM filmes
GROUP BY genero, ano_lancamento;
SQL – STRUTURED QUERY LANGUAGE
|
Consultar dados em uma tabela
y
Consulta alterando o nome dos campos:
SELECT campo AS apelido FROM tabela GROUP BY campo;
SELECT COUNT(*) AS qtde, genero FROM filmes
GROUP BY genero ORDER BY COUNT(*);
SELECT COUNT(*) AS qtde, ano_lancamento FROM filmes
GROUP BY ano_lancamento;
SELECT COUNT(*) AS qtde, genero,
ano_lancamento AS lancamento FROM filmes
GROUP BY genero, ano_lancamento;
SQL – STRUTURED QUERY LANGUAGE
|
Consultar dados em uma tabela
y
Consulta somando valores:
SELECT SUM(campo) FROM tabela;
SELECT SUM(campo) AS apelido FROM tabela;
SELECT SUM(valor) AS total_locacao FROM locacao;
SELECT codigo AS cliente,
SUM(valor) AS total_locacao
FROM locacao
WHERE codigo = 1
GROUP BY codigo;
SQL – STRUTURED QUERY LANGUAGE
|
Consultar dados em uma tabela
y
Consultar dados de mais de uma tabela:
SELECT * FROM tabela_A, tabela_B;
SELECT a.*, b.* FROM tabela_A a, tabela_B b;
SQL – STRUTURED QUERY LANGUAGE
|
Consultar dados em uma tabela
y
Consulta registros em um intervalo de datas:
SELECT campos
FROM tabela
WHERE campo_data
BETWEEN data_inicio AND data_fim;
SELECT count(*)
FROM locacao
WHERE data_hora_locacao
BETWEEN ’01-04-2011’
AND ’09-04-2011’;
SQL – STRUTURED QUERY LANGUAGE
|
Consultar dados em uma tabela
y
Outras cláusulas interessantes:
union
| intersect
| except
| join
| left join
| right join
| full join
| cross join
| having
| distinct
|
SQL – STRUTURED QUERY LANGUAGE
|
Consultar dados em uma tabela
y
Operador UNION (união):
|
Dados dois conjuntos: A (1, 2, 3, 4, 5) e B (1, 4, 9)
SELECT * FROM A
UNION
SELECT * FROM B;
|
O operador UNION retorna os registros selecionados em ambas as
consultas, eliminando os registros duplicados:
SQL – STRUTURED QUERY LANGUAGE
|
Consultar dados em uma tabela
y
Operador UNION ALL:
|
Dados dois conjuntos: A (1, 2, 3, 4, 5) e B (1, 4, 9)
SELECT * FROM A
UNION ALL
SELECT * FROM B;
|
O operador UNION ALL retorna TODOS os registros selecionados em
ambas as consultas, SEM REMOVER os registros duplicados:
SQL – STRUTURED QUERY LANGUAGE
|
Consultar dados em uma tabela
y
Operador INTERSECT (intersecção):
|
Dados dois conjuntos: A (1, 2, 3, 4, 5) e B (1, 4, 9)
SELECT * FROM A
INTERSECT
SELECT * FROM B;
|
O operador INTERSECT retorna APENAS os registros comuns em ambas
as consultas:
SQL – STRUTURED QUERY LANGUAGE
|
Consultar dados em uma tabela
y
Operador EXCEPT (exceto):
|
Dados dois conjuntos: A (1, 2, 3, 4, 5) e B (1, 4, 9)
SELECT * FROM A
EXCEPT
SELECT * FROM B;
|
O operador EXCEPT retorna os registros presentes no primeiro conjunto,
MENOS os registros presentes no segundo conjunto:
SQL – STRUTURED QUERY LANGUAGE
|
Atualizar dados
UPDATE [ ONLY ] tabela [ [ AS ] aliás ]
SET {
coluna = { expressão | DEFAULT } |
( coluna [, ...] ) =
( { expressão | DEFAULT } [, ...] ) }
[, ...]
[ FROM lista_do_from ]
[ WHERE condição ]
[ RETURNING * |
expressão_de_saída [ AS nome_de_saída ] [, ...] ]
SQL – STRUTURED QUERY LANGUAGE
|
Atualizar dados
y
Alterar dados em uma tabela
UPDATE filmes
SET ano_lancamento = 2011,
faixa_etaria = 1,
titulo = 'Rio',
observacoes = 'Filme brasileiro',
genero = 1,
id_tipo = 1
WHERE id_filme = 1;
SQL – STRUTURED QUERY LANGUAGE
|
Atualizar dados
y
Alterar dados em uma tabela retornando um campo
UPDATE filmes
SET ano_lancamento = 2011,
faixa_etaria = 1,
titulo = 'Rio',
observacoes = 'Filme brasileiro',
genero = 1,
id_tipo = 1
WHERE id_filme = 1
RETURNING id_filme;
SQL – STRUTURED QUERY LANGUAGE
|
Exclusão de registros
DELETE FROM [ ONLY ] tabela [ [ AS ] aliás ]
[ USING lista_do_using ]
[ WHERE condição ]
[ RETURNING * | expressão_de_saída [ AS
nome_de_saída ] [, ...] ]
SQL – STRUTURED QUERY LANGUAGE
|
Exclusão de registros
y
Exemplo:
DELETE FROM filmes
WHERE id_filme = 2;
Download