introdução à sql

58
Bancos de Dados

Upload: vinicius-bresolin

Post on 01-Dec-2015

45 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introdução à SQL

Bancos de Dados

Page 2: Introdução à SQL

Banco de Dados - Definição

● Um banco de dados é uma coleção de dados relacionados.

● Dados são definidos como fatos conhecidos que podem ser registrados e que possuem significado implícito.

● Exemplo: uma agenda com nomes e números de telefone. Pode ser armazenada em planilha ou access. Significado implícito: o nome indica o proprietário, o número, indica o telefone

Com esta definição, qualquer conjunto de dados relacionados poderia ser um banco de dados, ex. Texto de uma página.

Page 3: Introdução à SQL

SGDB - Definição

Um Sistema de Gerência de Banco de Dados (SGDB) é uma coleção de programas que possibilita que os usuários criem e mantenham um banco de dados.

Page 4: Introdução à SQL

Sistema de Banco de Dados

Page 5: Introdução à SQL

SGDB

O SGDB é portanto um sistema de software de finalidade genérica que facilita o processo de definição, construção e manipulação de banco de dados para várias aplicações:

● Definir um banco de dados envolve especificar os tipos de dados, as estruturas e as restrições para os dados que serão armazenados.

● Construir o banco de dados é o processo de armazenar os referidos dados em algum meio de armazenamento que seja controlado pelo SGDB.

● Manipular o banco de dados inclui funções de fazer consultas, atualizar e gerar relatórios.

Não é necessário um software genérico de banco de dados para implementar um.

Page 6: Introdução à SQL

Usuários de um SGDB

● Administradores de banco de dados● Projetistas de banco de dados● Usuários finais

○ Usuários finais casuais ○ Usuários finais leigos ou paramétricos○ Usuários finais sofisticados ○ Usuários finais individuais

● Analistas de sistemas e engenheiros de software

Page 7: Introdução à SQL

Vantagens de usar um SGDB

● Controlando redundâncias● Restringindo o acesso não autorizado● Fornecendo armazenamento persistente para objetos

de programas e estruturas de dados● Permitindo a inferência e ações utilizando regras● Fornecendo interfaces múltiplas do usuário● Representando relacionamentos complexos entre

dados● Impondo restrições de integridade● Fornecendo cópia e recuperação (backup e recovery)

Page 8: Introdução à SQL

Evolução dos SGDB’s

Page 9: Introdução à SQL

SQL

● Sigla de Structured Query Language● Padrão ANSI e ISO● Serve para:

○ Definição de dados○ Recuperação de dados○ Manipulação de dados○ Controle de acesso○ Integridade de dados

Page 10: Introdução à SQL

Banco de Dados Postgres

● Banco de dados de código aberto.● Acessar o PgAdmin (Senha aula)● Criar um banco de dados "testes"

Page 11: Introdução à SQL

DML - Manipulação de Dados

Antes de manipular os dados precisamos defini-los (DDL)create table produtos(

codigo serial,descricao varchar(60),unidade varchar(03),peso numeric(10,2),estoque_atual int,cor varchar(30),fabricante varchar(30),preco_venda numeric(10,2),data_ultima_compra date

)

Page 12: Introdução à SQL

SQL - CRUD

● Create - Inclusão de dados● Retrieve - Recuperar dados● Update - Atualizar dados● Delete - Excluir dados

Page 13: Introdução à SQL

DML - Insert

Cláusula Insert - Incluir linhas (Create do CRUD)

