Documentos relacionados
Uma solução possível para garantir, em ambiente APEX, a consistência duma estrutura ISA, total e disjuntiva.

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

Exercício Aula Passada. SQL Linguagem de Manipulação de Dados. Exercício Aula Passada. Exercício Aula Passada. Exercício Aula Passada

Triggers(Gatilhos) Tiago Alves de Oliveira

Lista 02 Sistema de Banco de Dados CAP 241 Computação Aplicada I

Disciplina: Banco de Dados Tema: SQL Parte 2

Conceitos SQL SQL 19/03/2017 O que é dado? O que é BD? O que é uma informação? O que é SGBD? O que é SQL? O que é BD? O que é SGBD?

Linguagem SQL Restrições, Triggers e Views

Escola Secundária de Albufeira. Comandos MySQL. (Páginas Web Dinâmicas: PHP e MySQL) Carlos Nunes

Banco de Dados. Diego Silveira Costa Nascimento. 20 de março de Instituto Federal do Rio Grande do Norte

SQL (Tópicos) Structured Query Language

Definição do esquema da base de dados. o esquema da BD é composto pelas definições de todas as tabelas da BD.

Linguagem SQL. Comandos Básicos

A U L A 8 C O N S U L T A S U N I N D O D U A S O U M A I S T A B E L A S P A R T E 2

TECNOLOGIA EM SISTEMAS PARA INTERNET PROJETO DE BANCO DE DADOS

Sumário: 1) Trabalhando com Constraints: - NOT NULL - UNIQUE - PRIMARY KEY - FOREIGN KEY - DEFAULT

Marcos Alexandruk Marcos Alexandruk

05/05/2017 Stored Procedures e Functions no MySQL com PhpMyAdmin

Fundamentos de Banco de Dados Postgre com Sql

Teste Exemplo Revisão da tentativa 1

Banco de dados. Conteúdo: DDL Prof. Patrícia Lucas

Sistemas de Informação

Utilizando o Postgres - comandos SQL para a manipulação de dados

Triggers em PostgreSQL. Linguagem de Programação de Banco de Dados. Triggers em PostgreSQL. Triggers em PostgreSQL

Introdução à linguagem SQL

Uma solução possível para garantir, em ambiente APEX, a consistência duma estrutura ISA total e disjuntiva.

'%'! $!0" $ 8 ' %%! % '! $ $$% + ' %!%$/)!'4!+,"/)!)+,/)% *! +,"0''% * %$!*!$$ #!"%&%'%'%$! "94(# ' %'$%$$$%0%$%' *!% %%%'!**% > %% %%!31?

