Buscar

Banco de Dados

Prévia do material em texto

GATILHOS: função do banco de dados que funciona como uma função que é disparada mediante uma ação. Essa ação pode ser uma inserção, exclusão, atualização de dados da tabela, etc. EX:
CREATE TRIGGER quantidade_vendas
ON vendas
FOR INSERT
AS
BEGIN
UPDATE caixa SET saldo_dia = saldo_inicio-saldo_final
END
GO
RESTRIÇÃO DE INTEGRIDADE: exemplo de restrição de domínio
CREATE TABLE funcionário
(matrícula INTEGER not null, nome VARCHAR(30) not null, idade INTEGER, endereço VARCHAR (35)
SQL: linguagem padrão do SGBD e é dividido em subconjuntos: DDL, DML, DCL, DTL,DQL. 
DDL: linguagem de definição de dados, serve para definir a estrutura de dados e tabelas na linguagem SQL. Exemplos de comandos DDL: create/alter/drop, etc.
DML: Linguagem de Manipulação de Dados, Utilizados para o gerenciamento de dados dentro de objetos do banco. EX: INSERT,UPDATE,DELETE,LOCK TABLE 
DQL:  Linguagem de Consulta de Dados.Utilizado para consultas dos dados. EX: SELECT
UNION: combinar o resultado de um ou mais códigos com o operador SELECT; Cada tabela com o UNION deve ter o mesmo número de colunas; Devem também ter o mesmo tipo de dado.
INTERSECT: elimina primeiro as linhas duplicadas nos dois selects; Retorna qualquer valor distinto retornado pela consulta no lado esquerdo e no lado direito do operador. 
DISTINCT: retornar somente valores distintos (diferentes); Dentro de uma tabela, uma coluna algumas vezes contém vário valores duplicados e algumas vezes você só necessita listar valores diferentes.
SELECT DISTINCT nmcliente, nmlivro, datacompra FROM cliente, livro, clientecompra
WHERE livro.cdlivro=clientecompra.cdlivro AND date_part('month',cliente.dtcliente)=date_part('month', clientecompra.datacompra)
AND date_part('day',cliente.dtcliente)=date_part('day', clientecompra.datacompra)
AVG: calcular a média de  números de uma coluna; Localiza os números de uma coluna em uma tabela, resultando a média de todos esses valores e o retornando no programa; Com o DISTINCT o comando AVG realiza a função sem considerar valores duplicados, assim somente valores exclusivos serão somados.
IN: consultar valores de uma tabela, filtrando os mesmos, de acordo com os valores inseridos no operador; irá apresentar todos os dados presentes das colunas especificadas pelo programador.
SELECT cdcliente, nmcliente FROM cliente WHERE endcliente IN (SELECT endlivraria FROM livraria)
COUNT: Quando solicitado, retorna ao número de valores de uma coluna; Função de informar o número de registros que uma coluna possui.
SELECT COUNT(cdcliente) FROM cliente
+
SELECT COUNT(vltotalcompra) FROM clientecompra WHERE cdcliente=2
SUM: Realiza a somatória de todos os valores dos dados presentes na coluna informada. 
SELECT SUM(vltotalcompra) FROM clientecompra
+
SELECT cdcliente, nmcliente, cdlivro, nmlivro FROM cliente, livro WHERE cdlivro IN (SELECT cdlivro FROM clientecompra WHERE cliente.cdcliente=clientecompra.cdcliente)
INNER JOIN: comparar os dados de colunas vindas de tabelas associadas; Por meio dela, os registros de duas tabelas são utilizados para que sejam gerados os dados relacionados de ambas as tabelas. Podem-se utilizar as cláusulas WHERE e FROM para especificar esse tipo de associação. Retornarão somente as linhas que sejam comuns nas duas tabelas especificadas, de acordo com a ligação feita com o comando ON.
SELECT nmcliente, endcliente FROM cliente INNER JOIN clientecompra ON cliente.cdcliente=clientecompra.cdcliente GROUP BY cliente.cdcliente
RIGHT JOIN: Retorna os dados encontrados na tabela à direita de JOIN; Caso não existam dados associados entre as tabelas à esquerda e à direita da clausula, retornará valores nulos.
SELECT cliente.nmcliente, clientecompra.cdlivro
FROM cliente /*tabela da esquerda (LEFT)*/
RIGHT JOIN clientecompra/*tabela da direita (RIGHT)*/
ON cliente.cdcliente=clientecompra.cdcliente
LEFT JOIN: Obtém não somente os dados relacionados de duas tabelas, mas também aqueles que não relacionados encontrados na tabela à esquerda da cláusula JOIN; Se dados relacionados entre as tabelas à esquerda e a direita da clausula não forem encontrados, os valores resultados de todas as colunas da seleção da tabela à direita serão retornados nulos.
SELECT cliente.nmcliente, clientecompra.cdlivro
FROM cliente /*tabela da esquerda (LEFT)*/
LEFT JOIN clientecompra /*tabela da direita (RIGHT)*/
ON cliente.cdcliente=clientecompra.cdcliente
1) retorne o nome do material que esteja em uma ordem de compra item:
SELECT damaterial FROM material INNER JOIN  ordemcompraitem ON material.cdmaterial=ordemcompraitem.cdmaterial
2) retorne o nome do fornecedor, vltotalordem cujo fornecedor se encontre em alguma ordem de compra:
SELECT nmfornecedir, vltotaordm FROM ordem INNER JOIN fornecedor ON ordem.cdfornecedor=fornecedor.cdfornecedor
3)retorne o endereço do fornecedor e o código da ordem de compra cujo fornecedor se encontre em alguma ordem de compra:
SELECT endfornecedor, cdordemcompra FROM ordem INNER JOIN fornecedor ON ordem, cdfornecedor=fornecedor.cdfornecedor
4)retorne a quantidade comprada e nome do material cujo material se encontre em alguma ordem de compra:
SELECT qtcomprada, damaterial FROM material INNER JOIN ordemcompraitem ON material, cdmaterial=ordemcompraitem.cdmaterial
aula 26/10
create table tbl_permanente (id_perm int Primary Key, nome_perm text);
create temporary table tbl_temporaria (id_temp int Primary Key, nome_tep text);
create view vis_permanente_temporaria as select id_perm, nome_perm, nome_temp from tbl_permanente INNER JOIN tbl_temporaria on (id_perm=id_temp);
INSERT INTO tbl_permanente values (1,'nomeperm1'');
INSERT INTO tbl_permanente values (2,'nomeperm2'');
INSERT INTO tbl_permanente values (1,'nometemp1'');
INSERT INTO tbl_permanente values (2,'nometemp2'');
Select * from vis_permanente_temporaria
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Create table emp(codigo serial Primary Key, nome varchar NOT NULL, salario integer);
Create table emp_audit(usuario varchar NOT NULL, data timestamp NOT NULL, id integer NOT NULL, coluna text NOT NULL, valor_antigo text NOT NULL, valor_novo text NOT NULL);
Create or replace function processa_emp_audit () returns trigger AS $emp_audit$
BEGIN 
IF (NEW.codigo <> OLD.codigo) 
then
RAISE EXCEPTION 'não é permitido atualziar o campo código';
END IF;
END;
$emp_auditi$ language plpgsel;
Create trigger emp_audit AFTER UPDATE ON emp FOR EACH ROW EXECUTE_PROCEDURE processa_emp_audit();
Select * from emp 
insert into emp_values (2,'12/12/1990')
Update emp set codigo=5
where codigo=2  
VIEW: observação de dados de uma ou mais tabelas (entidades); Tabela virtual; Simplificam a especificação de consultas, (utilizadas para mecanismo de segurança e autorização); para evitar que outras pessoas que acessam seu banco vejam o que você não deseja que elas tenham acesso. Economia de tempo e acesso à informações com velocidade, além de maior organização e simplificação.
CREATE TABLE Livro (
cdlivro INT NOT NULL, 
vlunitario INT,
nmlivro TEXT,
cdeditora INT,
nmeditora TEXT,
endeditora TEXT
PRIMARY KEY (cdlivro)
	)	
+
CREATE VIEW ViewLivro 
AS SELECT cdlivro, nmlivro, vlunitario 
FROM livro
WHERE livro.vlunitario> (SELECT AVG(vlunitario) FROM livro)

Continue navegando