--a) Criação das tabelas Candidato, Votacao e Zona_Se --cao, especificando chave primária e --chaves estrangeiras; -- Já respondido --b) Alteração da estrutura da tabela Votacao, adicio --nando um atributo data_votacao; alter table votacao add column data_votacao date; --c) Alteração da estrutura da tabela Candidato, remo --vendo a chave estrangeira com a --tabela Partido; alter table candidato drop constraint fk_candidato_partido --d) Criar um índice “não-clustered” na tabela Candid --ato, com os atributos cod_cargo e --cod_partido; create index on candidato (cod_cargo, cod_partido); /*e) Inserir um registro na tabela Votacao. (qtd_votos = 1000, num_secao = 10, num_zona = 5, num_candidato = 555);*/ insert into votacao (qtd_votos, num_secao, num_zona, num_candidato) values (1000,10,5,555); /*f) Inserir um registro na tabela Zona_Secao (qtd_el eitores = 300, nome_zona_secao = “Zona Teste”, num_zona = 7, num_secao = 99).*/ insert into zona_secao (qtd_eleitores, nome_zona_secao, num_zona, num_secao) values (300, 'zona_teste', 7,99); /*g) Alterar a quantidade de votos, multiplicando por 2, para os candidatos a governador (código do cargo = 1) e do Partido Democrático (cód igo de partido = 5);*/ select * from votacao as v, candidato as c where v.num_candidato = c.num_candidato and cod_cargo = 1 and cod_partido = 5 update votacao as v set qtd_votos = qtd_votos * 2 from candidato as c where v.num_candidato = c.num_candidato and cod_cargo = 1 and cod_partido = 5 /* h) Alterar a quantidade de eleitores, somando 100, para as zonas/seções onde ocorreu votação para candidatos ao Senado (código do cargo = 2); */ select * from zona_secao as z, votacao as v, candidato as c, cargo as g where z.num_zona = v.num_zona and z.num_secao = v.num_secao and v.num_candidato = c.num_candidato and c.cod_cargo = g.cod_cargo and g.cod_cargo = 2 update zona_secao as z set qtd_eleitores = qtd_eleitores + 100 from votacao as v, candidato as c, cargo as g where z.num_zona = v.num_zona and z.num_secao = v.num_secao and v.num_candidato = c.num_candidato and c.cod_cargo = g.cod_cargo and g.cod_cargo = 2 --i) Apagar todos os cargos que não possuem candidatos; select * from cargo as c where not exists (select * from candidato as cn where c.cod_cargo = cn.cod_cargo) begin transaction delete from cargo as c where not exists (select * from candidato as cn where c.cod_cargo = cn.cod_cargo) rollback /*j) Apagar as zonas/seções que possuam menos de 1.00 0 eleitores e que o nome comecem com a letra “A”; */ select * from zona_secao as z where z.qtd_eleitores < 1000 and nome_zona_secao like 'A%' delete from zona_secao as z where z.qtd_eleitores < 1000 and nome_zona_secao like 'A%' /*k) Selecionar nome do partido, nome do candidato e nome do cargo, em ordem alfabética do nome do partido; */ select nome_partido, nome_candidato, nome_cargo from partido as p inner join candidato as c on (p.cod_partido = c.cod_partido) inner join cargo as g on (c.cod_cargo = g.cod_cargo) order by nome_partido