insert into <tabela> [ (<campo1, campo2,...>) ] values (<valor1, valor2,...>), (<valor1, valor2,...>0

Page 14: Introdução à SQL

SQL Insert - Exemploinsert into produtos (codigo, descricao, unidade, peso, estoque_atual,cor, fabricante, preco_venda, data_ultima_compra)values (1, 'bola futebol', 'un', 10.2, 5, 'verde', 'adidas', 49.90, 'today')

Digitar "select * from produtos" para ver o resultado.

Page 15: Introdução à SQL

SQL Insert - Exemplo

Pode-se especificar as colunas

insert into produtos (codigo, descricao)values (3, 'bola de volei')

Page 16: Introdução à SQL

SQL Insert - Exemplo

Os nomes das colunas são opcionais, mas devem estar em ordem.

insert into produtos values (2, 'bola tenis', 'un', 10.2, 5, 'branca', 'nike', 49.90, '15/03/2012')

Page 17: Introdução à SQL

SQL Insert - Exemplo

Pode-se incluir várias linhas com um insert

insert into produtos (codigo, descricao, un)values (4, 'bola de volei', 'pç'),

(5, 'bola de rugby', 'pç'), (6, 'bola de boliche', 'un')

Page 18: Introdução à SQL

DML Delete - Excluir linhas

Excluir linhas (Delete do CRUD)

Sintaxe:delete from <tabela> where <condicao>

Page 19: Introdução à SQL

SQL Delete - Exemplosdelete from produtos where codigo = 10

delete from produtos

delete from produtos where data_ultima_compra > 'today'

delete from produtos where estoque = 0 and cor = 'verde'

Page 20: Introdução à SQL

SQL Insert - Exercício

● Incluir 20 produtos diferentes no banco de dados de artigos esportivos:○ Não deve ter códigos repetidos ○ 5 fabricantes diferentes○ Descrições não devem ser repetidas

● Salvar os comandos insert utilizados.

Page 21: Introdução à SQL

SQL Update - Sintaxe

update <tabela> set <coluna1> = <valor1>, <coluna2> = <valor2>, <coluna3> = <valor3>... where <condicao>

Page 22: Introdução à SQL

SQL Update - Exemplos

Atualizar 1 produtoupdate produtos set descricao = 'Bola de gude', unidade = 'kg', fabricante = 'puma' where codigo = 1

Page 23: Introdução à SQL

SQL Update - Exemplos

Atualizar vários produtosupdate produtos set preco_venda = preco_venda * 1.1

update produtos set preco_venda = preco_venda * 0.9 where fabricante = 'adidas'

update produtos set estoque = 0 where data_ultima compra < '01/01/2011'

Page 24: Introdução à SQL

Exercícios

● Crie uma nova tabela para armazenar cursos, deve conter: código, descrição, data inicial, data final, professor, preço e número de vagas, online.○ Inserir 20 cursos diferentes.○ Excluir os cursos que já terminaram;○ Aumentar preços em 20%○ Reduzir em 5 o número de vagas para os cursos

online○ Inserir 5 novos cursos

● Entregar os comandos SQL executados.

Page 25: Introdução à SQL

SQL Select - Consultas

● Select é a instrução mais comumente usada do SQL;

Sintaxe básica:select < coluna1, coluna 2, ... | * >

from <tabela>

exemplos:select codigo, descricao from cursos;select * from cursos;

Page 26: Introdução à SQL

SQL Select where: Filtrando linhas

● A cláusula where permite selecionar um subconjunto de linhas do resultado;

select <colunas|*> from <tabela>where <condição>

Page 27: Introdução à SQL

SQL Select where - exemplos

● Selecionar um item pelo código:

select * from cursos where codigo = 1

select codigo, descricao, professorfrom cursoswhere codigo = 3

Page 28: Introdução à SQL

SQL Select where - exemplos

● Operadores de comparação: =, >, >=, <, <=, <>

select * from produtos where preco_venda > 10

select codigo from cursos where numero_de_vagas < 15

Page 29: Introdução à SQL

SQL Select where - exemplos

Operadores relacionais: OR, AND

select * from produtos where preco_venda > 10 and preco_venda < 20

select codigo, descricao from cursos where numero_de_vagas < 15 or online = TRUE

Page 30: Introdução à SQL

SQL Select where - exemplos

Filtrando padrões: like

select * from produtoswhere descricao like 'bola%'

select * from cursos where descricao like '%inf%'

select * from cursoswhere professor like 'mar_' -- mary ou mari

Page 31: Introdução à SQL

SQL Select where - exemplos

● Selecionando de uma lista: in

select * from cursos where codigo in (1,3, 4)

select * from produtos where fabricante in ('nike','adidas')

● Selecionando uma faixa: betweenselect * from produtos

where preco_venda between 10 and 30

Page 32: Introdução à SQL

SQL Select where

Valores nulos is null, is not null

select * from produtos where fabricante is null

Page 33: Introdução à SQL

SQL Select where - Limit

Limitando o número de resultados

select * from produtos where fabricante = 'nike' limit 5

Page 34: Introdução à SQL

SQL Select - Order by

Ordenando os resultados

select * from cursos order by professor;

select * from produtos order by estoque;

Page 35: Introdução à SQL

● Incluir uma nova colunaALTER TABLE cursos

ADD COLUMN ementa text;ALTER TABLE cursos

ADD COLUMN turma varchar(30);

● Excluir uma colunaALTER TABLE turma

DROP COLUMN ementa;

SQL DDL - Alter table

Page 36: Introdução à SQL

SQL DDL - Alter table

● Alterar o tipo de dado uma colunaALTER TABLE produtos

ALTER COLUMN preco_venda TYPE numeric(11,2);

● Alterar o nome de uma colunaALTER TABLE cursos

RENAME COLUMN preço TO preco;

● Alterar o nome de uma tabelaALTER TABLE produtos

RENAME TO produto;

Page 37: Introdução à SQL

SQL Select - Funções agregadas

● Para quando queremos os dados somados, contados ou médias.

● count() - contagem:select count(*)

from cursos;select count(*)

from produtos where estoque > 1;

select count(fabricante) from produtos;

Page 38: Introdução à SQL

SQL Select - Funções agregadas

Soma - sum()

select sum(vagas) from cursos;

select sum(estoque) from produtos where produto like 'bola%'

Page 39: Introdução à SQL

SQL Select - Funções agregadas

Média - avg()

select avg(preco_venda) from produtos;

Page 40: Introdução à SQL

SQL Select - Funções agregadas Group By

Calculando subtotais

select fabricante, sum(estoque) from produtos group by fabricante

select professor, count(*) from cursosgroup by professor

Page 41: Introdução à SQL

SQL Select - Funções agregadas Group By

Subtotais de várias colunas:

select fabricante, cor, sum(estoque) from produtos where preco_venda > 10group by fabricante, cor

Page 42: Introdução à SQL

SQL Select - Funções agregadas Having

● Quando queremos filtrar os resultados agrupados

ex: selecionar professores com mais de um curso

select professor, count(*) from cursos group by professorhaving count(*) > 2

Page 44: Introdução à SQL

SQL Select - Sub Selects

É possível encadear consultas dentro de consultas:

select fabricantefrom produtos where codigo in (select codigo

from produtos)

Page 45: Introdução à SQL

SQL Select - Várias Tabelas

Podemos unir várias tabelas em uma consulta

create table agencia ( codigo_agencia integer, cidade varchar(50))

create table cliente ( nome varchar(50), saldo numeric(10,2), codigo_agencia integer)

Page 46: Introdução à SQL

SQL - Várias Tabelas

insert into agencia values (1, 'centro'),(2, 'cidade alta'), (3, 'botafago')

insert into cliente values ('josé', 100, 1), ('joaquim', 200, 2), ('maria', 150, 1), ('joão', 180, 2), ('carlos', 160, 4)

Page 47: Introdução à SQL

SQL - Várias Tabelas

Produto cartesiano

select * from cliente, agencia

select * from agencia, cliente

Page 48: Introdução à SQL

SQL - Joins

Especificando a junção:

select * from agencia, cliente where cliente.codigo_agencia = agencia.codigo_agencia

Page 49: Introdução à SQL

SQL - Join

INNER JOIN

SELECT * FROM cliente AINNER JOIN agencia B

ON A.codigo_agencia = B.codigo_agencia

Page 50: Introdução à SQL

SQL - Join

LEFT JOIN

SELECT * FROM cliente ALEFT JOIN agencia B

ON A.codigo_agencia = B.codigo_agencia

Page 51: Introdução à SQL

SQL - Join

RIGHT JOIN

SELECT * FROM cliente ARIGHT JOIN agencia B

ON A.codigo_agencia = B.codigo_agencia

Page 52: Introdução à SQL

SQL - Join

OUTER JOIN

SELECT * FROM cliente AFULL OUTER JOIN agencia B

ON A.codigo_agencia = B.codigo_agencia

Page 53: Introdução à SQL

SQL - Join

LEFT EXCLUDING JOIN

SELECT * FROM cliente ALEFT JOIN agencia B

ON A.codigo_agencia = B.codigo_agenciaWHERE B.codigo_agencia IS NULL

Page 54: Introdução à SQL

SQL - Join

RIGHT EXCLUDING JOIN

SELECT * FROM cliente ARIGHT JOIN agencia B

ON A.codigo_agencia = B.codigo_agenciaWHERE A.codigo_agencia IS NULL

Page 55: Introdução à SQL

SQL - Join

OUTER EXCLUDING JOIN

SELECT * FROM cliente AFULL OUTER JOIN agencia B

ON A.codigo_agencia = B.codigo_agenciaWHERE A.codigo_agencia IS NULL or B.codigo_agencia IS NULL

Page 57: Introdução à SQL

SQL Joins - Mais tabelas

Nova tabela: movimentocreate table movimento ( cliente varchar(30), data date, valor decimal(10,2))insert into movimento values ('joão', '01/09/2012', 50), ('josé', '20/08/2012', -30)

Page 58: Introdução à SQL

SQL Joins - Mais tabelas

SELECT * FROM cliente ALEFT JOIN agencia B

ON A.codigo_agencia = B.codigo_agenciaLEFT JOIN movimento C

ON A.nome = C.cliente