Escolar Documentos
Profissional Documentos
Cultura Documentos
Banco de Dados
uma estrutura lgica que atua como um conjunto de informaes integradas que representam a realidade de um negcio e tem por objetivo atender as necessidades de um grupo de usurios.
. .
Um Sistema Gerenciador de Banco de Dados (como no Brasil) ou Sistema Gestor de Base de Dados (SGBD) o conjunto de programas de computador (softwares) responsveis pelo gerenciamento de uma base de dados. O principal objetivo retirar da aplicao cliente a responsabilidade de gerenciar o acesso, manipulao e organizao dos dados. O SGBD disponibiliza uma interface para que os seus clientes possam incluir, alterar ou consultar dados. Em bancos de dados relacionais a interface constituda pelas APIs ou drivers do SGBD, que executam comandos na linguagem SQL.
. .
Modelo Relacional
o modelo que predomina na maior parte dos SGBD (Sistemas Gerenciadores de Banco de Dados) no mercado atualmente. Um banco de dados relacional composto de tabelas, relacionamentos e regras em torno destes.
. .
Tabelas
Uma tabela um conjunto no ordenado de linhas (tuplas) e colunas, onde a intercesso deste forma um campo, que onde a informao ser armazenada. Cada colona da tabela recebe um identificador que chamado de nome de coluna (nome de atributo).
. .
Tabelas
A Cardinalidade de uma tabela dada pela quantidade de linhas existente nesta. O Grau de uma tabela dado pela quantidade de colunas existente nesta.
. .
Chaves
O conceito bsico para garantir a unicidade das informaes em uma tabela e estabelecer relaes entre estas, o conceito de chave. No modelo relacional consideramos trs tipos de chaves: Chave Primria Chave Estrangeira Chave Alternativa
. .
Chave Primria
Uma chave primria uma regras, implementada em uma ou mais colunas cujos valores distingue uma linha das demais dentro de uma tabela.
. .
Chave Estrangeira
Uma chave estrangeira uma regras, implementada em uma ou mais colunas cujos valores referenciam o contedo da chave primria de uma outra tabela. Esta a chave que implementa o mecanismo de relacionamento em uma base de dados relacional.
. .
Chave Alternativa
Uma chave alternativa uma regras, implementada em uma ou mais colunas cujos valores ajudam a chave primria a diferenciar uma tupla da outra.
. .
Domnios
Quando uma tabela em uma base de dados definida, especificado, para cada coluna da tabela, um conjunto de valores (alfanumricos, numricos,...) que os campos da respectiva coluna podem assumir. Este conjunto de valores chamado de domnio da coluna.
. .
Valores Vazios
Em uma tabela podemos especificar se um campo de um coluna pode ou no estar vazio. Estar vazio, significa dizer que o campo no recebeu nenhum valor de seu domnio. As colunas nas quais NO so admitidos valores vazios, so chamadas de colunas obrigatrias. As colunas nas quais PODEM conter valores vazios so chamadas de colunas opcionais.
. .
Restries de Integridade
Um dos objetivos primordiais do SGBD a integridade dos Dados. Dizer que os dados de um base de dados esto ntegros significa dizer que eles refletem corretamente a realidade representada pela base de dados e que so consistentes entre s. Para garantir a integridade da base de dados, os SGBDs implementam o mecanismo de Restries de Integridade, que um conjunto de regras de consistncia de dados garantida pelo prprio SGBD. No caso da abordagem relacional, classifica-se as restries de integridade nas seguintes categoria:
. .
Integridade de Vazio
a regra que diz que os campos de uma colunas podem ou no conter valores vazios, ou seja, se uma coluna opcional ou obrigatria. Campos de coluna que contem a regra de chave primria no contem valores vazios.
. .
Integridade Referencial
a regra que diz que os valores contidos na chave estrangeira de uma tabela, devem obrigatoriamente estar contidas na chave primria da tabela referenciada.
. .
Integridade de Chave
a regra que define que os valores contidos em uma coluna que possui a regra de chave primria ou a regra de chave alternativa devem ser nicos.
. .
Integridade de Domnio
a regra que diz que os valores inseridos nos campos de uma coluna devem obedecer a definio de valores admitidos para a coluna (o domnio da coluna).
. .
Julho de 1970 ocorreu a publicao por E.F.Codd, no ACM Journal o seguinte artigo: A Relational Model of Data for Large Shared Data Banks. A primeira implementao comercial da linguagem SEQUEL foi realizada pela IBM (System R) e tinha por objetivo a implementao do modelo de Codd. A evoluo desta linguagem deu origem ao SQL. SQL uma linguagem no procedural para acesso a dados utilizada por um SGBD. Atualmente o padro utilizado o ANSI SQL99, que a terceira gerao desta linguagem e trs como novidade mecanismos object-oriented.
. .
. .
A Data Definition Language (DDL) a sub-linguagem usada para criar, alterar (manipular), e apagar todas as estruturas de um banco de dados relacional. E so representadas pelos seguintes comandos: CREATE ALTER DROP
. .
Criando Tabelas
Sintaxe Geral
CREATE TABLE <table_name> ( <def_atributo> [...,<def_atributo>] [,PRIMARY KEY (atributo(s))] [,FOREIGN KEY (atributo(s)) REFERENCES <nome_relao>] [,UNIQUE (atributo(s))] ) onde: <def_atributo>: <nome_coluna> <tipo_atributo> [NOT NULL] <tipo_atributo>: SMALLINT INTEGER BIGINT DECIMAL REAL CHAR VARCHAR LONG VARCHAR DATE TIME BLOB CLOB
. .
Criando Tabelas
CREATE TABLE PRODUTO ( CodProduto SMALLINT NOT NULL, Nome VARCHAR(100) NOT NULL, Preco DECIMAL(9.2) NOT NULL, Categoria VARCHAR(50) NOT NULL, CONSTRAINT PK_Produto PRIMARY KEY (CodProduto)); OU ALTER TABLE PRODUTO ADD CONSTRAINT PK_Produto PRIMARY KEY (CodProduto);
. .
Criando Tabelas
CREATE TABLE CLIENTE ( CodCliente SMALLINT NOT NULL, Nome VARCHAR(100) NOT NULL, Cidade VARCHAR(100) NOT NULL, UF CHAR(2) NOT NULL, Telefone CHAR(8), Status CHAR(10), Limite DECIMAL(9.2), CONSTRAINT PK_Cliente PRIMARY KEY (CodCliente)); OU ALTER TABLE CLIENTE ADD CONSTRAINT PK_Cliente PRIMARY KEY (CodCliente);
. .
Criando Tabelas
CREATE TABLE PEDIDO ( NroPedido SMALLINT NOT NULL, DataLancamento DATE NOT NULL, DataEntrega DATE, CodCli SMALLINT NOT NULL, CONSTRAINT PK_Pedido PRIMARY KEY (NroPedido), CONSTRAINT FK_PedCli FOREIGN KEY (CodCli) REFERENCES CLIENTE (CodCliente); OU ALTER TABLE PEDIDO ADD CONSTRAINT PK_Pedido PRIMARY KEY (NroPedido); ALTER TABLE PEDIDO ADD CONSTRAINT FK_PedCli FOREIGN KEY (CodCli) REFERENCES CLIENTE (CodCliente);
. .
Criando Tabelas
Criar a tabela MOVIMENTO:
CREATE TABLE MOVIMENTO ( Quantidade SMALLINT, ValorTotal DECIMAL(9,2), NroPedido SMALLINT NOT NULL, CodProduto SMALLINT NOT NULL, CONSTRAINT PK_Movimento PRIMARY KEY (NroPedido, CodProduto), CONSTRAINT FK_MovProd FOREIGN KEY (CodProduto) REFERENCES PRODUTO (CodProduto), CONSTRAINT FK_MovPed FOREIGN KEY (NroPedido) REFERENCES PEDIDO (NroPedido); OU ALTER TABLE MOVIMENTO ADD CONSTRAINT PK_Movimento PRIMARY KEY (NroPedido, CodProduto); ALTER TABLE MOVIMENTO ADD CONSTRAINT FK_MovProd FOREIGN KEY (CodProduto) REFERENCES PRODUTO (CodProduto); ALTER TABLE MOVIMENTO ADD CONSTRAINT FK_MovPed FOREIGN KEY (NroPedido) REFERENCES PEDIDO (NroPedido);
. .
Criando ndices
Sintaxe Geral
INDEX
<index_name>
ON
(<columns_name> [order]);
Exemplo:
. .
Alterando Objetos
Sintaxe Geral
ALTER TABLE Produto ADD COLUMN imposto Decimal(5,3); ALTER TABLE Produto DROP COLUMN imposto;
. .
Excluindo Objetos
Sintaxe Geral
Exemplo:
. .
A Data Manipulation Language (DDL) a sub-linguagem usada para insero, atualizao, excluso e seleo de informaes em uma base de dados, e representada pelos seguintes comandos: INSERT UPDATE DELETE SELECT
. .
Inserindo Informaes
Sintaxe Geral
. .
Inserindo Informaes
Exemplo 1: INSERT INTO CLIENTE (CODCLIENTE, NOME, CIDADE, UF, TELEFONE, STATUS, LIMITE) VALUES (7, Drink Market', Florianpolis', SC', NULL, bom', 652.32) Exemplo 2: INSERT INTO PRODUTO (CODPRODUTO, NOME, PRECO, CATEGORIA) VALUES (7, Qboa', 2.67, Agua Sanitria') Exemplo 3: INSERT INTO PRODUTO (NOME, CODPRODUTO, PRECO, CATEGORIA) VALUES (Lux Luxo', 8, 0.81, Sabonete')
. .
Atualizando Informaes
Sintaxe Geral
UPDATE <table_name> SET <columns_name1> = <expresso> [..., <columns_name1> = <expresso>] [WHERE <condio>]
Exemplo1:
. .
Excluindo Informaes
Sintaxe Geral
Exemplo1: Apagar todos os produtos que tenha seus cdigos entre 100 e 105: DELETE FROM produto WHERE codproduto BETWEEN 100 AND 105;
. .
Comando Select
Sintaxe Geral
SELECT [DISTINCT] <atributo1>[,...,<atributon>] FROM <table_name1> [,...,<table_namen>] [WHERE <condio>] [GROUP BY <atributo(s)> HAVING <condio>]] [ORDER BY <atributo1> [<ordem>] ,...,<atributon> [<ordem>]]]
. .
Clausula FROM Clausula WHERE Clausula GROUP BY Clausula HAVING Clausula SELECT
. .
Consulta Simples
Recuperar os dados de todos os produtos cadastrados: SELECT * FROM produto; SELECT codproduto, nome , preco, categoria FROM produto;
OU
cod_prod 1 2 3 4
. .
Consulta Qualificada
SELECT nome FROM cliente WHERE cidade = Porto Alegre and limite > 600;
. .
Clausula DISTINCT
categoria
. .
Produto Cartesiano
C = A x B, ento:
. .
Produto Cartesiano
. .
Produto Cartesiano
cod_prod 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 nome OMO Pinho Sol Minerva Confort OMO Pinho Sol Minerva Confort OMO Pinho Sol Minerva Confort OMO Pinho Sol Minerva Confort OMO Pinho Sol Minerva Confort OMO Pinho Sol Minerva Confort preo 5,65 3,34 4,98 3,54 5,65 3,34 4,98 3,54 5,65 3,34 4,98 3,54 5,65 3,34 4,98 3,54 5,65 3,34 4,98 3,54 5,65 3,34 4,98 3,54 categoria sabo desinfetante sabo sabo sabo desinfetante sabo sabo sabo desinfetante sabo sabo sabo desinfetante sabo sabo sabo desinfetante sabo sabo sabo desinfetante sabo sabo nro_ped ped1 ped1 ped1 ped1 ped1 ped1 ped1 ped1 ped1 ped1 ped1 ped1 ped2 ped2 ped2 ped2 ped2 ped2 ped2 ped2 ped3 ped3 ped3 ped3 cod_prod 1 1 1 1 3 3 3 3 4 4 4 4 3 3 3 3 4 4 4 4 1 1 1 1 qtde 20 20 20 20 15 15 15 15 10 10 10 10 10 10 10 10 12 12 12 12 15 15 15 15 total_mov 53 53 53 53 29,7 29,7 29,7 29,7 15,4 15,4 15,4 15,4 19,8 19,8 19,8 19,8 18,4 18,4 18,4 18,4 39,75 39,75 39,75 39,75
. .
Produto Cartesiano
cod_prod 1 1 3 3 4 4
cod_prod 1 1 3 3 4 4
qtde 20 15 15 10 10 12
. .
Produto Cartesiano
. .
Produto Cartesiano
Recuperar o nome e telefone de clientes que solicitaram pelo menos um produto de nome Confort:
SELECT DISTINCT cliente.nome, telefone FROM produto, movimento, pedido, cliente WHERE produto.cod_prod = movimento.cod_prod and movimento.nro_ped = pedido.nro_ped and pedido.cod_cli = cliente.cod_cli and produto.nome = 'Confort';
telefone 3308990
. .
Sintaxe Geral:
Recuperar nomes de clientes que possuem telefone: SELECT nome FROM cliente WHERE telefone is not null;
nome Super Merco Cia. Limpar Clean Ltda.
. .
Substituio de Caracteres
Sintaxe Geral:
onde,
. .
Substituio de Caracteres
SELECT DISTINCT cod_cli, nome FROM cliente WHERE nome like '%Ltda%';
cod_cli c2 c4
. .
Substituio de Caracteres
Selecionar cdigo e nome de clientes cujos nomes NO contenham Super ou contenham Dalmas:
SELECT DISTINCT cod_cli, nome FROM cliente WHERE nome LIKE 'Super%' OR nome LIKE '%Limpar';
cod_cli c1 c3
. .
Valores Calculados
Sintaxe Geral:
onde,
. .
Valores Calculados
Recuperar o nome de cada produto e o seu preo em dlares: SELECT nome, preo/3.775 as Preo, 'Dolares' FROM produto;
. .
Ordenao
Sintaxe Geral:
onde
. .
Ordenao
Recuperar o nome de cada produto e o seu preo em dlares. Ordenar a consulta em ordem decrescente de preo:
. .
Funes Agregadas
Sintaxe Geral:
onde
sum - soma de valores; avg - mdia de valores; max - valor mximo; min - valor mnimo; count - contador.
. .
Funes Agregadas
count(Cod_Cli) 4
. .
Agrupamento de Tuplas
- Funes agregadas passam a ser avaliadas por grupo e, no mais, por tupla.
. .
Agrupamento de Tuplas
Para cada pedido, selecionar o seu nmero e o seu valor total. Selecionar somente os pedidos com mais de um produto:
SELECT nro_ped, sum(total_mov) FROM movimento GROUP BY nro_ped HAVING count(*) > 1;
. .
Consultas Aninhadas
Em vrias situaes podemos utilizar o conceito de subconsultas, isto para evitar o produto cartesiano, de forma a otimizar as consultas realizadas em um SGBD. Para realizar subconsultas no SQL usaremos quatro clusulas: IN ANY ALL EXISTS
. .
Clusula IN
Compara a condio na clusula WHERE mais externa verificando se esta dentro do resultado do comando SELECT mais interno.
select nome from cliente where cod_cli in (select cod_cli from pedido);
. .
Clusula IN
Selecionar o nome de todos os clientes que compraram o produto com nome omo. select nome from cliente where codcliente in (select codcli from pedido where nropedido in (select nropedido from movimento where codproduto in (select cod_prod from produto where nome='omo')));
. .
Clusula ANY
Compara a condio na clusula WHERE mais externa verificando se qualquer tupla do resultado do comando SELECT mais interno supre esta condio.
Selecionar o nome dos produtos da categoria sabo onde seu preo seja maior que qualquer preo dos produto da categoria desinfetante. select nome from produto nome where categoria='sabo' and minerva preco > any omo (select preco from produto where categoria='desinfetante');
. .
Clusula ANY
Selecionar o nome e o status dos clientes que tenham limite de credito maior do que qualquer cliente que no possui telefone. select nome,status from cliente where limite > any (select limite from cliente where telefone is null);
status timo
. .
Clusula ALL
Compara a condio na clusula WHERE mais externa verificando se todas as tuplas do resultado do comando SELECT mais interno suprem esta condio.
Selecionar o nome de todos os clientes que nunca fizeram nenhum pedido. select nome from cliente where codcliente <> all (select codcli from pedido);
nome cia limpar