drop database escola; CREATE DATABASE escola; USE escola; CREATE TABLE curso ( numcurso int NOT NULL, nome varchar(40), totalcreditos int,


Sistema de Controle de Estoque

Banco de Dados I. Aula 16 - Prof. Bruno Moreno 04/11/2011

Introdução ao PostgreSQL

Programação em Banco de dados

A linguagem SQL

UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO

Banco de Dados. Professora: Luciana Faria

Tarefa Orientada 17 Scripts

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

Banco de Dados I Introdução SQL

Banco de Dados Avançados Banco de Dados Ativo

BANCO DE DADOS SQL. Aprendendo a manipular dados. Banco de dados utilizado: PostgreSQL.

RECUPERAÇÃO DE CONTEÚDO BANCO DE DADOS

PHP INTEGRAÇÃO COM MYSQL PARTE 1

Relatório. Projecto de Base de Dados Parte 2. Turno: quinta-feira, 11:30 Grupo 25: André Gonçalves Rui Barradas Hélton Miranda 68477

Linguagem SQL (Parte II)

MYSQL - PRIMEIROS COMANDOS CRIAÇÃCO DO BD E DAS TABELAS, INSERÇÃO E CONSULTA DE REGISTROS. create database [if not exists] <nome>

Professor: Claudio Maximiliano Zaina Aluno: Alef Vinicius Cardoso e Silva Prontuário: Aluno: Protuário: BANCO DE DADOS II

Prof. Josenildo Silva

SQL PostgreSQL. I Criação de Tabelas. Disciplina: SCC0241 Bases de Dados Professor: Eduardo Hruschka Estagiária PAE: Dayse de Almeida

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

CURSO DE SISTEMAS DE INFORMAÇÃO

TRABALHO DE BANCO DE DADOS

BANCO DE DADOS. Para a criação de um banco de dados, através de scripts SQL, deve-se usar a seguinte sintaxe: CREATE DATABASE <nome_banco_de_dados>

BANCO DE DADOS BANCO DE DADOS. Prof. Patrícia Lucas 3º Trimestre

Revisão de Bancos de Dados

BDII SQL DML II Revisão 8

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

(1,n) venda. (1,1) realizacao. cliente. (0,n) (1,1) contem. produto. Laboratório de Banco de Dados Exercicios

CIÊNCIA E TECNOLOGIA DO RIO

TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS BANCO DE DADOS I PROFA. CLEIANE GONÇALVES OLIVEIRA ATIVIDADE 15

EXEMPLOS DE COMANDOS NO SQL SERVER

ESTUDO DE CASO EM PL/SQL

Bases de Dados 2005/2006. Aula 5

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

Banco de Dados. José Antônio da Cunha CEFET RN

Restrições de Integridade Semântica

Sistemas de Informação e Bases de Dados 2012/2013. Stored Procedures e Triggers

SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'pessoas';

Oracle 10g: SQL e PL/SQL

SQL Básica DDL. Prof. Marcos A. Schreiner. 21 de outubro de Curso de Licenciatura em Computação

Introdução ao SQL. Aécio Costa

PROGRAMA. 3.SQL Básico. 3.1 Criação de tabelas 3.2 Queries simples 3.3 Subqueries 3.4 Agregação. Prof. Dr. Marcos Tsuzuki

Crie a seguinte estrutura: Banco de Dados: Carros e duas tabelas: proprietários e veículos, conforme está abaixo e cadastre os mesmos dados:

Programando em SQL. Triggers, Stored Procedures e funções. Profa. Késsia Marchi

BANCO DE DADOS II CONVENIÊNCIA

SQL (Structured Query Language)

Transcrição:

#nao fazer #Só pode fazer para testar... drop database if exists modelo4; create database modelo4; use modelo4; #Auto_relacionamento #Pessoa = Conjuge = filho #Observar para Criticar #O que achou? # Deixando Como Estávamos Observando... create table pessoa( idpessoa int primary key, nome varchar (50), datanascimento date create table dependente( iddependente int primary key, nome varchar (50), datanascimento date, id_pessoa int, foreign key(id_pessoa) references pessoa(idpessoa) #Utilizando técnicas de Auto_relacionamento # Auto_Relacionamento (Uma tabela que se relaciona com ela mesma) #Auto_relacionamento (1 p 1) Cardinalidade create table segurado( idsegurado int primary key, nome varchar (35), datanascimento date, conjuge int, foreign key(conjuge) references segurado(idsegurado) #Por que null no conjuge? #porque ela ainda não existe #Ele começa null 1

insert into segurado values (100,'jose','1990-03-10',null insert into segurado values (101,'maria','1992-12-15',100 select m.idsegurado, m.nome "marido", m.datanascimento, e.idsegurado, e.nome "esposa", e.datanascimento from segurado m, segurado e where m.idsegurado = e.conjuge; +------------+--------+----------------+------------+--------+-- idsegurado marido datanascimento idsegurado esposa datanascimento +------------+--------+----------------+------------+--------+-- 100 jose 1990-03-10 101 maria 1992-12-15 +------------+--------+----------------+------------+--------+-- #Quem é o titulo select nome,datanascimento from segurado where conjuge is null; +------+----------------+ nome datanascimento +------+----------------+ jose 1990-03-10 +------+----------------+ #Completa #Auto-Relacionamento 1 para 1, 1 para Muitos... create table segurofuncionario( idsegurado int primary key, nome varchar (35), datanascimento date, premio double, tipo enum ('titular','dependente') not null, conjuge int unique, dependentes int, foreign key(conjuge) references segurofuncionario(idsegurado), foreign key(dependentes) references segurofuncionario(idsegurado) 2

insert into segurofuncionario values(1,'manoel','1980-05-10',1000,'titular',null,null insert into segurofuncionario values(2,'sandra','1990-01-10',null,'dependente',1,null insert into segurofuncionario values(3,'rodrigo','2010--12',null,'dependente',null,1 insert into segurofuncionario values(4,'marcela','2013--20',null,'dependente',null,1 #Mostrar os titular select * from segurofuncionario where tipo='titular'; #Mostrar os dependente ------------+--------+----------------+--------+---------+------ idsegurado nome datanascimento premio tipo conjuge dependentes ------------+--------+----------------+--------+---------+------ 1 manoel 1980-05-10 1000 titular NULL NULL ------------+--------+----------------+--------+---------+------ select * from segurofuncionario where tipo='dependente'; +------------+---------+----------------+--------+------------+- idsegurado nome datanascimento premio tipo conjuge dependentes +------------+---------+----------------+--------+------------+- 2 sandra 1990-01-10 NULL dependente 1 NULL 3 rodrigo 2010--12 NULL dependente NULL 1 4 marcela 2013--20 NULL dependente NULL 1 +------------+---------+----------------+--------+------------+- ###Data #mostrar A data Formatada e a idade #truncate sem casa decimal #datadiff diferença entre data # %y (final ano (2 digitos) # %Y ano Completo... 3

select nome, date_format(datanascimento,'%d-%m-%y') as nascimento, truncate(datediff(now(),datanascimento)/365.25, 0) as idade, tipo from segurofuncionario; # truncate, 0) sem casa decimal #Confirma o calculo da data select truncate(datediff(now(),'1973-04-18')/365.25,0) as idade; +-------+ idade +-------+ 43 +-------+ ###Mostrar os dependentes, quem é o seu titular, conjuge select t.idsegurado, t.nome, t.tipo, c.idsegurado "idconjuge", c.nome "nome Conjuge", c.tipo "tipoconjuge", d.idsegurado "iddependente", d.nome "nome dependente", c.tipo "tipodependente" from segurofuncionario t right join segurofuncionario c on t.idsegurado = c.conjuge right join segurofuncionario d on t.idsegurado = d.dependentes; +------------+--------+---------+-----------+--------------+---- idsegurado nome tipo idconjuge nome Conjuge tipoconjuge iddependente nome dependente tipodependente +------------+--------+---------+-----------+--------------+---- NULL NULL NULL NULL NULL NULL 1 Manoel NULL NULL NULL NULL NULL NULL NULL 2 Sandra NULL 1 manoel titular 2 Sandra dependente 3 rodrigo dependente 1 manoel titular 2 Sandra dependente 4 marcela dependente +------------+--------+---------+-----------+--------------+---- 4

Modelar (poucos dados muitas tabelas) evitar redundancia #Apaga da Relacional para Não Relacional #Apagar do ultimo para o primeiro drop table dependente; drop table funcionario; create table funcionario( idfuncionario int primary key, nome varchar (35), datanascimento date, premio double, salario Double drop table dependente; create table dependente( iddependente int primary key, nome varchar (35), tipo enum ('conjuge','filho'), datanascimento date, idade int, premio double, id_funcionario int, foreign key(id_funcionario) references funcionario(idfuncionario) #Trigger (gatilho é um programa preso a tabela), insert, update, delete #EU ATIVO GATILHO QUANDO ELE INSERE NO FUNCIONARIO drop trigger if exists gat_funcionario; delimiter $$ create trigger gat_funcionario before insert on funcionario for each row begin 5

declare idade int default 0; set @idade :=0; set @idade := truncate(datediff(now(), new.datanascimento)/365.25,0 set new.idade := @idade; if @idade<=20 then set new.premio = 500; elseif @idade>20 and @idade<=25 then set new.premio = 600; elseif @idade>25 and @idade<=30 then set new.premio = 700; elseif @idade>30 and @idade<=35 then set new.premio = 800; elseif @idade>35 and @idade<=40 then set new.premio = 900; elseif @idade>40 and @idade<=45 then set new.premio = 1000; end if; end; $$ delimiter ; drop trigger if exists gat_dependente; delimiter $$ create trigger gat_dependente before insert on dependente for each row begin declare idade int default 0; set @idade :=0; set @idade := truncate(datediff(now(), new.datanascimento)/365.25,0 set new.idade := @idade; if (new.tipo='conjuge') then if @idade<=20 then set new.premio = 500; elseif @idade>20 and @idade<=25 then set new.premio = 600; elseif @idade>25 and @idade<=30 then set new.premio = 700; elseif @idade>30 and @idade<=35 then 6

set new.premio = 800; elseif @idade>35 and @idade<=40 then set new.premio = 900; elseif @idade>40 and @idade<=45 then set new.premio = 1000; end if; elseif (new.tipo='filho') then if @idade<=20 then set new.premio = 500; else set new.premio = 0; end if; end if; end; $$ delimiter ; insert into funcionario values (2005,'jose','1980-03-10',0, 3000 insert into dependente values (900,'sergio','filho','2000-10- 10', 0,0,2005 insert into dependente values (901,'maria','conjuge','1985-10- 10',0,0,2005 select * from dependente; +--------------+--------+---------+----------------+-------+---- iddependente nome tipo datanascimento idade premio id_funcionar io +--------------+--------+---------+----------------+-------+---- 900 sergio filho 2000-10-10 15 500 2005 901 maria conjuge 1985-10-10 30 700 2005 +--------------+--------+---------+----------------+-------+---- #left join drop table pagamento; drop table fornecedor; create table fornecedor( id int primary key, nome varchar (35) 7

create table pagamento( idpagamento int primary key, valor double, datapagto date, id_fornecedor int, foreign key(id_fornecedor) references fornecedor(id) insert into fornecedor values (100,'tulio Pecas' insert into fornecedor values (101,'marcos Indstria' insert into fornecedor values (102,'carlos auto' insert into pagamento values (1,1000,'2016-04-15',100 insert into pagamento values (2,800,'2016-03-15',100 insert into pagamento values (3,500, now(),102 insert into pagamento values (4,500, '2016-03-15',102 #furos de pagamentos (foram 2 meses) #inner join _ Exatidão # inner join select id, nome, idpagamento, valor, datapagto from fornecedor f inner join pagamento p on f.id = p.id_fornecedor; -----+-------------+-------------+-------+------------+ id nome idpagamento valor datapagto -----+-------------+-------------+-------+------------+ 100 tulio Pecas 1 1000 2016-04-15 100 tulio Pecas 2 800 2016-03-15 102 carlos auto 3 500 2016-04-18 102 carlos auto 4 500 2016-03-15 -----+-------------+-------------+-------+------------+ # left join #MOstra TODOS OS FORNECEDORES... MESMO OS QUE NÃO FORAM PAGOS select id, nome, idpagamento, valor, datapagto from fornecedor f left join pagamento p on f.id = p.id_fornecedor; #Olha parqa tabela antes do JOIN (left join) # olha para tabela fornecedor, mostra os que não receberam 8

+-----+-----------------+-------------+-------+------------+ id nome idpagamento valor datapagto +-----+-----------------+-------------+-------+------------+ 100 tulio Pecas 1 1000 2016-04-15 100 tulio Pecas 2 800 2016-03-15 101 marcos Indstria NULL NULL NULL 102 carlos auto 3 500 2016-04-18 102 carlos auto 4 500 2016-03-15 +-----+-----------------+-------------+-------+------------+ create table pai( id int primary key, nome varchar (35) create table filho( idfilho int primary key, nomefilho varchar (35), id_pai int, foreign key(id_pai) references pai(id) insert into pai values (100,'carlos' insert into pai values (115,'manoel' insert into filho values (1,'ricardo',100 insert into filho values (2,'maria',null insert into filho values (3,'carina',null insert into filho values (4,'estevan',100 -- pai Left join filho select id, nome, nomefilho from pai p left join filho f on p.id = f.id_pai; +-----+--------+-----------+ id nome nomefilho +-----+--------+-----------+ 100 carlos ricardo 100 carlos estevan 115 manoel NULL 9

+-----+--------+-----------+ -- pai right join filho select id, nome, nomefilho from pai p right join filho f on p.id = f.id_pai; +------+--------+-----------+ id nome nomefilho +------+--------+-----------+ 100 carlos ricardo NULL NULL maria NULL NULL carina 100 carlos estevan +------+--------+-----------+ 10